可以将 RabbitMQ 配置为使用不同的端口和特定的网络接口
对等节点
一些分布式系统 具有领导节点和从节点。对于 RabbitMQ 来说,通常并非如此。 RabbitMQ 集群中的所有节点都是平等的对等节点:RabbitMQ 核心中没有特殊的节点。 当仲裁队列和插件时,本主题变得更加微妙 被考虑在内,但出于大多数意图和目的, 应将所有群集节点视为相等
节点间的身份验证
RabbitMQ 节点和 CLI 工具(例如 rabbitmqctl)使用 cookie 以确定是否允许他们与 彼此。为了使两个节点能够通信,它们必须具有 同样的共享密钥称为 Erlang cookie。cookie只是一个字母数字字符的字符串,最大为 255 个字符。 它通常存储在本地文件中。该文件必须仅 所有者可访问(例如,具有 600 或类似的 UNIX 权限)。 每个群集节点必须具有相同的 Cookie。如果该文件不存在,Erlang VM 将尝试创建 一个在 RabbitMQ 服务器时随机生成的值 启动。在开发中使用此类生成的 cookie 文件是合适的 仅限环境。在 UNIX 系统上,cookie 通常为 位于 /var/lib/rabbitmq/.erlang.cookie
三、部署
1、启动独立节点
RabbitMQ CLI 工具(如 rabbitmq-diagnostics 和 rabbitmqctl)提供了检查资源和集群范围状态的命令。
通过重新配置现有 RabbitMQ 来设置集群 节点加入群集配置。因此,第一步 就是以正常方式在所有节点上启动 RabbitMQ:
# on rabbit1
rabbitmq-server -detached
# on rabbit2
rabbitmq-server -detached
# on rabbit3
rabbitmq-server -detached
这将创建三个独立的 RabbitMQ 代理, 每个节点上一个,如 cluster_status 命令所确认的那样:
# on rabbit1
rabbitmqctl cluster_status
# => Cluster status of node rabbit@rabbit1 ...
# => [{nodes,[{disc,[rabbit@rabbit1]}]},{running_nodes,[rabbit@rabbit1]}]
# => ...done.
# on rabbit2
rabbitmqctl cluster_status
# => Cluster status of node rabbit@rabbit2 ...
# => [{nodes,[{disc,[rabbit@rabbit2]}]},{running_nodes,[rabbit@rabbit2]}]
# => ...done.
# on rabbit3
rabbitmqctl cluster_status
# => Cluster status of node rabbit@rabbit3 ...
# => [{nodes,[{disc,[rabbit@rabbit3]}]},{running_nodes,[rabbit@rabbit3]}]
# => ...done.
从 rabbitmq-server shell 脚本启动的 RabbitMQ 代理的节点名称是 rabbit@shorthostname,其中 short 节点名称为小写(如rabbit@rabbit1, 以上)。在 Windows 上,如果使用 rabbitmq-server.bat