前言
在CentOS 7.3下搭建RabbitMQ集群,在此将操作记录下来,亲测通过。
一、基础安装
1、资源准备
- 三台服务器:mq01、mq02、mq03
- erlang安装包:erlang-19.0.4-1.el7.centos.x86_64.rpm
- rabbitmq-server安装包:rabbitmq-server-3.6.10-1.el7.noarch.rpm
2、mq01安装erlang,安装成功后用erl命令验证
执行以下命令:
# rpm -ivh erlang-19.0.4-1.el7.centos.x86_64.rpm
//验证erlang是否安装成功
# erl
3、mq01安装rabbitmq-server
执行以下命令:
//安装socat
# yum install -y socat
//安装rabbitmq-server
# rpm -ivh rabbitmq-server-3.6.10-1.el7.noarch.rpm
//安装WEB管理插件
# rabbitmq-plugins enable rabbitmq_management
//启动rabbitmq服务
# rabbitmq-server -deched 或 systemctl start rabbitmq-server.service
//查看rabbitmq的状态
# rabbimqctl status
//关闭rabbitmq服务
# systemctl stop rabbitmq-server.service
4、在mq02、mq03服务器上重复以上操作
二、集群搭建
接下来主要以mq01为主节点搭建RabbitMQ集群:
1、在3台服务器上配置/etc/hosts文件
# vim /etc/hosts
//编辑内容如下:
100.15.10.12 mq01
100.15.10.13 mq02
100.15.10.14 mq03
4、修改mq02、mq03服务器的.erlang.cookie文件,使其值都等于mq01的值
执行以下命令:
# vim /var/lib/rabbitmq/.erlang.cookie
5、修改3台服务器的.erlang.cookie文件权限
执行以下命令:
# chmod -R 600 /var/lib/rabbitmq/.erlang.cookie
6、依次启动3台服务器的RabbitMQ服务
执行以下命令:
# systemctl start rabbitmq-server.service
7、在mq01服务器执行以下命令
执行以下命令:
# rabbitmqctl stop_app //只关闭rabbitmq服务,不关闭erlang服务
# rabbitmqctl reset
# rabbitmqctl start_app
8、在mq02、mq03服务器执行以下命令
执行以下命令:
# rabbitmqctl stop_app //只关闭rabbitmq服务,不关闭erlang服务
# rabbitmqctl reset
# rabbitmqctl join_cluster rabbit@mq01 //如果添加--ram参数,则说明节点为内存节点模式,否则为硬盘节点模式
# rabbitmqctl start_app
9、检查集群状态
执行以下命令:
# rabbitmqctl cluster_status
三、创建远程访问用户
执行以下命令:
# rabbitmqctl add_user rabbitmq 123456
# rabbitmqctl set_user_tags rabbitmq administrator
# rabbitmqctl set_permissions -p "/" rabbitmq ".*" ".*" ".*"
//查看新增用户是否成功
# rabbitmqctl list_users
四、通过使用Haproxy代理rabbitmq集群
前面已经搭建了3个节点的RabbitMQ集群:3个 IP:端口,但客户端只需填写一个IP和端口进行连接,因此需要通过Haproxy去代理这3个rabbitmq服务。
1、编辑Haproxy的配置文件haproxy.cfg
执行以下命令:
# vim /etc/haproxy/haproxy.cfg
//添加以下内容:
listen admin
bind *:9001
mode http
stats uri /stats
frontend rabbitmq
mode tcp
bind *:5672
timeout client 1h //HAProxy默认是50秒,如果50秒还没有消息到来,则HAProxy就会断开客户端,因此建议设置较大的超时
log global
option tcplog
option logasap
default_backend rabbitmq_5672
backend rabbitmq_5672
mode tcp
balance roundrobin
timeout server 1h
server mq01 mq01:5672
server mq02 mq02:5672
server mq03 mq03:5672
listen rabbitmq_admin
bind 0.0.0.0:15672
mode http
timeout server 1h
balance roundrobin
server mq01 mq01:15672
server mq02 mq02:15672
server mq03 mq03:15672
2、重启Haproxy,使其新配置生效
执行以下命令:
# systemctl restart haproxy.service
3、验证配置是否生效
- 浏览器访问http://haproxy服务器的ip:9001/stats,查看haproxy的状态
- 浏览器访问http://haproxy服务器的ip:15672,查看rabbitmq的管理后台
- 客户端可运用 haproxy服务器的ip:5672 进行连接操作
五、创建镜像规则
1、命令方式创建镜像规则(在任意节点执行即可)
执行以下命令:
# rabbitmqctl set_policy / "" '{"ha-mode":"all"}'