十、单机搭建RabbitMQ集群

2019-12-11  本文已影响0人  lancelea

设置 RabbitMQ 集群是非常简单的。简单到可以在你的开发系统中设置完整功能的集群。这对于在测试环境测试实际生产中遇到的失败场景是很便利的。现在来动手搭建 RabbitMQ 集群吧。

Step 1:关闭节点,关闭插件

Step 2:启动节点

如果不用额外参数的话,使用rabbitmqserver命令启动节点会默认使用节点名称rabbit和监听端口号5672。如果你尝试在同台机器用这个方法启动其他节点的话,就会因为节点名称和端口冲突导致启动失败。因此在每次调用rabbitmq-server命令前,我们通过设置RABBITMQ_NODENAMERABBITMQ_NODE_PORT环境变量来明确指定唯一的节点名称和端口号。

#启动第一个节点
$ RABBITMQ_NODENAME=rabbit_one RABBITMQ_NODE_PORT=5672 ./sbin/rabbitmq-server -detached

#启动第二个节点
$ RABBITMQ_NODENAME=rabbit_two RABBITMQ_NODE_PORT=5673 ./sbin/rabbitmq-server -detached

#启动第三个节点
$ RABBITMQ_NODENAME=rabbit_three RABBITMQ_NODE_PORT=5674 ./sbin/rabbitmq-server -detached

现在在开发系统上运行着三个 Rabbit 节点,分别是 rabbit_one、rabbit_two 和 rabbit_three,每个节点都会有系统的主机名,添加在@后。但是每个节点仍然是独立节点,拥有自己的元数据,并且不知道其他节点的存在。

设置集群

集群中的第一个节点将初始元数据带入集群中,并且无须被告知加入。而第二个和之后的节点将加入它并且获取它的元数据。

要加入第二个和第三个节点,首先需要停止 Erlang 节点上运行的 RabbitMQ 应用程序,并重设(清空)它们的元数据。这样它们才可以被加入并且获取集群的元数据。rabbitmqctl 工具会帮你和每个节点通信并完成以上的任务。

$ ./sbin/rabbitmqctl -n rabbit_two@localhost stop_app
关闭应用程序反馈信息
$ ./sbin/rabbitmqctl -n rabbit_two@localhost reset
清空节点状态反馈信息
./sbin/rabbitmqctl -n rabbit_two@localhost join_cluster rabbit_one@localhost --ram
加入集群反馈信息
-n参数指定任何RabbitMQ节点,不管是在你的开发系统上或者是网络上任何可以连接的其他系统上。
--ram指定为内存节点

disc:磁盘节点;ram:内存节点

$ ./sbin/rabbitmqctl -n rabbit_one@localhost start_app
加入集群后启动应用程序反馈信息
./sbin/rabbitmqctl -n rabbit_one cluster_status
集群状态信息

注意:记住 Erlang 节点间通过认证 Erlang cookie 的方式来允许互相通信。因为 rabbitmqctl 使用 Erlang OTP 通信机制来和 Rabbit 节点通信,运行 rabbitmqctl 的机器和所要连接的 Rabbit 节点必须使用相同的 Erlang cookie。否则会遇到错误。

现在使用相同的命令将第三个节点加入到集群当中,唯一不同的是-n参数指定为第三个节点。之后可以连接到这三个节点中的任何一个,并且开始创建队列,发布消息或者执行其他任何AMQP任务。

上一篇 下一篇

猜你喜欢

热点阅读