由于公司业务需要,我们打算自己搭建 MongoDB 的服务,因为 MongoDB 的云数据库好贵,我们这次采用副本集的方式来搭建集群,三台服务器,一主、一副、一仲裁
基本概念
Replica Set 副本集:一个副本集就是一组 MongoDB 实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成
主节点(master):主节点接收所有写入操作。主节点将对其数据集所做的所有更改记录到其 oplog。
副节点(secondary):复制主节点的 oplog 并将操作应用到其数据集,如果主节点不可用,一个合格的副节点将被选为新的主节点。
仲裁节点(arbiter):负载选举,当主节点不可用,它将从副节点中选一个作为主节点。
Sharding 分片:
Master-slave 主备
MongoDB 4.0 以上版本运行时提示:[main] Master/slave replication is no longer supported,也就是 MongoDB 4.0 后不在支持主从复制
一、环境准备
使用 CentOS 7.6 64bit 系统,安装 Docker、Docker-compose、Docker-Swarm
二、生成 KeyFile
MongoDB 使用 KeyFile 认证,副本集中的每个 MongoDB 实例使用 KeyFile 内容作为认证其他成员的共享密码。MongoDB 实例只有拥有正确的 KeyFile 才可以加入副本集。
keyFile 的内容必须是 6 到 1024 个字符的长度,且副本集所有成员的 KeyFile 内容必须相同。
有一点要注意是的:在 UNIX 系统中,KeyFile 必须没有组权限或完全权限(也就是权限要设置成 X00 的形式)。Windows 系统中,keyFile 权限没有被检查。
可以使用任意 *** 生成 keyFile。例如,如下操作使用 openssl 生成复杂的随机的 1024 个字符串。然后使用 chmod 修改文件权限,只给文件拥有者提供读权限。
这是 MongoDB 官方推荐 keyFile 的生成方式:
二、创建跨主机 ***
搭建集群我们肯定是跨主机通讯,要搭建 Overlay Network *** ,我们就要用到 Docker Swarm 这个工具了。Docker Swarm 是 Docker 内置的集群工具,它能够帮助我们更轻松地将服务部署到 Docker daemon 的集群之中。
既然要将 Docker 加入到集群,我们就必须先有一个集群,我们在任意一个 Docker 实例上都可以通过 docker swarm init 来初始化集群。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。