1、首先安装在三个节点安装mongodb,安装方法详见
2、集群节点信息:
1 | 主:10.0.7.53 |
3、启动主节点,进入主节点控制台,
3.1、创建管理员用户名、密码:
1 | shell > /data/mongodb/bin/mongo --port 30000 |
使用userAdminAnyDatabase的role权限去查看rs.status();会提示
“not authorized on admin to execute command”,建议授予root权限:
1 | db.createUser( |
3.2、查看创建的管理员信息:
1 | MongoDB Enterprise testrepl:PRIMARY> db.system.users.find() |
3.3、退出控制台,修改配置文件mongodb.conf(每个节点都要配置):
1 | security: |
4、在主节点上,生成秘钥文件
4.1、生成密钥文件,用于集群之间互相通信:
1 | openssl rand -base64 756 > /data/mongodb/mongodb.keyfile |
4.2、更改文件权限以仅为文件所有者提供读取权限
1 | chmod 400 /data/mongodb/mongodb.keyfile |
4.3、将密钥文件复制到每个副本集成员
1 | scp /data/mongodb/mongodb.keyfile root@10.0.7.51:/data/mongodb/ |
4.4、修改配置文件mongodb.conf,添加keyfile参数(每个节点都要配置):
1 | security: |
5、配置集群
5.1、修改配置文件mongodb.conf,添加集群配置参数(每个节点都要配置):
1 | replication: |
replSetName:设置集群名称,根据自己需求自定义(三个节点要保持一直)
5.2、重新启动mongodb
1 | /data/mongodb/bin/mongod -f /data/mongodb/mongodb.conf |
5.3、进入主节点控制台
1 | /data/mongodb/bin/mongo --port 30000 |
5.4、添加集群节点:
1 | use admin; |
执行结果如下:
1 | { |
5.5、查看集群状态
1 | MongoDB Enterprise testrepl:PRIMARY> rs.status(); |
5.6、从库默认为不能读写模式,如果要启动从库的读模式,进入从库执行以下命令:
1 | rs.slaveOk(); |
5.7、增加一个仲裁节点,新增节点,配置文件中密钥文件、repl参数一定要保持一致:
1 | rs.addArb("m1.example.net:27017") |
5.8、添加一个新的从节点,添加之前设置该节点优先级为0,表决为0,以防止该节点数据未同步完成之前参与选举,待该节点数据同步完成之后,使用rs.reconfig()参数再修改其优先级和表决:
1 | rs.add( { host: "mongodb3.example.net:27017", priority: 0, votes: 0 } ) |
rs.reconfig()命令执行如下:
1 | var cfg = rs.conf(); |