iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >如何构建MongoDB RepSet +Consul高可用切换系统
  • 402
分享到

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

2024-04-02 19:04:59 402人浏览 八月长安
摘要

小编给大家分享一下如何构建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高可用切换系统”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: 如何构建MongoDB RepSet +Consul高可用切换系统

本文链接: https://www.lsjlt.com/news/67056.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 如何构建MongoDB RepSet +Consul高可用切换系统
    小编给大家分享一下如何构建MongoDB RepSet +Consul高可用切换系统,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧...
    99+
    2024-04-02
  • 怎么构建Mysql高可用集群系统
    本篇内容主要讲解“怎么构建Mysql高可用集群系统”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么构建Mysql高可用集群系统”吧!一、 MySQL复制的实现...
    99+
    2024-04-02
  • 使用PHP和Redis构建高可用性的系统
    随着互联网技术的不断发展,越来越多的企业已经将自己的业务系统进行了在线化,基于云计算、大数据等技术来提高自己的运营效率和管理水平。在这一背景下,高可用性的系统已经成为了众多企业的必备条件。本篇文章将介绍如何使用PHP和Redis构建高可用性...
    99+
    2023-05-23
    PHP redis 高可用性
  • Redis:构建高可用性系统的关键技术
    Redis,即远程字典服务器(Remote Dictionary Server),是一个开源的高性能键值对存储系统。它以其出色的性能和可靠的高可用性而受到广泛关注和使用。在构建高可用性系统时,Redis扮演着关键的角色。本文将探讨一些使用R...
    99+
    2023-11-07
    技术 redis 高可用性
  • Redis高可用架构如何搭建
    今天小编给大家分享一下Redis高可用架构如何搭建的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2022-12-05
    redis
  • win8系统如何切换用户账户
    这篇文章主要介绍了win8系统如何切换用户账户,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、切换本地用户在Windows8的Metro桌面,点击当前用户,可以看到其他用户...
    99+
    2023-06-28
  • 高效利用Golang Facade模式构建可拓展的系统
    使用Golang的Facade模式可以帮助构建可拓展的系统。Facade模式是一种结构型设计模式,它提供了一个统一的接口,用于访问系...
    99+
    2023-10-08
    Golang
  • 如何利用Java关键字和API构建高可用性的分布式系统?
    分布式系统是当今互联网时代的重要组成部分,它可以帮助我们更好地处理大量数据和应对高并发访问的需求。而Java作为一种广泛应用于分布式系统的编程语言,其关键字和API提供了丰富的功能和工具,可以帮助我们构建高可用性的分布式系统。下面,本文将详...
    99+
    2023-10-23
    关键字 分布式 api
  • 如何在FreeBSD系统上搭建高可用性集群
    在FreeBSD系统上搭建高可用性集群可以使用一些常见的工具和技术,如Pacemaker、Corosync、Keepalived等。...
    99+
    2024-04-02
  • PHP异步协程开发:构建高可用的支付系统
    PHP异步协程开发:构建高可用的支付系统随着电子支付系统的普及,对于支付系统的高可用性要求也越来越高。传统的同步阻塞模型在面对高并发请求时,性能会有所限制。异步协程开发成为了一种解决方案,它能够提升系统的性能和可靠性。本文将介绍如何使用PH...
    99+
    2023-12-09
    PHP 异步 支付系统
  • Redis:构建高可用性数据库系统的关键技术
    Redis:构建高可用性数据库系统的关键技术随着互联网的发展,大数据时代的到来,数据库系统的高可用性需求也愈发迫切。作为一种内存存储型的 NoSQL 数据库系统,Redis 凭借其出色的性能和灵活的数据模型,成为构建高可用性数据库系统的关键...
    99+
    2023-11-07
    redis 高可用性 数据库系统
  • 如何解决xp系统文字输入法不可切换的问题
    这篇文章主要讲解了“如何解决xp系统文字输入法不可切换的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何解决xp系统文字输入法不可切换的问题”吧!  Windows XP中,输入法图标...
    99+
    2023-06-13
  • Linux系统中普通用户如何切换root方法
    这篇文章主要为大家分析了Linux系统中普通用户如何切换root方法的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Linux系统中普通用户如何切换root方...
    99+
    2023-06-28
  • PHP异步协程开发:构建高可用的在线咨询系统
    PHP异步协程开发:构建高可用的在线咨询系统在当今互联网时代,客户体验已成为企业竞争的关键因素之一。随着移动互联网的普及,业务处理速度和响应时间越来越成为用户选择的重要指标。在线咨询系统是供用户与客服进行实时交流的一种应用,被广泛应用于电商...
    99+
    2023-12-09
    - PHP开发 - 异步协程 - 在线咨询系统
  • PHP异步协程开发:构建高可用的物流跟踪系统
    PHP异步协程开发:构建高可用的物流跟踪系统引言:在现代化的物流系统中,实时跟踪物流信息是非常重要的。为了确保物流运输的准确性和效率,传统的同步方式往往无法满足需求。因此,使用PHP异步协程开发物流跟踪系统成为一种极具吸引力的解决方案。本文...
    99+
    2023-12-09
    高可用 PHP异步协程 物流跟踪系统
  • Golang RabbitMQ: 构建高可用的消息队列系统的最佳实践
    构建高可用的消息队列系统的最佳实践包括以下要点:1. 使用集群模式:RabbitMQ支持集群模式,通过在多个节点上运行多个Rabbi...
    99+
    2023-10-08
    Golang
  • 如何使用Django和PHP容器构建高效的索引系统?
    随着信息量的不断增长,传统的索引系统已经无法满足现代用户对搜索速度和准确性的需求。因此,使用Django和PHP容器构建高效的索引系统是一个非常值得尝试的方法。在本文中,我们将探讨如何使用这两个工具来创建一个高效的索引系统,并提供演示代码以...
    99+
    2023-08-06
    容器 django 索引
  • Go、Git和Unix:如何构建高效的API响应系统?
    在当今的互联网时代,API已经成为了众多软件系统中最为重要的一部分。而构建高效的API响应系统则是一个至关重要的挑战。本文将介绍如何利用Go、Git和Unix构建高效的API响应系统,包括如何利用这些工具来提高响应速度、减少系统维护成本等方...
    99+
    2023-07-28
    git 响应 unix
  • 如何使用MySQL构建一个灵活可扩展的会计系统表结构?
    如何使用MySQL构建一个灵活可扩展的会计系统表结构引言会计系统是企业管理中不可或缺的组成部分。构建一个灵活可扩展的会计系统表结构是非常重要的,它能够适应企业发展的需求,并方便数据的管理和查询。本文将介绍如何使用MySQL构建一个灵活可扩展...
    99+
    2023-10-31
    MySQL 构建 会计系统
  • 如何构建一个高扩展性的PHP商城系统?
    随着数字化商务的发展,越来越多的企业开始考虑搭建一个自己的电子商务平台,而PHP无疑成为了很多企业开发电商项目的首选语言。但是,如何构建一个高扩展性的PHP商城系统却是让很多开发者头疼的问题。本文将从以下几个方面为大家介绍如何构建一个高扩展...
    99+
    2023-05-14
    PHP 扩展性 商城系统
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作