CentOS7 安装RabbitMQ集群
一、安装RabbitMQ
1、 安装RabbitMQ依赖的erlang运行环境
访问:https://github.com/rabbitmq/erlang-rpm, 在/etc/yum.repo.d/目录下新增rabbitmq_erlang.repo配置:
# In /etc/yum.repos.d/rabbitmq_erlang.repo [rabbitmq_erlang] name=rabbitmq_erlang baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 [rabbitmq_erlang-source] name=rabbitmq_erlang-source baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/SRPMS repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 |
执行yum install -y erlang安装
执行yum list |grep erlang 查看结果
执行 rpm -qi erlang.x86_64 查看安装详情
2、 安装RabbitMQ的Server
访问:https://www.rabbitmq.com/install-rpm.html,查看Using Bintray Yum Repository章节,在/etc/yum.repo.d/目录下创建rabbitmq.repo配置:
|
[bintray-rabbitmq-server] name=bintray-rabbitmq-rpm baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.7.x/el/7/ gpgcheck=0 repo_gpgcheck=0 enabled=1 |
执行 yum install -y rabbitmq-server 安装
执行yum list |grep rabbitmq-server 查看结果

执行 rpm -qi rabbitmq-server 查看安装详情

执行rpm -ql rabbitmq-server查看安装列表
二、启动管控台插件
|
/usr/sbin/rabbitmq-plugins list 查看可用的插件 |
|
[root@vm1 ~]# rabbitmq-plugins list Listing plugins with pattern ".*" ... Configured: E = explicitly enabled; e = implicitly enabled | Status: * = running on rabbit@vm1 |/ [ ] rabbitmq_amqp1_0 3.7.15 [ ] rabbitmq_auth_backend_cache 3.7.15 [ ] rabbitmq_auth_backend_http 3.7.15 [ ] rabbitmq_auth_backend_ldap 3.7.15 [ ] rabbitmq_auth_mechanism_ssl 3.7.15 [ ] rabbitmq_consistent_hash_exchange 3.7.15 [ ] rabbitmq_event_exchange 3.7.15 [ ] rabbitmq_federation 3.7.15 [ ] rabbitmq_federation_management 3.7.15 [ ] rabbitmq_jms_topic_exchange 3.7.15 [ ] rabbitmq_management 3.7.15 [ ] rabbitmq_management_agent 3.7.15 [ ] rabbitmq_mqtt 3.7.15 [ ] rabbitmq_peer_discovery_aws 3.7.15 [ ] rabbitmq_peer_discovery_common 3.7.15 [ ] rabbitmq_peer_discovery_consul 3.7.15 [ ] rabbitmq_peer_discovery_etcd 3.7.15 [ ] rabbitmq_peer_discovery_k8s 3.7.15 [ ] rabbitmq_random_exchange 3.7.15 [ ] rabbitmq_recent_history_exchange 3.7.15 [ ] rabbitmq_sharding 3.7.15 [ ] rabbitmq_shovel 3.7.15 [ ] rabbitmq_shovel_management 3.7.15 [ ] rabbitmq_stomp 3.7.15 [ ] rabbitmq_top 3.7.15 [ ] rabbitmq_tracing 3.7.15 [ ] rabbitmq_trust_store 3.7.15 [ ] rabbitmq_web_dispatch 3.7.15 [ ] rabbitmq_web_mqtt 3.7.15 [ ] rabbitmq_web_mqtt_examples 3.7.15 [ ] rabbitmq_web_stomp 3.7.15 [ ] rabbitmq_web_stomp_examples 3.7.15 |
启用管控台插件
|
[root@vm1 ~]# rabbitmq-plugins enable rabbitmq_management Enabling plugins on node rabbit@vm1: rabbitmq_management The following plugins have been configured: rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatch Applying plugin configuration to rabbit@vm1... The following plugins have been enabled: rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatch
started 3 plugins. |
访问:http://ip:15672

问题一:控制台无法登陆,办法:修改一个配置文件,控制台方能使用guest/guest登陆:
|
vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.7.15/ebin/rabbit.app 修改:loopback_users 中的 <<"guest">>,只保留guest
|

问题二:如果是虚拟机可能无法访问控制台,可能是由于防火墙限制,可以执行
|
iptables -F |
三、搭建集群
1、 集群信息
|
Master |
IP |
Hostname |
Server Port |
Cluster Port |
|
|
Yes |
192.168.0.20 |
vm1 |
5672 |
25672 |
|
|
No |
192.168.0.21 |
vm2 |
5672 |
25672 |
|
|
No |
192.168.0.22 |
vm3 |
5672 |
25672 |
|
/etc/hostname配置,各机器配置好hostname
/etc/hosts配置
|
192.168.0.20 vm1 192.168.0.21 vm2 192.168.0.22 vm3 |
2、 集群搭建步骤
① vm1、vm2、vm3分别启动服务执行:
|
rabbitmq-server |
② vm1、vm2、vm3分别停止服务执行:
|
rabbitmqctl stop |
③ 将vm1的/var/lib/rabbitmq/.erlang.cookie拷贝到vm2和vm3的/var/lib/rabbitmq下,同时文件的权限和用户为:
|
[root@vm1 rabbitmq]# ll .erlang.cookie -r--------. 1 rabbitmq rabbitmq 20 6月 9 00:00 .erlang.cookie |
如果不是,则执行
|
chown rabbitmq:rabbitmq .erlang.cookie chmod 400 .erlang.cookie |
④ vm1、vm2、vm3分别执行:
|
rabbitmq-server -detached |
⑤ vm2、vm3分别执行:注意(vm1不需要执行)
|
rabbitmqctl stop_app rabbitmqctl join_cluster rabbit@vm1 rabbitmqctl start_app |
|
[root@vm3 rabbitmq]# rabbitmqctl join_cluster rabbit@vm1 Clustering node rabbit@vm3 with rabbit@vm1 [root@vm3 rabbitmq]# rabbitmqctl start_app Starting node rabbit@vm3 ... completed with 0 plugins. |
⑥ 查看集群状态
|
[root@vm1 rabbitmq]# rabbitmqctl cluster_status Cluster status of node rabbit@vm1 ... [{nodes,[{disc,[rabbit@vm1,rabbit@vm2,rabbit@vm3]}]}, {running_nodes,[rabbit@vm2,rabbit@vm3,rabbit@vm1]}, {cluster_name,<<"rabbit@vm1">>}, {partitions,[]}, {alarms,[{rabbit@vm2,[]},{rabbit@vm3,[]},{rabbit@vm1,[]}]}] |
3、 配置镜像队列
将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节点状态一致,保证RabbitMQ高可用集群。
|
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}' |

浙公网安备 33010602011771号