返回顶部
首页 > 资讯 > 数据库 >haproxy代理mongodb
  • 616
分享到

haproxy代理mongodb

2024-04-02 19:04:59 616人浏览 泡泡鱼
摘要

mongoDB集群采用的replication set模式,至少3个节点以上。有个问题,当monGodb主节点down的时候,如何让ceilometer自动连接重新选举出来的主节点?这里有两种解法,至于采用

mongoDB集群采用的replication set模式,至少3个节点以上。有个问题,当monGodb主节点down的时候,如何让ceilometer自动连接重新选举出来的主节点?


这里有两种解法,至于采用哪种,看需求。

1、采用vip来定位mongodb主节点

     使用keepalived来起vip,这里有两个vip,vrrp_instance VI_1是专门给mongodb用的vip,vrrp_instance VI_2是OpenStack HA用的vip

     vrrp script chk_mongo_primary脚本专门来检测该节点是不是mongo master节点,如果是的话权重+2,而且vrrp_instance VI_1的vip是可以抢占的;

     当mongodb主节点发生切换,vrrp_instance VI_1的vip也会跟着切换。

keepalived.conf配置文件

! Configuration File for keepalived
vrrp_script chk_haproxy {
    script "killall -0 haproxy"
    interval 2
    weight 2
}
# Define the script used to check if mongod is running
vrrp_script chk_mongod {
    script "killall -0 mongod"
    interval 2 # every two seconds
    weight 2
}
# Define the script to see if the local node is the primary
vrrp_script chk_mongo_primary {
    script "mongo --eval '(!!db.runCommand("ismaster")["ismaster"])?quit(0):quit(1)'"
    interval 2 # every two seconds
    weight 2
}
# Configuation for the virtual interface
vrrp_instance VI_1 {
    interface br-ex
    state node MASTER        # SLAVE on the other nodes
    priority 101             # 100 on other nodes
    virtual_router_id 55
    authentication {
        auth_type PASS
        auth_pass secret     # Set this to some secret phrase
    }
    # The virtual ip address shared between the two nodes
    virtual_ipaddress {
        172.16.140.251/24
    }
    # Use the script above to check if we should fail over
    track_script {
        chk_mongod
        chk_mongo_primary
    }
}
vrrp_instance VI_2 {
    interface br-ex
    virtual_router_id 51
    state BACKUP
    priority 200
# if use it,the openstack api do not response nORMally
#    use_vMac virtualmac
#
    advert_int 1
    dont_track_primary
    nopreempt
    authentication {
    auth_type PASS
    auth_pass passWord
    }
    virtual_ipaddress {
       172.16.140.250/24
    }
    track_script {
      chk_haproxy
    }
    notify /usr/local/bin/keepalivednotify.sh
}


2、使用haproxy的tcp-check来检测

haproyx mongodb配置

listen mongodb_cluster
    bind openstack_vip:27017
    option tcpka
    option tcplog
    option tcp-check
    # MongoDB Wire Protocol
    tcp-check send-binary 3a000000 # Message Length (58)
    tcp-check send-binary EEEEEEEE # Request ID (random value)
    tcp-check send-binary 00000000 # Response To (nothing)
    tcp-check send-binary d4070000 # OpCode (Query)
    tcp-check send-binary 00000000 # Query Flags
    tcp-check send-binary 61646d696e2e # fullCollectionName (admin.$cmd)
    tcp-check send-binary 24636d6400 # continued
    tcp-check send-binary 00000000 # NumToSkip
    tcp-check send-binary FFFFFFFF # NumToReturn
    # Start of Document
    tcp-check send-binary 13000000 # Document Length (19)
    tcp-check send-binary 10 # Type (Int32)
    tcp-check send-binary 69736d617374657200 # ismaster:
    tcp-check send-binary 01000000 # Value : 1
    tcp-check send-binary 00 # Term
    
    tcp-check expect binary 69736d61737465720001 #ismaster True
    server controller1 controller1:27017 check inter 2000 rise 2 fall 3
    server controller2 controller2:27017 check inter 2000 rise 2 fall 3

这里有个问题,在haproxy监控页面上看到的非master节点都是down的,因为tcp-check的缘故。

上面send-binary为什么那么写?(用tcpdum抓包出来,拿到wireshark分析)

详情参考这里:https://blog.danman.eu/mongodb-haproxy/

                         Http://serverfault.com/questions/625492/how-to-construct-a-mongodb-health-check-in-haproxy


最后发现mongodb的uri本身支持multi host,形如:mongodb://ceilometer:ceilometer@controller2,controller1,controller3/ceilometer?readPreference=primaryPreferred&replicaSet=rs0

详情参考mongodb官方:https://docs.mongodb.com/manual/reference/connection-string/





您可能感兴趣的文档:

--结束END--

本文标题: haproxy代理mongodb

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

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

猜你喜欢
  • haproxy代理mongodb
    mongodb集群采用的replication set模式,至少3个节点以上。有个问题,当mongodb主节点down的时候,如何让ceilometer自动连接重新选举出来的主节点?这里有两种解法,至于采用...
    99+
    2024-04-02
  • HAProxy+mongos搭建高可用负载均衡mongodb
     在生产环境中,搭建的mongodb分片,提供了三个mongos接口。但mongodb中没有failover机制,官方建议是将mongos和应用服务器部署在一起,多个应用服务器就要部署多个mong...
    99+
    2024-04-02
  • haproxy 7层负载均衡代理转发实战讲解
    HAProxy是一个开源的、高性能的负载均衡软件,可以用于将传入的请求分发到不同的后端服务器上,以实现高可用性和性能优化。在7层负载...
    99+
    2023-09-22
    haproxy
  • 在CentOS上如何完全安装和使用代理软件HAProxy
    这篇文章主要讲解了“在CentOS上如何完全安装和使用代理软件HAProxy”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在CentOS上如何完全安装和使用代理软件HAProxy”吧!一、H...
    99+
    2023-06-10
  • Mongodb代理程序如何实现
    这篇文章主要介绍“Mongodb代理程序如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mongodb代理程序如何实现”文章能帮助大家解决问题。 根据一贯的...
    99+
    2024-04-02
  • 在国产处理器服务器上做HAProxy负载均衡
    环境硬件平台:国产 arm64 3399cpu海之舟服务器操作系统:海之舟服务器操作系统1.0A用户访问192.168.125地址时,haproxy分配至二台服务器,192.168.1.7,192.168.1.8。实现负载分担。root@b...
    99+
    2023-06-05
  • haproxy实现功能以及keepalived的使用原理是什么
    这篇文章将为大家详细讲解有关haproxy实现功能以及keepalived的使用原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。haproxy能够实现的功能4层负载均衡,透明代理,7...
    99+
    2023-06-05
  • MongoDB性能测试代码
    写入100万条记录,建立索引,使用索引连续查询 10万次。 use admin;//连接资料库  db.auth("mongoAdmin","123456&...
    99+
    2024-04-02
  • 怎么用mongodb替代es
    要将MongoDB替换为Elasticsearch,您需要采取以下步骤:1. 将MongoDB中的数据导出为JSON格式。您可以使用...
    99+
    2023-09-06
    mongodb
  • Node.js连接mongodb实例代码
    前面介绍了node.js操作mysql以及redis的内容,这里继续学习操作mongodb的内容。 安装驱动 安装命令 cnpm install mongodb 安装成功 数据库操作 因为mongo...
    99+
    2022-06-04
    实例 代码 Node
  • mongodb日志清理
    mongodb的日志相对其他数据库来说应该算是很大的,刚才由于报警,所以我查看啦一下,有15G的日志产生,下面是我的清理过程出于对安全方面,我们服务器禁止使用rm命令,所以我在/home目录下创建啦一个mo...
    99+
    2024-04-02
  • MongoDB用户管理
    创建用户 语法:db.createUser({user:<name_string>, #字符串pwd:<password_strin>, #字符串roles:[{role:<...
    99+
    2024-04-02
  • mongodb 用户管理
    use db_order创建用户:db.createUser({user: "u_db_order",pwd: "password",roles: [ { role:...
    99+
    2024-04-02
  • mongodb权限管理
    今晚苦逼加班,就稍微梳理下mongodb的权限境配置,在安装配置好一套mongodb后,需要创建相应的数据库和用户密码给开发人员,那么权限改如何设置呢?1.首先要创建数据库use chunqiu2.创建用户...
    99+
    2024-04-02
  • SpringBoot整合MongoDB的实现代码
    目录一、添加Maven依赖二、application.yml配置三、代码中使用Mongo1.Mongo适用场景2.以我最近博客开发的一个联系我为例(这里我使用Mongo)MongoD...
    99+
    2024-04-02
  • 【MongoDB学习笔记22】MongoDB的索引管理
    使用ensureIndex函数创建集合的索引。对集合而言,每个索引只需要创建一次,重复创建没有任何作用;> show collections    s...
    99+
    2024-04-02
  • mongodb权限管理02
    mongodb权限管理02 接下来,mongodb 的配置文件中如何实现密码的登录呢?我们之前是直接用的这个命令[root@prd3-mysql-0-36 ~]# mongod -f /ivargo/app...
    99+
    2024-04-02
  • MongoDB 副本集原理及管理
    MongoDB副本集(Replica Set)是一组MongoDB实例组成的集群,由一个主节点(primary)和多个备节点(Secondary)组成。通过Repication,将数据的更新由primary...
    99+
    2024-04-02
  • 【MongoDB学习笔记3】处理MongoDB连接错误
    安装MongoDB后第一次启用shell登录mongo会出现一下的错误:warning: Failed to connect to 127.0.0.1:27...
    99+
    2024-04-02
  • SpringBoot整合MongoDB完整实例代码
    目录一、新建项目二、docker-compose 配置mongoDB三、SpringBoot配置MongoDB问题:Exception authenticating MongoCre...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作