网络结构如下图:

共有104、105、106三台RabbitMQ Server,互为集群
其中104和105安装了Haproxy,每个Haproxy承担三台RabbitMQ server的负载均衡
两台Harpoxy采用Keepalived互为主备,VIP是172.16.0.108
操作系统为Ubuntu

以下介绍操作步骤:

1、三台主机安装RabbitMQ

     apt-get install rabbitmq-server

     开启RabbitMQ management,激活控制台以方便MQ的管理与监控
     sudo rabbitmq-plugins enable rabbitmq_management 
     开启监控后可以输入http://ip:15672可以登录管理界面,默认账户guest/guest
 
2、配置MQ集群
    2.1 cookie文件
     因为RabbitMQ的集群是通过Erlang的集群来实现的,所以,要求三台机器的
     /var/lib/rabbitmq/.erlang.cookie 文件内容一致,用VI等工具将它的内容修改为 zHDCGETPYWOWREASJUAB
    
     由于RabbitMQ在启动Booker时会检查该文件的权限,必须为400,否则会报错,所以要修改文件的权限
     chmod 400 .erlang.cookie
 
    2.2 修改各机器hosts
     172.16.0.104    pzs-test-1
     172.16.0.105    pzs-test-2
     172.16.0.106    pzs-test-3
       保证三台机器可以互相访问对方   
 
   2.3 加入集群
     对主节点(104):
     #启动Broker
     rabbitmq-server –detached > nohup.out&
     #启动集群
     rabbitmqctl start_app
      #查看集群状态
     rabbitmqctl cluster_status
 
     对备节点(105、106):
     rabbitmq-server –detached > nohup.out&
     rabbitmqctl start_app
     rabbitmqctl stop_app
     #加入集群
     rabbitmqctl join_cluster --ram rabbit@pzs-test-1
     rabbitmqctl start_app
     #查看集群状态
     rabbitmqctl cluster_status
 
     在三台机器运行以下命令:
   设置成镜像队列
  # rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}' //["^"匹配所有]
 
3、安装配置HaProxy
     安装过程省略
     修改/etc/haproxy/haproxy.cfg,在文件后面添加以下内容
listen rabbitmq_local_cluster 0.0.0.0:25672
#配置TCP模式
mode tcp
option tcplog
#简单的轮询
balance roundrobin
#rabbitmq集群节点配置
server rabbit1 172.16.0.104:5672 check inter 5000 rise 2 fall 2
server rabbit2 172.16.0.105:5672 check inter 5000 rise 2 fall 2
server rabbit3 172.16.0.106:5672 check inter 5000 rise 2 fall 2
   
#配置haproxy web监控,查看统计信息
listen private_monitoring :8100
mode http
option httplog
stats enable
#设置haproxy监控地址为http://localhost:8100/stats
stats uri /stats
stats refresh 30s
#添加用户名密码认证
stats auth admin:1234
    
启动haproxy: haproxy -f haproxy.cfg
访问http://172.16.0.104:8100/stats和http://172.16.0.105:8100/stats
可以查看haproxy的运行状态及一些统计信息
 
4、安装配置Keepalived
  安装过程省略
 【haproxy_check.sh文件内容】
     #!/bin/bash
     LOGFILE="/var/log/keepalived-haproxy-state.log"
     date >> $LOGFILE
     if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then
     echo "fail: check_haproxy status" >> $LOGFILE
     exit 1
     else
     echo "success: check_haproxy status" >> $LOGFILE
     exit 0
     fi
 
【haproxy_master.sh文件内容】
     LOGFILE="/var/log/keepalived-haproxy-state.log"
     echo "Being Master ..." >> $LOGFILE
 
然后修改/etc/keepalived/keepalived.conf文件
主机(104)
global_defs {
   router_id test
}
vrrp_script chk_haproxy
{
     script "/etc/keepalived/scripts/haproxy_check.sh"
     interval 2
     timeout 2
     fall 3
}
vrrp_instance haproxy {
    state MASTER # 主也配置为SLAVE
    interface eth0 
    virtual_router_id 61
    priority  150       
    virtual_ipaddress { 
    172.16.0.108
    }
    track_script {
         chk_haproxy
    }
    notify_master "/etc/keepalived/scripts/haproxy_master.sh"
}
 
备机(105)
global_defs {
    router_id redis
}

vrrp_script chk_haproxy
{
     script "/etc/keepalived/scripts/haproxy_check.sh"
     interval 2
     timeout 2
     fall 3
}
vrrp_instance haproxy {
    state BACKUP # 主也配置为SLAVE
    interface eth0 
    virtual_router_id 61
    priority  100       
    virtual_ipaddress { 
    172.16.0.108
    }
    track_script {
         chk_haproxy
    }
    notify_master "/etc/keepalived/scripts/haproxy_master.sh"

}
 
注意:keepalived可能运行多个实例,比如redis和haproxy共存,在这种情况下,必须注意几点:
一、VIP必须各实例不同
二、virtual_router_id必须各实例不同
三、脚本文件中不允许出现kill keepalived进程的操作
 
运行keepalived -D 启动keepalived

RabbitMQ高可用配置(Haproxy + Keepalived)的更多相关文章

  1. Redis高可用配置(Keepalived)

    主:172.16.0.104 备:172.16.0.105 VIP:172.16.0.107 客户端直接连VIP,当master 104的redis挂掉后,105作为master.当104重启后,10 ...

  2. linux中keepalived实现nginx高可用配置

    linux中keepalived实现nginx高可用配置 安装keepalived 运行如下命令即可 tar -zxvf keepalived-2.0.8.tar.gz -C /usr/src cd ...

  3. RabbitMQ集群安装配置+HAproxy+Keepalived高可用

    RabbitMQ集群安装配置+HAproxy+Keepalived高可用 转自:https://www.linuxidc.com/Linux/2016-10/136492.htm rabbitmq 集 ...

  4. RabbitMQ 集群与高可用配置

    集群概述 通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送 ...

  5. (转)RabbitMQ 集群与高可用配置

    集群概述 环境 配置步骤 集群概述 通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务 ...

  6. RabbitMQ高可用集群配置

    1.安装RabbitMQ 1)下载和安装erlang 下载erlang wget http://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el6.x ...

  7. MariaDB+Keepalived双主高可用配置MySQL-HA

    利用keepalived构建高可用MySQL-HA,保证两台MySQL数据的一致性,然后用keepalived实现虚拟VIP,通过keepalived自带的服务监控功能来实现MySQL故障时自动切换. ...

  8. 基于keepalived对redis做高可用配置---转载

    关于keepalived的详细介绍,请移步本人相关博客:http://wangfeng7399.blog.51cto.com/3518031/1405785 功能 ip地址 安装软件 主redis 1 ...

  9. Keepalived保证Nginx高可用配置

    Keepalived保证Nginx高可用配置部署环境 keepalived-1.2.18 nginx-1.6.2 VM虚拟机redhat6.5-x64:192.168.1.201.192.168.1. ...

随机推荐

  1. Float 的那些事

    css float 定义元素浮动到左侧或者右侧.其出现的本意是让文字环绕图片而已. left.right.inherit(从父级元素获取float值).none 一.浮动的性质 1. 包裹性 disp ...

  2. mac 切换php版本

    通过brew安装的php可以通过brew link和brew unlink来切换不同版本 #brew list #brew unlink php56 #brew link php55

  3. Kattis - Fenwick Tree(树状数组区间更新单点求值)

    Fenwick Tree Input The first line of input contains two integers NN, QQ, where 1≤N≤50000001≤N≤500000 ...

  4. [UWP小白日记-12]使用新的Composition API来实现控件的阴影

    前言 看了好久官方的Windows UI Dev Labs示例好久才有点心得,真是头大.(其实是英语幼儿园水平(⊙﹏⊙)b) 真的网上关于这个API的资料可以说几乎没有. 正文 首先用这东西的添加WI ...

  5. Object-Widgets-Quick 构造树

    Object Tree 当以某个QObject为父类创建一个QObject时, 它会被添加到该父类的children列表中. 析构时, QObjet 会首先检查自己的children, 依次析构, 然 ...

  6. SHELL中,如何分割字符串

    done.csv中,形如 amoy9812@163.com的数据 #!/bin/shwhile read linedo ar=(${line//@/ }) echo ${ar[0]} #说明:分解出账 ...

  7. nginx服务器上遇到了acces denied,报错是fastCGI只要好好修改配置就行了

    猜想: 懵逼 实践: 首先通用的方法,并没有解决问题. 1.修改php-fpm配置文件vim /etc/php-fpm.d/www.confuser = nginx        编辑用户为nginx ...

  8. unity3d打开对话框

    最近一直在忙项目,没时间更新博客,这两天趁空封装windows下的打开对话框,支持多选.其他系统可以用ngui或者ugui封装一个. 这里就不上封装的源码了提供dll供小伙伴们使用,如果有需要源码请请 ...

  9. schemes-universalLink-share_IOS-android-WeChat-chunleiDemo

    schemes-universalLink-share_IOS-android-WeChat-chunleiDemo The mobile terminal share page start APP ...

  10. XTU 1250 Super Fast Fourier Transform

    $2016$长城信息杯中国大学生程序设计竞赛中南邀请赛$H$题 排序,二分. 对$a$数组,$b$数组从小到大进行排序. 统计每一个$a[i]$作为较大值的时候与$b[i]$对答案的贡献.反过来再统计 ...