zoukankan      html  css  js  c++  java
  • mongodb群集

    项目目标:故障自动切换和自动修复成员节点,各个数据库之间数据完全一致。
    项目描述:副本集没有固定主节点,是整个集群选举得出的一个主节点,当其不工作时变    更其他节点。最小的副本集也应该具备一个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
             [root@mongodb1keepalived-1.2.7]# ./configure         #安装三部曲
             [root@mongodb1keepalived-1.2.7]# make
             [root@mongodb1keepalived-1.2.7]# 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。
    九、安装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为虚拟
    十五、以上配置如果执行,有报错信息,请自己百度。本人已成功配置。

  • 相关阅读:
    combobox只读代码
    winform中相对路径和绝对路径的获取
    C#中启动外部应用程序
    C#winfrom中应用程序只启动一次代码
    测试计划详细版
    如何编写有效的测试计划
    产品经理,如何面对一句话需求?
    需求评审-软件测试最有效的阶段
    分享一套好用的功能测试用例编写框架
    selenium加载配置文件
  • 原文地址:https://www.cnblogs.com/aomi/p/5367545.html
Copyright © 2011-2022 走看看