高可用mongodb副本集

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

项目描述:副本集没有固定主节点,是整个集群选举得出的一个主节点,当其不工作时变更其他节点。最小的副本集也应该具备一个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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值