目录
(1)副本集群思路图:
副本集群思路图如下:
(2)副本集群节点角色:
副本集最小构成是:primary(主节点),secondary(副本节点),arbiter(仲裁节点),一般部署是:primary(主节点),2 secondary(副本节点)。建议采用主节点(1)+副本节点(2)配置。
(3)副本集群搭建实例:
A、副本集群节点配置:
全部配置参数文档:
http://docs.mongodb.org/manual/reference/configuration-options/
1主节点+2备节点的副本集群配置参数样例:
参数类型 | 参数意义 | 参数名称 | 副本集群节点 | ||
192.168.99.10 | 192.168.99.11 | 192.168.99.12 | |||
节点角色 | 节点角色 | 无 | 主节点 | 备节点 | 备节点 |
单机参数 | 数据存储路径 | storage.dbPath | /wocloud/mongodb/data | /wocloud/mongodb/data | /wocloud/mongodb/data |
日志存储路径 | systemLog.path | /wocloud/mongodb/logs/mongodb.log | /wocloud/mongodb/logs/mongodb.log | /wocloud/mongodb/logs/mongodb.log | |
日志追加存储 | systemLog.logAppend | true | true | true | |
数据日志存储大小(MB) | replication.oplogSizeMB | 10240 | 10240 | 10240 | |
进程存储路径 | processManagement.pidFilePath | /wocloud/mongodb/logs/mongodb27010.pid | /wocloud/mongodb/logs/mongodb27011.pid | /wocloud/mongodb/logs/mongodb27012.pid | |
安全认证开启 | security.authorization | enabled | enabled | enabled | |
秘钥keyfile | security.keyFile | /wodloud/securityFile/keyfile | /wodloud/securityFile/keyfile | /wodloud/securityFile/keyfile | |
服务端口号 | net.port | 27010 | 27011 | 27012 | |
服务IP地址 | net.bindIp | 192.168.99.10 | 192.168.99.11 | 192.168.99.12 | |
后台运行进程 | processManagement.fork | true | true | true | |
预分配方式开启 | storage.mmapv1.preallocDataFiles | true | true | true | |
副本集参数 | 副本集名称 | replication.replSetName | my_test | my_test | my_test |
B、各个节点配置mongodb数据库:
各节点安装配置好mongodb,配置参数就按照副本集群节点配置的表格进行对应的配置即可。
C、启动各个节点mongodb服务:
将副本集中的各个节点的mongodb以后台运行进行启动。
D、连接任意节点配置副本集信息:
通过mongodb shell连接到任意一个mongodb数据库中,切换到admin数据库,配合副本集信息:
my_test_conf = {
_id: "my_test",
members: [
{
_id: 0,
host: '192.168.99.10:27010',
priority: 3
},
{
_id: 1,
host: '192.168.99.11:27011',
priority: 2
},
{
_id: 2,
host: '192.168.99.12:27012',
priority: 1
}
]
};
参数说明:
my_test_conf:可以任意的名字,当然最好不要是mongodb的关键字,conf,config都可以。建议使用副本集名称_conf。例如:test_replicaset_conf
_id(外部):建议使用副本集的名称。
members._id:副本集成员主键,唯一即可,建议从0开始递增。
members.host:副本集节点的IP和端口号。
members.priority:副本集节点成为主节点的优先级,优先级最高的即成为主节点,特别注意对于仲裁节点需配置为:arbiterOnly:true
E、副本集配置信息初始化生效:
通过mongodb shell连接到任意一个mongodb数据库中,切换到admin数据库,执行初始化副本集配置信息命令:
rs.initiate(cfg);
括号内名称为副本集配置信息存储的名称。
F、查看副本集群状态信息:
通过mongodb shell连接到任意一个mongodb数据库中,切换到admin数据库,执行查看副本集集群状态信息命令:
rs.status();
配置的生效时间根据不同的机器配置会有长有短,配置不错的话基本上十几秒内就能生效,有的配置需要一两分钟。
G、操作工具连接副本集群:
通过mongodb compass、robo 3t等操作工具,连接到任意一个mongdob副本集群节点即可查看数据,如果要编辑数据,需要连接到主节点,因此建议连接到mongodb副本集群的主节点。
H、客户端连接副本集群:
客户端一般是代码中创建副本集客户端,创建客户端的时候一般是将副本集中的主、备节点地址全部写到url中并且填写副本集名称,客户端创建具体代码见本文档java集成mongodb副本集中创建客户端代码。
(4)副本集群登录认证:
副本集群搭建成功了,没有创建用户,如果创建用户了,需要重新执行创建用户和授权的操作:
A、所有节点配置keyfile路径:
在副本集群所有节点中配置keyfile用来内部认证:
security.keyFile=/wodloud/securityFile/keyfile
B、数据节点配置认证开启:
在副本集群中所有存储数据的节点配置auth用来登陆认证:
security.authorization=enabled
C、Openssl生成keyfile文件:
使用openssl命令创建一个64位的keyfile文件:
openssl rand -base64 64 > keyfile
然后将生成的keyfile文件移动到配置文件中指定的keyfile存储路径。
D、重新启动副本集群:
将副本集群重新启动,先启动主节点,再启动备节点。
E、登陆admin创建用户授权:
使用mongodb shell登陆主节点,然后use admin库,创建用户和授权。
F、用户登陆主节点查询:
使用mongodb shell登陆到主节点,然后use database切换库,再通过db.auth(“username”,”password”);进行用户认证即可查询。
G、用户登陆从节点查询:
使用mongodb shell登陆到主节点,然后use database切换库,再通过db.auth(“username”,”password”)进行用户认证,最后执行命令允许在从库上进行查询:rs.slaveOk(),即可在从库上进行查询。
(5)节点宕机处理:
如果副本集群中某个节点宕机,这个节点如果是主节点,那么会从备节点中选出一个节点为主节点,整个集群可以正常工作,管理员发现集群有节点宕机,会尽快查看并处理该节点,尽快让该节点重新启动,该节点正常启动后会自动添加到该集群中去,如果该节点是主节点,那么它会继续充当主节点的角色。
(6)副本集群节点动态管理:
A、查看集群节点:
通过mongo shell连接到主节点,然后use admin切换数据库,然后进行用户验证,最后执行查看集群信息命令:rs.status();
B、增加集群节点:
首先,按照参数配置好一个新的mongodb节点,然后将该节点进行启动。
然后,通过mongo shell连接到主节点,使用use admin切换数据库,并进行用户验证,最后执行添加集群节点命令:
rs.add("_id":1,"host":"192.168.137.10:27011", "priority" : 0)
C、减少集群节点:
通过mongo shell连接到主节点,使用use admin切换数据库,并进行用户验证,最后执行删除集群节点命令:
rs.remove("192.168.137.10:27012");