项目目标:故障自动切换和自动修复成员节点,各个数据库之间数据完全一致。
项目描述:副本集没有固定主节点,是整个集群选举得出的一个主节点,当其不工作时变更其他节点。最小的副本集也应该具备一个primary节点和两secondary节点。两个节点的副本集不具备真正的故障转移能力。所有Secondary都宕机、或则副本集中只 剩下一个节点,则该节点只能为Secondary节点,也就意味着整个集群智能进行读操作而不能进行写操作,当其他的恢复时,之前的primary节点仍然是primary节点
项目环境:三台服务器RHEL6.5
keepalived-1.2.7.tar.gz
mongodb-linux-x86_64-2.4.9.tgz
自述:网上关于mongodb副本集的文档或帖子不是很多,而且有一部分是重复的,所以我把自己的安装过程分享一下,而且这篇文章是我认证博客的论坛帖子。
项目过程:(三台安装过程基本相同)
(1)安装安装所需依赖
[root@mongodb1 ~]yum -y install gcc openssl-devel popt popt-devel libnl libnl-devel kernel-devel
(2)安装keepalived(源码安装三部曲),并将keepalived设置为开机启动
[root@mongodb1 ~]# tar -zxvf keepalived-1.2.7.tar.gz
[root@mongodb1 ~]# cd keepalived-1.2.7.tar.gz
[root@mongodb1 keepalived-1.2.7]# ./configure
[root@mongodb1 keepalived-1.2.7]# make
[root@mongodb1 keepalived-1.2.7]# make install
(3)拷贝keepalive配置文件与启动脚本,并将keepalived设置为开机启动
[root@mongodb1 ~]# cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
[root@mongodb1 ~]# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig
[root@mongodb1 ~]# mkdir /etc/keepalived
[root@mongodb1 ~]# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
[root@mongodb1 ~]# cp /usr/local/sbin/keepalived /usr/sbin/
[root@mongodb1 ~]#chkconfig --add keepalived
[root@mongodb1 ~]#chkconfig keepalived on
(4)keeplive配置文件
[root@mongodb1 ~]#cat /etc/keepalived/keepalived.conf
!Configuration File for keepalived
vrrp_instanceMG_1 {
state BACKUP #三台全为BACKUP
interfaceeth 0
virtual_router_id 55
priority 100 #其中两台优先级为100,最后一台为90
advert_int 1
#nopreempt #不抢占资源
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.10 #虚拟IP
}
}
#优先级为90的服务器以下可以不设置(还需要进一步完善)
virtual_server 192.168.0.10 27017 {
delay_loop 6
lb_algo rr
persistence_timeout 5
protocol TCP
real_server 192.168.0.100 27017 {
notify_down /root/mongodb.sh
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 27017
}
}
}
(5)[root@mongodb1 ~]# cat mongodb.sh
#!/bin/bash
service keepalived stop
(6)启动keepalived
[root@mongodb1 ~]# service keepalived start
![](https://i-blog.csdnimg.cn/blog_migrate/ff687747d619ff82f5d338cf3077dfab.png)
注:以上配置,其中两台完全相同,最后一台优先级设定为90,并设置为不抢占资源。
(7)安装mongodb
[root@mongodb1 ~]#cd /usr/local
[root@mongodb1 local]# tar -zxvf mongodb-linux-x86_64-2.4.9.tgz
[root@mongodb1 local]# mv mongodb-linux-x86_64-2.4.9 mongodb
[root@mongodb1 local]# cd mongodb/
[root@mongodb1 mongodb]# mkdir db
[root@mongodb1 mongodb]# mkdir logs
[root@mongodb1 mongodb]# cd bin
[root@mongodb1 bin]# cat mongodb.conf
dbpath=/usr/local/mongodb/db #数据存放路径
logpath=/usr/local/mongodb/logs/mongodb.log
port=27017
fork=true #以守护进程的方式运行MongoDB
nohttpinterface=true #禁止HTTP状态接口默认情况下Mongodb 在端口28017上运行http接口
maxConns=5000 #最大同时连接数
replSet=mongodb #同一副本集
#shardsvr=true #启动分片
(8)启动mongodb
[root@mongodb1 bin]# numactl --interleave=all /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/bin/mongodb.conf
![](https://i-blog.csdnimg.cn/blog_migrate/c58d0ca420bff71a137e7c523f0b40f8.png)
(9)添加命令路径
[root@mongodb1 bin]# vim /etc/bashrc
PATH=/usr/local/mongodb/bin:$PATH
[root@mongodb1 bin]# source /etc/bashrc
[root@mongodb1 ~]# vim /etc/rc.local
numactl --interleave=all /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/bin/mongodb.conf
# 追加命令,开机启动
(10)进入mongodb
[root@mongodb1 ~]#mongo
MongoDB shell version: 2.4.9
connecting to: test
> config = { _id:"mongodb",members:[
... {_id:0,host:"192.168.0.100:27017",priority:10},
... {_id:1,host:"192.168.0.200:27017",priority:10},
... {_id:2,host:"192.168.0.5:27017",priority:5}]
... }
>rs.initiate(config); #初始化副本集配置
>rs.reconfig(cfg); #重新加载配置文件
注:rs.add({"_id":2,"host":"192.168.0.300:27017"}) #追加服务器
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30331499/viewspace-2073886/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30331499/viewspace-2073886/