以三节点为例,详细介绍mongodb高可用架构部署
1、机器列表(ip是虚构的,可根据实际情况修改)
172.16.10.1
172.16.10.2
172.16.10.3
操作系统为centos6.5
ip | 172.16.10.1 | 172.16.10.2 | 172.16.10.3 | 端口 |
组件 | mongos | mongos | mongos | 20000 |
config server | config server | config server | 21000 | |
shard1 | shard1 | shard1 | 27001 | |
shard2 | shard2 | shard2 | 27002 | |
shard3 | shard3 | shard3 | 27003 |
从上面的表格可以看出来,在机器规划时主要考虑一下几个方面
1、每个分片的三个副本分别位于三个节点服务器上,这样可以保证任意一台机器出现故障集群仍然可用
2、标绿色的为每个分片的primary节点,将是哪个分片的主节点分散到三个不同服务器,可以将数据写的压力均分
3、本教程将mongos和mongod部署在一起,实际应用时,mongos可以单独部署
2、服务器准备
1、关闭iptables
service iptables stop;
chkconfig iptables off;
2、禁止Transparent Huge Pages
mongodb官网明确指出,THP对于mongodb的性能有很大影响,具体可参考https://docs.mongodb.com/manual/tutorial/transparent-huge-pages/的说明
(1)查看THP状态
cat /sys/kernel/mm/transparent_hugepage/defrag;
[always] madvise never
cat /sys/kernel/mm/transparent_hugepage/enabled;
[always] madvise never
上述状态说明THP是开启的
(2)禁用THP
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
(3)开启自动禁用
编辑/etc/rc.d/rc.local ,在最后追加如下内容
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
3、修改zone_recla