导言
- 我使用了3台服务器来部署Replica Sets,分别为主节点ma、从节点mb、仲裁节点mc(这里的ma、mb、mc已经被我配置进了hosts,可以直接被解析为ip)。
- 其中主节点负责写与实时读,从节点负责非实时读(主从数据同步存在延迟)。
- 仲裁节点不提供数据读写支持,但会在主节点停止工作后将从节点升级为主节点。
一. 安装
新建文件**/etc/yum.repos.d/mongodb-enterprise.repo**,内容如下:
1 | [mongodb-enterprise] |
然后直接通过yum安装:
1 | yum install mongodb-enterprise |
二. 编辑配置文件
执行vi /etc/mongod.conf
,配置内容如下:
1 | #monogodb |
三. 在全部节点上都需要进行步骤一和步骤二,全部完成后再进行以下操作
四. 配置集群间认证文件mongodb-keyfile
1 . 在主节点ma上执行openssl rand -base64 745 > /etc/mongodb-keyfile
。
2 . 将生成的**/etc/mongodb-keyfile**文件复制到其他节点的相同路径。
3 . 所有的节点上修改该文件的拥有者与权限:
1 | chmod 600 /etc/mongodb-keyfile |
五. 在主节点进行集群初始化和管理员账号设置
1 . 编辑主节点的配置文件**/etc/mongod.conf**,将security
下的authorization
编辑为disabled
。
authorization为enable时无法创建管理员账号。
2 . 主节点执行以下指令:
1 | systemctl start mongod.service |
3 . 执行mongo
进入mongo shell,然后执行以下指令:
1 | rs.initiate() |
4 . 退出mongo shell,编辑**/etc/mongod.conf**,将security
下的authorization
改回为enabled
。
5 . 执行 systemctl restart mongod.service
来重启mongodb服务。
六. 启动其他节点的mongodb服务
在其他节点上启动mongodb服务:
1 | systemctl start mongod.service |
七. 把其他节点添加到集群
第五步中已经在主节点里对集群进行了初始化,然后第六步中启动了从节点和仲裁节点的mongodb服务,现在就差将它们加入集群了。
1 . 在主节点执行mongo
进入mongo shell,执行以下指令完成用户认证:
1 | use admin |
2 . 添加从节点
1 | rs.add('mb:27017') |
3 . 添加仲裁节点
1 | rs.addArb('mc:27017') |
八. 创建业务用的数据库与账号
1 | use test_db |
现在,业务里可以通过连接字符串mongodb://test_user:复杂的test_user的密码@ma:27017,mb:27017/test_db
来对该集群进行读写了。