RabbitMQ作为消息中间件,在学习过程中,必然会接触RabbitMQ集群,但是可能硬件有限,无法像实际项目中一个节点安装一个RabbitMQ实例,可以选择在单机上安装多实例。这篇文章就介绍一下如何在CentOS6 单机上安装多实例。
前置条件
在安装集群之前,需要在虚拟机上安装好Erlang环境,以及RabbitMQ,安装方式参考这篇文章。
此外,还要规划好每个rabbitmq实例的节点名和端口,因为每个 rabbitmq 实例需要设置不同的 node name 和 node port。
假设规划的三个实例的node name 和 node port 分别是
node name | node port |
rabbit01 | 5672 |
rabbit02 | 5673 |
rabbit03 | 5674 |
安装步骤
配置NodeName和NodePort
配置NodeName的NodePort有两种方式,分别是命令行方式和配置文件的方式。
1. 命令行方式
分别给三个实例配置各自的端口号,在启动的时候,用一下命令给每个实例指定,key都是大写。
RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit01 ./rabbitmq-server
RABBITMQ_NODE_PORT=5673 RABBITMQ_NODENAME=rabbit02 ./rabbitmq-server
RABBITMQ_NODE_PORT=5674 RABBITMQ_NODENAME=rabbit03 ./rabbitmq-server
2. 配置文件方式
在 {rabbitmq_home}/etc/rabbit01/rabbitmq-env.conf 文件中添加如下配置,注意没有前缀RABBITMQ。
NODENAME=rabbit01@localhost
NODE_PORT=5672
在启动的时候,可能会报错,如果报错,多数是因为端口冲突导致的,如果开启了rabbitmq_management 插件,需要为每个实例的rabbitmq_management 插件配上端口。
配置rabbitmq_management 插件端口的方式同样命令行方式和配置文件的方式。
1. 命令行方式
RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit01 RABBITMQ_SERVER_START_ARGS=”-rabbitmq_management listener [{port,15672}]”./rabbitmq-server
2. 配置文件方式
在 {rabbitmq_home}/etc/rabbit01/rabbitmq.conf 文件中添加如下配置,注意这里的配置文件和上面的不是一个配置文件。
# management plugin
management.tcp.port=15672
启动节点
配置完成后,启动三个实例,如果是命令行方式配置,其实已经启动好了。如果是配置文件方式,则可以使用下面的命令启动。
RABBITMQ_CONF_ENV_FILE={rabbitmq_home}/etc/rabbitmq/rabbitmq-env.conf ./rabbitmq-server
加入集群
默认情况下,每个节点组成只有自己的单节点集群,将三个实例组成一个集群,需要将其中两个节点加入到另外一个节点中,这里我们将 rabbit02 和 rabbit03 加入rabbit01 中,分别对rabbit02 和 rabbit03 执行下面的命令。
./rabbitmqctl -n rabbit02@localhost stop_app # 停止服务
./rabbitmqctl -n trbbit02@localhost reset # 重置
./rabbitmqctl -n rabbit02@localhost join_cluster rabbit01@localhost # 加入集群
./rabbitmqctl -n rabbit02@localhost start_app #重启服务./rabbitmqctl -n rabbit03@localhost stop_app # 停止服务
./rabbitmqctl -n trbbit03@localhost reset # 重置
./rabbitmqctl -n rabbit03@localhost join_cluster rabbit01@localhost # 加入集群
./rabbitmqctl -n rabbit03@localhost start_app #重启服务
这样,单台虚拟机中搭建RabbitMQ集群就完成了。后面将介绍项目中搭建集群的方式,也就是多机多节点的方式。