MongoDB单数据中心集群部署方案
1 网络规划
本方案要求服务器数量为奇数,可允许少于一半服务器宕机或断网。如果有多于3个节点,可按需调整分片数量和分布规则。
主机名 | IP地址 | 运行进程 | 防火墙开放端口 |
---|---|---|---|
MONGO01 | 192.168.10.36 | 分片1-primary(主),分片2-arbiter(仲裁),分片3-secondary(从),mongos,config | 20000,21000,22001~22003 |
MONGO02 | 192.168.10.37 | 分片1-secondary(从),分片2-primary(主),分片3-arbiter(仲裁),mongos,config | 20000,21000,22001~22003 |
MONGO03 | 192.168.10.38 | 分片1-arbiter(仲裁),分片2-secondary(从),分片3-primary(主),mongos,config | 20000,21000,22001~22003 |
2 部署环境
环境 | 版本 |
---|---|
操作系统 | CentOS7.4 64位系统 |
MongoDB版本 | mongodb-linux-x86_64-rhel70-4.2.2 |
同步模块版本 | mongo-shake-v2.2.1 |
内存 | 4GB+ |
CPU | 2c+ |
存储空间 | 200GB |
mongodb-linux-x86_64-rhel70-4.2.2下载地址:
https://download.csdn.net/download/Zhuge_Dan/12557607
mongo-shake-v2.2.1下载地址:
https://download.csdn.net/download/Zhuge_Dan/12557611
3 部署步骤
3.1 基础配置
3.1.1 关闭SELinux
[root@MONGO01 ~]# setenforce 0
[root@MONGO01 ~]# vi /etc/selinux/config
SELINUX=disabled #将SELINUX设置为disabled
[root@MONGO01 ~]# getenforce
Permissive
3.1.2 关闭防火墙或开放需要的业务端口
[root@MONGO01 ~]# systemctl stop firewalld #关闭防火墙
[root@MONGO01 ~]# systemctl disable firewalld #禁止防火墙开机自启
3.1.3 调整max_open_files
[root@MONGO01 ~]# echo '* soft nofile 65535' >> /etc/security/limits.conf
[root@MONGO01 ~]# echo '* hard nofile 65535' >> /etc/security/limits.conf
[root@MONGO01 ~]# cat /etc/security/limits.conf | tail -2
* soft nofile 65535
* hard nofile 65535
[root@MONGO01 ~]# echo 'ulimit -SHn 65535' >> /etc/rc.d/rc.local
[root@MONGO01 ~]# cat /etc/rc.d/rc.local | tail -1
ulimit -SHn 65535
[root@MONGO01 ~]# chmod +x /etc/rc.d/rc.local #为rc.local增加可执行权限
3.1.4 重启检查SELinux、firewalld和open files
[root@MONGO01 ~]# reboot
[root@MONGO01 ~]# getenforce #查看SELinux是否关闭成功
Disabled #关闭成功
[root@MONGO01 ~]# systemctl status firewalld #查看防火墙状态
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead) #防火墙已关闭
Docs: man:firewalld(1)
[root@MONGO01 ~]# systemctl is-enabled firewalld #查看防火墙是否开机自启
disabled #防火墙已禁止开机自启
[root@MONGO01 ~]# ulimit -a | grep open
open files (-n) 65535 #open files已调整为65535
3.1.5 配置其它设备
在其它所有服务器上操作前4步。
方法:可使用Xshell,在菜单栏“工具”中选择“发送键输入到所有会话”,同时控制多台设备。
3.2 上传软件包
上传mongodb-linux-x86_64-rhel70-4.2.2.tgz到各服务节点,然后解压缩、重命名。以上传到/usr/local/目录下为例:
[root@MONGO01 ~]# cd /usr/local/
[root@MONGO01 local]# tar -zxvf mongodb-linux-x86_64-rhel70-4.2.2.tgz
[root@MONGO01 local]# mv mongodb-linux-x86_64-rhel70-4.2.2 mongo
[root@MONGO01 local]# rm -f mongodb-linux-x86_64-rhel70-4.2.2.tgz
3.3 创建数据与日志目录
根据节点上的运行进程,依次创建数据目录。假设数据盘挂载目录是/data/。
[root@MONGO01 local]# mkdir -p /data/mongo/config/
[root@MONGO01 local]# mkdir -p /data/mongo/shard1/
[root@MONGO01 local]# mkdir -p /data/mongo/shard2/
[root@MONGO01 local]# mkdir -p /data/mongo/shard3/
[root@MONGO01 local]# mkdir -p /var/log/mongo/config/
[root@MONGO01 local]# mkdir -p /var/log/mongo/mongos/
[root@MONGO01 local]# mkdir -p /var/log/mongo/shard1/
[root@MONGO01 local]# mkdir -p /var/log/mongo/shard2/
[ro