mongodb副本集(包含keepalived源码安装)

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

项目描述:副本集没有固定主节点,是整个集群选举得出的一个主节点,当其不工作时变    更其他节点。最小的副本集也应该具备一个primary节点和两secondary节点。两个节点的副本集不具备真正的故障转移能力。所有Secondary都宕机、或则副本集中只剩下一个节点,则该节点只能为Secondary节点,也就意味着整个集群智能进行读操作而不能进行写操作,当其他的恢复时,之前的primary节点仍然是primary节点

项目环境:三台服务器RHEL6.5

          keepalived-1.2.7.tar.gz       

          mongodb-linux-x86_64-2.4.9.tgz

注意:副本集与主从有很大差别,但安装过程一样。

一、下载keepalived和mongodb源码包

          http://yunpan.cn/cLnMGSt7v2X4s  访问密码 956a

二、安装keepalived

         [root@mongodb1 ~]yum -y install gccopenssl-devel popt popt-devel libnl libnl-devel                          kernel-devel                        #所需依赖包                       

         [root@mongodb1~]# tar -zxvf keepalived-1.2.7.tar.gz

         [root@mongodb1~]# cd keepalived-1.2.7.tar.gz

         [[email protected]]# ./configure         #安装三部曲

         [[email protected]]# make

         [[email protected]]# make install

三、拷贝配置文件和启动脚本    

         [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                 #开机启动

五、配置文件

         [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

            }

            }

            }

五(一)、cat mongodb.sh

            #!/bin/bash

            service keepalived stop


六、[root@mongodb1 ~]# service keepalived start

         正在启动 keepalived:                                      [确定]

七、以上配置,其中两台完全相同,最后一台优先级设定为90,并设置为不抢占资源。

八、命令ip a可查看虚拟IP,成功则显示虚拟IP。

wKiom1ZO8xTDFHGXAAB2ZwU816M294.png

九、安装mongodb

         [root@mongodb1 ~]# tar -zxvfmongodb-linux-x86_64-2.4.9.tgz  -C  /usr/local/

         [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                                #启动分片

十、启动mongodb

    [root@mongodb1bin]# numactl --interleave=all /usr/local/mongodb/bin/mongod                                    --config/usr/local/mongodb/bin/mongodb.conf

十一、[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                    #追加命令,开机启动

十二、进入数据库,配置副本集服务器

     [root@mongodb1 ~]#mongo                          #进入mongodb

      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":3,"host":"192.168.0.300:27017"}) 

十四、有虚拟IP,可执行命令

     [root@mongodb1 ~]#mongo 192.168.0.10      #进入数据库,IP为虚拟

十五、以上配置如果执行,有报错信息,请自己百度。本人已成功配置。




本文出自 “运维之道” 博客,谢绝转载!

你可能感兴趣的:(mongodb,keepalived,副本集,mongodb副本集,mongodb主从)