2012-04-12 34 views
3

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

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

基本上我卡住了,无法继续进行群集设置,直到我解决了此问题。任何帮助表示赞赏。

更新:从RabbitMQ收到答案: “rabbitmqctl将从用户主目录中选取cookie,而服务将从C:\ windows中选取它,因此您需要将它们相互同步,如和其他机器一样。“

这基本上意味着cookie文件需要在两个地方重新修复:C:\ Windows和current_user。

回答

3

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

当cookie不匹配错误的样子

C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-2.8.2\sbin>rabbitmqctl.bat status 
Status of node '[email protected]' ... 
Error: unable to connect to node '[email protected]': nodedown 

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

nodes in question: ['[email protected]'] 

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

current node details: 
- node name: '[email protected]' 
- home dir: U:\ 
- cookie hash: Vp52cEvPP1PukagWi5S/fQ== 

有Windows上的RabbitMQ饼干多了一个疑难杂症......如果你有一个%HOMEDIR%%HOMEPATH%环境变量(如我们在做我们的当前的测试环境,并将homedir设置为U:\),那么RabbitMQ将在那里获取cookie,如果没有,它将创建一个并写入其中。这让我在试图完成这项工作时将我的头撞在桌上很久。一旦我发现这个问题,显然cookie文件是问题(如文件记录),他们只是在一个奇怪的位置(没有记录AFAIK)。

希望这可以解决在Windows上设置RabbitMQ Clustering的痛苦。