【RabbitMQ学习笔记#10】单台主机上安装RabbitMQ集群

在阅读这一篇博客之前,请先阅读《【RabbitMQ学习笔记#6】安装单节点RabbitMQ 》 ,在该博客中说明了如何在CentOS 7上安装RabbitMQ。

RabbitMQ在单主机上安装RabbitMQ集群,最主要的问题就是插件问题,因为插件会监听专门的端口来提供服务(如RabbitMQ Management会默认使用15672端口)。因此单主机上安装集群可以从以下几方面来考虑:

1、在没有插件的环境中安装集群;

2、在集群中一个某个Node上启用插件;

3、在集群中所有节点启用插件。

一、在没有插件的环境中安装集群

1、禁用插件

《【RabbitMQ学习笔记#6】安装单节点RabbitMQ 》 中,只启用了RabbitMQ Management插件,因此我们可以通过下面的命令行禁用插件:

rabbitmq-plugins disable rabbitmq_management

或者使用下来的命令禁用所有插件:

rabbitmq-plugins disable $(rabbitmq-plugins list -E | awk '{print $2}')

2、关闭已打开的RabbitMQ进程

查看进程:

ps -ef | grep rabbitmq

然后使用 kill -9 pid关闭rabbitmq进程

3、安装集群

安装集群可以通过如下脚本:

RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit rabbitmq-server -detached
RABBITMQ_NODE_PORT=5673 RABBITMQ_NODENAME=rabbit_1 rabbitmq-server -detached
RABBITMQ_NODE_PORT=5674 RABBITMQ_NODENAME=rabbit_2 rabbitmq-server -detached

rabbitmqctl -n rabbit_1@localhost stop_app
rabbitmqctl -n rabbit_1@localhost reset
rabbitmqctl -n rabbit_1@localhost join_cluster rabbit@localhost
rabbitmqctl -n rabbit_1@localhost start_app

rabbitmqctl -n rabbit_2@localhost stop_app
rabbitmqctl -n rabbit_2@localhost reset
#--ram指定rabbit_2为内存节点
rabbitmqctl -n rabbit_2@localhost join_cluster --ram rabbit@localhost
rabbitmqctl -n rabbit_2@localhost start_app

rabbitmqctl cluster_status

结果如图所示:

二、仅在一个Node上启用插件

在文件RABBITMQ_ENABLED_PLUGINS_FILE中存放了所有启用的插件名称,文件RABBITMQ_ENABLED_PLUGINS_FILE默认位置是/etc/rabbitmq/enabled_plugins。可以通过Node指定不同的RABBITMQ_ENABLED_PLUGINS_FILE文件位置。

1、启用RabbitMQ Management插件

rabbitmq-plugins enable rabbitmq_management

2、关闭已打开的RabbitMQ进程

查看进程:

ps -ef | grep rabbitmq

然后使用 kill -9 pid关闭rabbitmq进程

3、执行下列脚本为rabbit_1@localhost,rabbit_2@localhost添加配置文件和RABBITMQ_ENABLED_PLUGINS_FILE文件:

cp -rf /etc/rabbitmq/ /etc/rabbitmq1/
cp -rf /etc/rabbitmq/ /etc/rabbitmq2/

清除/etc/rabbitmq1/enabled_plugins,/etc/rabbitmq2/enabled_plugins文件中的内容。

4、执行以下脚本,安装集群:

RABBITMQ_NODE_PORT=5672 RABBITMQ_ENABLED_PLUGINS_FILE=/etc/rabbitmq/enabled_plugins  RABBITMQ_NODENAME=rabbit rabbitmq-server -detached
RABBITMQ_NODE_PORT=5673 RABBITMQ_ENABLED_PLUGINS_FILE=/etc/rabbitmq1/enabled_plugins RABBITMQ_NODENAME=rabbit_1 rabbitmq-server -detached
RABBITMQ_NODE_PORT=5674 RABBITMQ_ENABLED_PLUGINS_FILE=/etc/rabbitmq2/enabled_plugins RABBITMQ_NODENAME=rabbit_2 rabbitmq-server -detached

rabbitmqctl -n rabbit_1@localhost stop_app
rabbitmqctl -n rabbit_1@localhost reset
rabbitmqctl -n rabbit_1@localhost join_cluster rabbit@localhost
rabbitmqctl -n rabbit_1@localhost start_app

rabbitmqctl -n rabbit_2@localhost stop_app
rabbitmqctl -n rabbit_2@localhost reset
rabbitmqctl -n rabbit_2@localhost join_cluster rabbit@localhost
rabbitmqctl -n rabbit_2@localhost start_app

rabbitmqctl cluster_status

三、全部节点启用插件

1、先执行以下脚本是所有节点启用插件

rm -rf /etc/rabbitmq/ /etc/rabbitmq1/
rm -rf /etc/rabbitmq/ /etc/rabbitmq2/
cp -rf /etc/rabbitmq/ /etc/rabbitmq1/
cp -rf /etc/rabbitmq/ /etc/rabbitmq2/

2、执行下面脚本启动安装集群:

RABBITMQ_NODE_PORT=5672 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15672}]"  RABBITMQ_NODENAME=rabbit rabbitmq-server -detached
RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]"  RABBITMQ_NODENAME=rabbit_1 rabbitmq-server -detached
RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15674}]"  RABBITMQ_NODENAME=rabbit_2 rabbitmq-server -detached

rabbitmqctl -n rabbit_1@localhost stop_app
rabbitmqctl -n rabbit_1@localhost reset
rabbitmqctl -n rabbit_1@localhost join_cluster rabbit@localhost
rabbitmqctl -n rabbit_1@localhost start_app

rabbitmqctl -n rabbit_2@localhost stop_app
rabbitmqctl -n rabbit_2@localhost reset
rabbitmqctl -n rabbit_2@localhost join_cluster rabbit@localhost
rabbitmqctl -n rabbit_2@localhost start_app

rabbitmqctl cluster_status

3、执行结果

四、总结

在全部节点启用插件,我们还可以通过指定和修改RABBITMQ_CONFIG_FILE文件来实现。RABBITMQ_CONFIG_FILE文件默认位置/etc/rabbitmq/rabbitmq.config。

【推荐阅读】

File and Directory Locations

Clustering Guide

0

发表评论

微信扫一扫,分享到朋友圈

【RabbitMQ学习笔记#10】单台主机上安装RabbitMQ集群
返回顶部