Mongodb replica set安装加认证,这里使用的是keyFile进行认证,之前看过很多文章,坑一大堆,这里是看了两天的官方文档进行的安装,并用户生产,配置文件参数贴一部分,三个带有数据集的节点组成的复制集拥有,架构图如下,参考官方
一个主节点,两个从节点,这两个从节点都可以在选举中升级为主节点
环境
三台服务器
1 | primary: 192.168.32.7 |
1、安装mongodb
1.1、每个节点都需要操作
1 | # sudo vim /etc/yum.repos.d/mongodb-enterprise.repo |
注意:如果采用源码包方式安装需要安装一下插件
1 | # sudo yum install cyrus-sasl cyrus-sasl-plain cyrus-sasl-gssapi krb5-libs lm_sensors-libs net-snmp-agent-libs net-snmp openssl rpm-libs tcp_wrappers-libs libcurl |
2、修改mongodb的配置文件(每个节点均操作)
自定义mongodb的目录
1 | # mkdir /opt/mongodb/{data,conf,logs} -p |
3、生成密钥文件(在mong01上操作)
1 | # openssl rand -base64 756 > /opt/mongodb/conf/mongo-keyfile |
4、修改mongodb的配置
1 | security: |
分别在三台服务器上启动mongodb
1 | # mongod --config /etc/mongod.conf |
5、建立集群
在你需要认为是主节点的服务器进行mongodb的登陆,和账户权限的建立,这里我选择的192.168.32.7
1 | mongo --shell --host 127.0.0.1 |
登陆进去以后可以进行一个简单的命令进行查看
6、把服务器加入副本集
1 | MongoDB Enterprise > config = { _id:"xxlaila01",members:[ {_id:0,host:"192.168.32.7:27017"}, |
config = { _id:”xxlaila01”,members:[ {_id:0,host:”192.168.32.7:27017”},{_id:1,host:”192.168.32.11:27017”} ,{_id:2,host:”192.168.32.14:27017”}] },增加内容
6.1 看当前副本集的状态
利用rs.status()命令可以查看当前副本集的状态
1 | > rs.status() |
这里提示配置还没有加载到mongodb副本里面
6.2、加载配置到副本集
1 | > rs.initiate(config) |
再次查看副本的状态就可以看到mongodb的副本集已建立,如果此时主节点未被选举出来,稍微等一会就成功
7、创建mongodb副本集认证
下面两行我们可以看到第一次主节点没有选举成功,随即我们在回车PRIMARY节点选举成功了,下面我们创建一个管理员账户
1 | MongoDB Enterprise xxlaila01:SECONDARY> admin = db.getSiblingDB("admin") |
7.1、创建集群账户
创建一个集群管理账户,集群账户具有管理整个副本集的
1 | $ mongo -u "root" -p "123456" --authenticationDatabase "admin" |
7.2 创建一个程序连接的账户
1 | db.getSiblingDB("admin").createUser( |
至此mongodb的副本集创建完成。测试没有问题,登陆其中一台SECONDARY服务器进行测试,这里测试192.168.32.11服务器
1 | $ mongo |
完成后我们在执行rs.status()就可以看到副本集的信息
7.3 测试程序连接账户
1 | MongoDB Enterprise xxlaila01:SECONDARY> db.getSiblingDB("admin").auth("systemprod", "123456" ) |
副本集没有读的权限,需要执行db.getMongo().setSlaveOk()