高可用mongodb副本集

  • Post author:
  • Post category:其他




项目目标:



故障自动切换和自动修复成员节点,各个数据库之间数据完全一致。




项目描述:



副本集没有固定主节点,是整个集群选举得出的一个主节点,当其不工作时变






更其他节点。最小的副本集也应该具备一个


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









注:以上配置,其中两台完全相同,最后一台优先级设定为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






(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/