在Windows服务器上设置RabbitMQ群集

问题描述 投票:3回答:1

我正在尝试在Windows服务器上设置RabbitMQ集群,这需要使用共享的Erlang cookie文件。根据文档,我要做的就是确保不同计算机上的根目录包含相同的.erlang.cookie文件。因此,我所做的就是在两台计算机上都找到了这些文件,并用相同的共享版本覆盖了它们。

此后,所有rabbitmqctl命令在具有新文件版本的计算机上均失败,并显示“无法连接到节点...”错误消息。我试图重新启动RabbitMQ Windows服务,但仍然rabbitmqctl抱怨。我什至在该计算机上重新安装了RabbitMQ,但随后.erlang.cookie被重置回旧版本。每当我尝试使用新版本的Cookie文件时,rabbitmqctl都会失败。当我恢复旧版本时,它工作正常。

基本上,我被困住了,在解决此问题之前,无法继续进行群集设置。任何帮助表示赞赏。

更新:收到RabbitMQ的答复:“ rabbitmqctl将从用户主目录中拾取cookie,而服务将从C:\ windows中拾取它。因此,您将需要使它们彼此以及与另一台计算机同步。”

这基本上意味着Cookie文件需要在两个位置进行重排:C:\ Windows和current_user。

windows erlang rabbitmq cluster-computing
1个回答
3
投票

您具有上述正确性。服务将使用C:\Windows处的cookie,当您使用rabbitmqctl.bat查询状态时,该服务将使用用户目录(%USERPROFILE%)中的cookie。

当cookie与错误不匹配时,看起来像

C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-2.8.2\sbin>rabbitmqctl.bat status
Status of node 'rabbit@PC-FOOBAR' ...
Error: unable to connect to node 'rabbit@PC-FOOBAR': nodedown

DIAGNOSTICS
===========

nodes in question: ['rabbit@PC-FOOBAR']

hosts, their running nodes and ports:
- PC-FOOBAR: [{rabbit,49186},{rabbitmqctl30566,63150}]

current node details:
- node name: 'rabbitmqctl30566@pc-foobar'
- home dir: U:\
- cookie hash: Vp52cEvPP1PukagWi5S/fQ==

[Windows上还有更多RabbitMQ Cookie的陷阱……如果您有%HOMEDIR%%HOMEPATH%环境变量(就像我们在当前测试环境中所做的那样,并且将homedir设置为U:\以上),则RabbitMQ将在那里获得cookie,如果没有,则将其补齐并写入其中。当我试图使它工作时,这使我在桌子上敲了很长时间。一旦我发现此问题,就很明显Cookie文件是问题所在(如所记录),它们只是在一个奇怪的位置(未记录为AFAIK)。

希望这可以解决在Windows上设置RabbitMQ群集的麻烦。

© www.soinside.com 2019 - 2024. All rights reserved.