当前位置: 首页 > news >正文

ubuntu下搭建主/备RabbitMQ集群

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

主/备架构图:

234119_6znr_2493676.png

使用192.168.111.201:5672/5671访问haproxy,由haproxy转发请求,这是一对主/备独立服务器,并前置一台负载均衡器来处理故障转移。这是真正的无共享架构,主服务器和备用服务器之间没有协作,所以任何影响到主服务器的问题不会自动转移到备用服务器上。分隔的足够彻底,可以运行不同版本的RabbitMQ,运行在生产环境中引入新版RabbitMQ。

 

当主节点发生故障时,让备用节点拥有主节点的所有消息可使用共享存储架构(主服务器故障时,使用Pacemaker将RabbitMQ的IP地址转移到备用节点上并启动RabbiMQ服务器,采用共享存储上的当前元数据、内容和状态),但存在如下的问题:

(1)       因为是共享的,所以如果由于某些原因导致主节点故障那么同样的事情会发生在备用节点上,从而RabbitMQ服务器无法启动。

(2)       需要确保两台服务器拥有相同的节点名称和UID,当两处有一处不同备用节点就无法访问主节点共享存储的信息了。

官网给出了传统的基于pacemaker的active/passive模式的集群,由于崩溃会在主备间复制的事实,并且在使用共享存储方法时无法在两个节点上都运行RabbitMQ,因此选择基于负载均衡器的主/备搭建。

RabbitMQ与HAProxy的搭建参考我的上一篇,当然使用主/备模式安装RabbitMQ集群时就不需要节点连接了。

http://my.oschina.net/lzhaoqiang/blog/701618

 

 

接下来是配置haproxy:

#---------------------------------------------------------------------

# Global settings

#---------------------------------------------------------------------

global

    log    127.0.0.1 local2  #[err warning info debug]

    chroot  /usr/local/haproxy

    pidfile  /var/run/haproxy.pid #haproxy的pid存放路径,启动进程的用户必须有权限访问此文件

    maxconn  4096         #最大连接数,默认4000

    daemon  #创建1个进程进入deamon模式运行。此参数要求将运行模式设置为"daemon"

nbproc 1 #后台进程数,这个要求是 daemon ,需小于cpu内核数



#---------------------------------------------------------------------

# common defaults that all the 'listen' and 'backend' sections will

# use if not designated in their block

#---------------------------------------------------------------------

defaults

    mode   http   #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK

    log    global     #采用全局定义的日志

    option  dontlognull   #不记录健康检查的日志信息

    option  httpclose    #每次请求完毕后主动关闭http通道

    option  tcplog

    #option  forwardfor   #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip 

    option  redispatch   #serverId对应的服务器挂掉后,强制定向到其他健康的服务器

    timeout connect 10s  #default 10 second timeout if a backend is not found

    timeout client 30s  #客户端连接超时

    timeout server 30s  #服务器连接超时

timeout check   5s  #设置对后端服务器的检测超时时间,默认单位是毫秒

    maxconn     60000  #最大连接数

    retries     3    #3次连接失败就认为服务不可用,也可以通过后面设置



#---------------------------------------------------------------------

# main frontend which proxys to the backends

#---------------------------------------------------------------------

#frontend main *:5000

#    acl url_static path_beg    -i /static /images /javascript /stylesheets

#    acl url_static path_end    -i .jpg .gif .png .css .js

#

#    use_backend static if url_static #满足策略要求,则响应策略定义的backend页面

#    default_backend   app       #不满足则响应backend的默认页面



#---------------------------------------------------------------------

# static backend for serving up images, stylesheets and such

#---------------------------------------------------------------------

#backend static

#    balance     roundrobin           #负载均衡模式轮询

#   server      static 127.0.0.1:4331 check #后端服务器定义



#---------------------------------------------------------------------

# round robin balancing between the various backends

#---------------------------------------------------------------------

listen stats

        bind 0.0.0.0:8100               #监听端口

        mode http                       #http的7层模式

        option tcplog                  #采用tcp日志格式

        #log 127.0.0.1 local0 err

        maxconn 5

        stats refresh 30s               #统计页面自动刷新时间

        stats uri /stats                #统计页面url

        stats realm welcome login\ Haproxy   #统计页面密码框上提示文本

        stats auth admin:admin          #统计页面用户名和密码设置

        stats hide-version              #隐藏统计页面上HAProxy的版本信息





listen rabbitmq_master_backup_cluster

         bind 0.0.0.0:5672

         mode tcp

balance    roundrobin

server  rqmaster 192.168.111.136:5672 check inter 2000 rise 2 fall 3

server  rqbackup 192.168.111.137:5672 backup check inter 2000 rise 2 fall 3

listen rabbitmq_master_backup_cluster_ssl

bind 0.0.0.0:5672

         mode tcp

             balance    roundrobin

             server  rqmaster 192.168.111.136:5671 check inter 2000 rise 2 fall 3

             server  rqbackup 192.168.111.137:5671 backup check inter 2000 rise 2 fall 3

启动:

sudo /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

234440_Btzc_2493676.png

   

可以看到rmqmaster与rmqbackup两个节点颜色不同,主机为active UP  ,备机为backup UP,当主机宕掉时,备机就会接管服务

转载于:https://my.oschina.net/lzhaoqiang/blog/701628

相关文章:

  • JSP错误页面的处理和exception对象
  • AVL树相关操作
  • Linux有问必答:Linux上如何查看某个进程的线程
  • C#动态调用WCF
  • ora_01810:格式代码出现两次
  • 前段
  • 用Redis存储Tomcat集群的Session
  • XForms - 更强大的Form
  • Git学习总结(6)——作为一名程序员这些代码托管工具你都知道吗?
  • PHP SPL笔记
  • 三十六计阅读手记
  • PAT (Advanced Level) 1112. Stucked Keyboard (20)
  • SVN代码丢失惊魂
  • 【jacob word】使用jacob,合并多个word为一个word文件
  • string、wstring、cstring、 char、 tchar、int、dword转换方法(转)
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 4个实用的微服务测试策略
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • mongodb--安装和初步使用教程
  • Python打包系统简单入门
  • Python学习笔记 字符串拼接
  • 构建工具 - 收藏集 - 掘金
  • 计算机常识 - 收藏集 - 掘金
  • 前端相关框架总和
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 跳前端坑前,先看看这个!!
  • 用jQuery怎么做到前后端分离
  • ionic异常记录
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​ubuntu下安装kvm虚拟机
  • #if 1...#endif
  • #每天一道面试题# 什么是MySQL的回表查询
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (10)STL算法之搜索(二) 二分查找
  • (day6) 319. 灯泡开关
  • (九)信息融合方式简介
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)Unity3DUnity3D在android下调试
  • (转)创业家杂志:UCWEB天使第一步
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .net core使用ef 6
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .net的socket示例
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • /bin/bash^M: bad interpreter: No such file or directory
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @property括号内属性讲解