RabbitMQ:如何设置集群?

时间:2017-07-25 03:00:10

标签: rabbitmq

我正在尝试在单台PC上设置RabbitMQ群集 如何设置 RabbitMQ 群集?与localhost:15672相似

1 个答案:

答案 0 :(得分:1)

澄清我的答案范围:

  • 通过"单个PC",我假设您想要在主机操作系统上运行所有节点,而不是在某种容器或VM中运行。
  • 将这些RabbitMQ节点作为单独的Windows服务运行可能是可能的,但我不知道如何设置Windows服务,所以我将跳过这一点,并且只讨论手动启动RabbitMQ。无论如何,在同一主机上运行多个节点只与开发和测试相关,因此我认为这很好。

我不是Windows用户,因此下面的示例未经测试,可能包含错误。很抱歉,如果这不是开箱即用的。

步骤1:在单个主机上启动多个节点

要在同一主机上启动多个节点,无论您是否计划对它们进行群集,都必须为每个节点提供:

  • 一个独特的名字;
  • 专用侦听TCP端口。

为此,您需要设置多个environment variables。例如,要启动两个节点:

  • 对于节点1:

    set RABBITMQ_NODENAME=rabbit1@%COMPUTERNAME%
    set RABBITMQ_NODE_PORT=5672
    
  • 对于节点2:

    set RABBITMQ_NODENAME=rabbit2@%COMPUTERNAME%
    set RABBITMQ_NODE_PORT=5673
    

每次您想要使用rabbitmqctl来管理其中一个节点时,您都​​必须指定其名称。例如,这将为您提供节点2的状态:

rabbitmqctl -n rabbit2@%COMPUTERNAME% status

RABBITMQ_NODE_PORT的值是AMQP侦听TCP端口。在此示例中,节点1将默认AMQP端口保持为5672,后续节点将使用以下端口(5673,依此类推)。 RabbitMQ自动计算来自这些AMQP端口的其他侦听端口:

  • 管理用户界面将监听RABBITMQ_NODE_PORT + 10000(例如节点2的15673)。因此,网址类似于http://myhost:15673/
  • Erlang分发将在RABBITMQ_NODE_PORT + 20000(例如节点2的25673)。 rabbitmqctl使用此端口,并在集群后进行节点间通信。

第2步:群集节点

现在你有几个节点正在运行,你可以像往常一样使用rabbitmqctl来集群这些节点:

rabbitmqctl -n rabbit2@%COMPUTERNAME% stop_app
rabbitmqctl -n rabbit2@%COMPUTERNAME% join_cluster rabbit1@%COMPUTERNAME%
rabbitmqctl -n rabbit2@%COMPUTERNAME% start_app