数据库高可用性MongoDB篇

Kirima ·
更新时间:2024-09-20
· 970 次阅读

  个人补充:配置Mongodb的replica set时,设置三个节点,一个主节点,一个从节点(用于备份数据),还有一个节点(仅用于投票)。使用keepalived来进行迁移,主节点机器down了,从节点自然会接手vip;若仅是主节点的mongodb down了,则主节点的keepavlied自己杀死自己,从节点也会接手vip。   1.    MongoDB高可用配置   此种方式通过数据库的双向复制完成数据库的高可用性。   1.1.    服务器1启动参数配置   /usr/local/mongodb/bin/mongod --dbpath=/var/mongodb/data --logpath=/var/mongodb/logs/log.log --master --slave --source 192.168.1.19   --logappend  --port=27017 --fork   1.2.    服务器2 启动参数配置   /usr/local/mongodb/bin/mongod --dbpath=/var/mongodb/data --logpath=/var/mongodb/logs/log.log --master --slave --source 192.168.1.17   --logappend  --port=27017 --fork   1.3.    数据同步测试   此测试目的是双方均写入数据,查看数据库是否均进行了双向同步。   进入mongodb:/usr/local/mongodb/bin/mongo   显示数据库:show dbs;   在主服务器中向test库中添加数据:   db.test.save({"name":"zhouxiaofei","position":"Web tester"});   在从服务器中显示test库中存在的数据,当双方服务器数据显示一直时表示同步成功:   db.test.find();   1.4.    Keepalived配置   1.4.1.   服务器1keepalived配置 ! Configuration File for keepalived global_defs { notification_email { master@extmail.org } notification_email_from yunlei_ma@extmail.org smtp_server mail.extmail.org smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script chk_mongodb { script "/etc/keepalived/mongodb_check.sh" interval 2 weight 2 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 150 nopreempt advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_mongodb } virtual_ipaddress { 192.168.1.18 } }1.4.2.   服务器2keepalived配置 ! Configuration File for keepalived global_defs { notification_email { master@extmail.org } notification_email_from yunlei_ma@extmail.org smtp_server mail.extmail.org smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script chk_mongodb { script "/etc/keepalived/mongodb_check.sh" interval 2 weight 2 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 100 nopreempt advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_mongodb } virtual_ipaddress { 192.168.1.18 } }   1.4.3.   Mongodb服务检测脚本 /etc/keepalived/mongodb_check.sh #!/bin/bash daemonid=`ps -ef |grep /usr/local/mongodb/bin/mongod |grep dbpath|awk '{print $2}'` if [ "$daemonid" != "" ];then echo $daemonid exit 0 else echo $daemonid /etc/init.d/keepalived stop exit 1 fi   1.5.    服务器防火墙设置   iptables –I INPUT –p tcp –dport 27017 –j ACCEPT   iptables –I INPUT –p udp –dport 27017 –j ACCEP   /etc/init.d/iptables save   /etc/init.d/iptables restart   1.6.    双机切换测试   1.6.1.   数据库停止   数据库停止后,keepalived也将停止,公共IP自动转移至备用机。当宕机的数据库重启后,数据将自动从主服务器同步。   1.6.2.   Keepalived停止   Keepalived停止后,公共IP自动完成转移,不影响数据库。



数据 高可用 MongoDB 数据库

需要 登录 后方可回复, 如果你还没有账号请 注册新账号