总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:《Linux运维篇:Linux系统运维指南》
一、简介
要实现副本集的优势,副本集至少需要三个节点。三节点副本集可以具有三个数据承载节点(主节点-从节点-从节点)(推荐),如果情况(例如成本)禁止添加第三个数据承载节点,则可以是两个数据承载节点加一个仲裁节点(主节点-从节点-仲裁节点)。
二、部署说明
主机IP | 主机名 | 操作系统 | 内核版本 | Mongodb版本 | 服务启动用户 |
---|---|---|---|---|---|
192.168.1.111 | mongodb-primary | Ubuntu 16.04.7 LTS | 4.4.0-210-generic | 4.0.11 | mongodb |
192.168.1.112 | mongodb-secondary | Ubuntu 16.04.7 LTS | 4.4.0-210-generic | 4.0.11 | mongodb |
192.168.1.113 | mongodb-arbiter | Ubuntu 16.04.7 LTS | 4.4.0-210-generic | 4.0.11 | mongodb |
三、安装前准备
3.1、配置主机名
1、primary节点
# primary节点上执行
root@ecs-c215-0001:~# hostnamectl set-hostname mongodb-primary && bash
2、secondary节点
root@ecs-c215-0002:~# hostnamectl set-hostname mongodb-secondary && bash
3、arbiter节点
root@ecs-c215-0003:~# hostnamectl set-hostname mongodb-arbiter && bash
3.2、配置hosts解析
说明:以下操作需要在mongodb副本集群各个节点上执行。
vim /etc/hosts
192.168.1.111 mongodb-primary
192.168.1.112 mongodb-secondary
192.168.1.113 mongodb-arbiter
3.3、系统参数配置
说明:以下操作需要在mongodb副本集群各个节点上执行。
1、很多操作系统默认将该值设置为7200 秒(两小时)。对于MongoDB,使用较短的keepalive值(大约为120 秒(两分钟))通常会获得更好的结果。
vim /etc/sysctl.conf
net.ipv4.tcp_keepalive_time = 120
2、如果客户端与服务器之间或分片集群或副本集成员之间出现长时间暂停(暂停时间超过两分钟),随后出现网络超时或套接字错误,请检查受影响系统的tcp_retries2值。默认情况下,大多数 Linux 操作系统将此值设置为15,而 Windows将其设置为5。对于MongoDB,可以使用较低的tcp_retries2 值(大约为 5(12 秒)或更低)体验更好的结果。
vim /etc/sysctl.conf
net.ipv4.tcp_retries2 = 8
3、为您的部署配置充足的文件句柄数 (fs.file-max)、内核进程 ID (PID) 限制 (kernel.pid_max)、每个进程的最大线程数 (kernel.threads-max) 以及每个进程的最大内存映射区域数 (vm.max_map_count)。对于大型系统,建议首先采用以下值:
vim /etc/sysctl.conf
fs.file-max = 98000
kernel.pid_max = 64000
kernel.threads-max = 64000
vm.max_map_count=131060
4、mongos或mongod接受的最大并行连接数(maxIncomingConnections),windows默认为100000,Linux默认为RLIMIT_NOFILE * 0.8,所以需要设置合理的文件描述符大小限制。
vim /etc/security/limits.conf
root soft nofile 65535
root hard nofile 65535
mongodb soft nofile 65535
mongodb hard nofile 65535
3.4、创建启动用户
说明:以下操作需要在mongodb副本集群各个节点上执行。