我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何构建MongoDB RepSet +Consul高可用切换系统

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何构建MongoDB RepSet +Consul高可用切换系统

小编给大家分享一下如何构建MongoDB RepSet +Consul高可用切换系统,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

MongoDB RepSet +Consul

环境介绍:

MongoDB副本集:192.168.151:27151  已经安装了consul agent

                 192.168.152:27152  已经安装了consul agent

                 192.168.153:27153  已经安装了consul agent

原理介绍:
抛弃VIP,使用consul和sentinel构建redis的高可用系统
  mongoDB副本集的搭建

1.MongoDB主从角色检查脚本(MongoDB副本集分为primary和secondary,但为方便理解,仍称为主从关系):

cat> /root/check/mongo_isMaster.sh <<EOF
#!/bin/bash
PORT=$1
ROLE=$2 
a=$(mongo -uroot -psa123456  --port $PORT --host 192.168.1.151 --authenticationDatabase admin --eval "rs.isMaster()"|grep -i "isMaster"|awk -F ':' '{print $2}'|awk -F ',' '{print $1}')
#a=$(redis-cli -p $PORT info Replication|grep role:|awk -F ':' '{print $2}'|awk -F '\r' '{print $1}' )
if [ $a = $ROLE ]; then
    exit 0
else
        exit 2
fi
EOF
chmod +x /root/check/mongo_isMaster.sh
#检查脚本执行,第一个参数用来指定端口,第二个参数true即检测是否主,若为false即是检测是否从
./mongo_isMaster.sh 27151 true
#读取脚本执行结果,返回值为0,满足条件,返回值为2,异常,不满足
echo $?

2.MongoDB对应的consul服务配置文件(27151),其他两个更改端口和IP地址即可

cat> /etc/consul/mongo_27151.json <<EOF
{
  "services":[
  {
   "id":"27151master",
   "name":"mongo-master",
   "tags":["master"],
   "address":"192.168.1.151",
   "port":27151,
   "checks":[
              {
                  "args":["/root/check/mongo_isMaster.sh","27151","true"],
                  "interval":"1s"
              }
            ]
  },
  {
       "id":"27151slave",
       "name":"mongo-slave",
         "tags":["slave"],
         "address":"192.168.1.151",
         "port":27151,
         "checks":[
                       {
                            "args":["/root/check/mongo_isMaster.sh","27151","false"],
                            "interval":"1s"
                       }
                        ]
  }
 ]
}
EOF

3.重新加载consul agent配置文件

root@MongoDB151-FedoraServer-IP151#consul reload

注意!!!:在线上主库发送故障转移后,从库会变为新主,在原主库重新排除故障上线之前应更改新主库的优先级为本副本集中最高,防止原主库上线后以高优先级强制重新抢占主库的地位,导致部分事务丢失或者连接抖动

MongoDB相关命令:

rs.isMaster() #检查自己是否为主

更改实例优先级

conf=rs.conf

conf.members[1].priority=10  #配置中显示顺序第二的优先级设为10(和_id段的数没关系,仅仅是显示的第二个)

rs.reconfig(conf)                        #只能在主上执行

rs.reconfig(conf,{force:true}) #可以强制在从上执行,但会导致原主库已执行,从库未执行未执行的事务被回滚

rs.slaveOk()                               #设置从库可读

以上是“如何构建MongoDB RepSet +Consul高可用切换系统”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何构建MongoDB RepSet +Consul高可用切换系统

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用MySQL构建一个灵活可扩展的会计系统表结构?

如何使用MySQL构建一个灵活可扩展的会计系统表结构引言会计系统是企业管理中不可或缺的组成部分。构建一个灵活可扩展的会计系统表结构是非常重要的,它能够适应企业发展的需求,并方便数据的管理和查询。本文将介绍如何使用MySQL构建一个灵活可扩展
如何使用MySQL构建一个灵活可扩展的会计系统表结构?
2023-10-31

如何使用MySQL构建一个可追溯的会计系统表结构以满足审计要求?

如何使用MySQL构建一个可追溯的会计系统表结构以满足审计要求?在现代商业运作中,会计系统扮演着至关重要的角色。随着商业交易的增加,会计记录和审计要求也变得越来越复杂。在这样的情况下,建立一个可追溯的、灵活的会计系统表结构是至关重要的。本文
如何使用MySQL构建一个可追溯的会计系统表结构以满足审计要求?
2023-10-31

如何在MySQL中设计一个高可用的会计系统表结构以确保数据的可靠性和可用性?

如何在MySQL中设计一个高可用的会计系统表结构以确保数据的可靠性和可用性?在设计一个高可用的会计系统表结构时,我们需要考虑数据的可靠性和可用性。下面将介绍一些在MySQL中设计高可用的会计系统表结构的方法,并提供相应的代码示例。使用事务事
如何在MySQL中设计一个高可用的会计系统表结构以确保数据的可靠性和可用性?
2023-10-31

编程热搜

目录