Centos 7 Rabbitmq 镜像集群安装

来自Linux78|wiki
Bob讨论 | 贡献2020年2月21日 (五) 15:15的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

基于erlang的分布式特性,RabbitMQ很容易搭建其集群模式。RabbitMQ集群有普通模式和镜像模式两种,但普通模式的可靠性远差于镜像模式;另外,RabbitMQ的消息存储方式也有内存型和磁盘型两种,磁盘型适用于持久型消息,而内存型在重启应用后则消息被清空,故本文只讲述RabbitMQ磁盘型镜像模式集群的搭建方法。

系统环境

操作系统:CentOS 7.2

应用软件:erLang、RabbitMQ

服务器配置 
服务器IP	主机名    	应用
10.10.100.101	RABBITMQ-A	erlang RabbitMQ
10.10.100.102	RABBITMQ-B      erlang RabbitMQ
10.10.100.103	RABBITMQ-C      erlang RabbitMQ

配置erlang yum源

cat >/etc/yum.repos.d/rabbitmq_erlang.repo<<-EOF 
[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
EOF

配置rabbitmq的yum源

cat >/etc/yum.repos.d/bintray-rabbitmq-server<<-EOF  
[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
EOF

安装erlang和rabbitmq-server

yum install erlang rabbitmq-server -y


1、配置hostname

echo "RABBITMQ-A" > /etc/hostname
echo -e "10.10.100.101 RABBITMQ-A\n10.10.100.102 RABBITMQ-B\n10.10.100.103 RABBITMQ-C" >> /etc/hosts

至此,erlang和rabbitmq已经安装完成,下面开始进入配置环节。

导入插件rabbitmq_management

rabbitmq-plugins enable rabbitmq_management

同步cookie文件

chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
for i in 2 3; do scp /var/lib/rabbitmq/.erlang.cookie root@10.10.100.10$i:/var/lib/rabbitmq; done

新添加的节点也必须使用原集群的erlang cookie,erlang cookie文件位置:

rpm安装 → /var/lib/rabbitmq/.erlang.cookie
编译安装 → $home/.erlang.cookie

安装插件

由于要用到rabbitmq_delayed_message_exchange插件,所以就要下载并安装。

下载地址:https://www.rabbitmq.com/community-plugins.html

下载到服务器上解压出来后,复制插件到rabbitmq安装目录下的plugins目录:

cp rabbitmq_delayed_message_exchange-20171201-3.7.x.ez /usr/lib/rabbitmq/lib/rabbitmq_server-3.7.17/plugins/
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
   Enabling plugins on node rabbit@localhost:
   rabbitmq_delayed_message_exchange
   The following plugins have been configured:rabbitmq_delayed_message_exchange
   Applying plugin configuration to rabbit@localhost...
   Plugin configuration unchanged.

上面表示插件启动成功。

启动管理功能

为了管理方便,启动web管理功能,默认端口为15672。

 rabbitmq-plugins enable rabbitmq_management


配置RabbitMQ集群

配置RabbitMQ用户

在所有节点上添加用户,并加入administrator用户组:

rabbitmqctl add_user rbtmqadmin Rabbitmq@123
rabbitmqctl set_permissions -p "/" rbtmqadmin ".*" ".*" ".*"
rabbitmqctl set_user_tags rbtmqadmin administrator

完成后,即可登录web界面http://10.10.100.101:15672。

提醒:RabbitMQ的默认用户“guest”用于集群检测,一般情况下不要做任何修改。

通过-detached启所有节点

rabbitmqctl stop
rabbitmq-server -detached
rabbitmqctl cluster_status

创建集群

从第二个节点开始,依次加入到第一个节点中,创建RabbitMQ集群。

rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@RABBITMQ-A
rabbitmqctl start_app

设置镜像策略

在web端创建虚拟机(coreserver)并授予rbtmqadmin和guest用户权限:

Admin → Virtual Hosts → Add a new virtual host

然后,在终端执行如下命令:

rabbitmqctl set_policy -p coreserver ha-all "^" '{"ha-mode":"all"}'

至此,RabbitMQ集群已经搭建成功,如果需要搭建HA,可在本博客中搜索“haproxy”参考其他文章,下面举出haproxy中需要调整的配置(10.10.100.100是HA的IP):

listen rabbitmq_admin
   bind 10.10.100.100:15672
   server node1 10.10.100.101:15672
   server node2 10.10.100.102:15672
   server node3 10.10.100.103:15672

listen rabbitmq_cluster 
   bind 10.10.100.100:5672
   option tcplog
   mode tcp
   timeout client 1h
   timeout server 1h
   option clitcpka
   balance roundrobin
   server node1 10.10.100.101:5672 check inter 5s rise 2 fall 3
   server node2 10.10.100.102:5672 check inter 5s rise 2 fall 3
   server node3 10.10.100.103:5672 check inter 5s rise 2 fall 3