项目需要搭建rabbitmq的高可用集群,最近在学习搭建过程,在这里记录下可以跟大家一起互相交流(这里只是记录了学习之后自己的搭建过程,许多原理的东西没有细说)。
搭建环境
CentOS7 64位
RabbitMQ 3.6.2
Keepalived 1.2.21
主机:192.168.0.1 192.168.0.2 192.168.0.3 三台节点上安装rabbitmq服务
Haproxy 安装在 192.168.1.1 和 192.168.1.2 上,用于对外提供 RabbitMQ 均衡
Keepalived实现haproxy的主备,高可用(避免单点问题),192.168.1.1(主)192.168.1.2(备)
全局图如下:
RabbitMQ集群搭建
单机上安装
分别在192.168.0.1 192.168.0.2 192.168.0.3 节点上安装rabbitmq server。
- 1.Install Erlang
# yum install erlang
测试erlang是否安装成功,输入:
# erl //进入erl窗口则表示安装成功
- 2.Install RabbitMQ Server
# wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.2/rabbitmq-server-3.6.2-1.noarch.rpm
# yum install rabbitmq-server-3.6.2-1.noarch.rpm
- 3.启动
# /etc/init.d/rabbitmq-server start
- 4.开机启动
# chkconfig rabbitmq-server on
测试是否安装成功:
# rabbitmqctl status //查看rabbitmq的运行状态信息
- 5.启用插件rabbitmq management
# rabbitmq-plugins enable rabbitmq_management
# /etc/init.d/rabbitmq-server restart
输入http://ip:15672可以登录管理界面,默认账户guest/guest只能使用http://localhost:15672登录,要想远程登录,需要添加一个新的用户:
# rabbitmqctl add_user admin 1234
#用户设置为administrator才能远程访问
$ sudo rabbitmqctl set_user_tags admin administrator
$ sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" //该命令使用户admin具有‘/’这个virtual host中所有资源的配置、写、读权限以便管理其中的资源
查看所有用户#rabbitmqctl list_users
镜像集群搭建
将192.168.0.1上的/var/lib/rabbitmq/.erlang.cookie中的内容复制到158和159上的/var/lib/rabbitmq/.erlang.cookie文件中, 即三台服务器必须具有相同的cookie,如果不相同的话,无法搭建集群
192.168.0.2和192.168.0.3节点上分别执行命令,加入到集群
# rabbitmqctl stop_app
# rabbitmqctl join_cluster --ram rabbit@h-ncdrdcs7
# rabbitmqctl start_app
其中--ram代表是内存节点,如果希望是磁盘节点则不用加--ram,在rabbitmq集群中,至少需要一个磁盘节点
查看集群的状态
# rabbitmqctl cluster_status
设置成镜像队列
# rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all"}' //意思表示以ha.开头的queue都会复制到各个节点 ["^"匹配所有]
Haproxy负载代理
利用haproxy做负载均衡
在192.168.1.1和192.168.1.2节点上
安装haproxy
# yum install haproxy
vi /etc/haproxy/haproxy.cfg 之后添加:
listen rabbitmq_local_cluster 0.0.0.0:
#配置TCP模式
mode tcp
option tcplog
#简单的轮询
balance roundrobin
#rabbitmq集群节点配置
server rabbit1 192.168.0.1: check inter rise fall
server rabbit2 192.168.0.2: check inter rise fall
server rabbit3 192.168.0.3: check inter rise fall #配置haproxy web监控,查看统计信息
listen private_monitoring :
mode http
option httplog
stats enable
#设置haproxy监控地址为http://localhost:8100/stats
stats uri /stats
stats refresh 30s
#添加用户名密码认证
stats auth admin:
#启动
# haproxy -f haproxy.cfg
#重启动
# service haproxy restart
Keepalived安装
利用keepalived做主备,避免单点问题,实现高可用
在192.168.1.1和192.168.1.2节点上安装最新版keepalived
192.168.1.1(主)修改keepalived.conf为:Primary配置:
vrrp_script chk_haproxy {
script "pidof haproxy"
interval
}
vrrp_instance VI_1 {
interface ens192
state MASTER
priority
virtual_router_id
unicast_src_ip 192.168.1.1
unicast_peer {
192.168.1.2
}
authentication {
auth_type PASS
auth_pass password
}
virtual_ipaddress {
192.168.1.10 //虚拟ip,对外提供服务
}
track_script {
chk_haproxy
}
notify_master /loadbtify_master.sh
}
192.168.1.2(备)修改keepalived.conf为:Secondary配置:
vrrp_script chk_haproxy {
script "pidof haproxy"
interval
}
vrrp_instance VI_1 {
interface ens192
state BACKUP
priority
virtual_router_id
unicast_src_ip 192.168.1.2
unicast_peer {
192.168.1.1
}
authentication {
auth_type PASS
auth_pass password
}
virtual_ipaddress {
192.168.1.10
}
track_script {
chk_haproxy
}
notify_master /loadbtify_master.sh
}
启动keepalived即可,192.168.1.10是对外提供的统一地址。
通过192.168.1.10:5672就可以访问rabbitmq服务。
参考资料:
https://www.digitalocean.com/community/tutorials/how-to-set-up-highly-available-haproxy-servers-with-keepalived-and-floating-ips-on-ubuntu-14-04#userconsent#
http://www.rabbitmq.com/install-rpm.html
http://www.keepalived.org/download.html //keepalived下载地址