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"}'

posted @ 2019-06-09 17:34  MigrantWorkers  阅读(57)  评论(0)    收藏  举报