0

我正在尝试按照此处的 RabbitMQ 文档中的步骤使用 SSL 在 Windows 上进行集群。我注意到,在设置了这些步骤中定义的环境变量后,“rabbitmqctl status”命令开始失败。执行“rabbitmqctl status”时出现以下错误:

Error: unable to connect to node 'rabbit@server1': nodedown

我已经将 RabbitMQ 配置为使用 TLS 1.2 并验证它可以正常工作。我确保我的 Erlang 18 cookie 在机器上的用户目录 C:\users\me 和 C:\Windows 中是相同的,但错误仍然存​​在,并且正在阻止其他服务器与其集群。文档说 Windows SSL 集群设置“即将推出”......这是我迄今为止在 server1 上采取的步骤。我认为Erlang 想要路径中的正斜杠 - 这与 rabbit.config SSL 设置相匹配。

  1. 通过命令“type server\cert.pem server\key.pem > server\rabbit.pem”将我的 server\cert.pem 和 server\key.pem 的内容合并到 rabbit.pem
  2. 创建环境变量 ERL_SSL_PATH 并设置为:“C:/Program Files/erl7.0/lib/ssl-7.0/ebin”
  3. 创建环境变量 RABBITMQ_CTL_ERL_ARGS 并设置为: -pa "%ERL_SSL_PATH%" -proto_dist inet_tls -ssl_dist_opt server_certfile C:/OpenSSL-Win64/server/rabbit.pem -ssl_dist_opt server_secure_renegotiate true client_secure_renegotiate true
  4. 创建环境变量 RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS 并设置为与 RABBITMQ_CTL_ERL_ARGS 相同的值
  5. 将 C:\Windows.erlang.cookie 中的 erlang cookie 复制到我的本地用户配置文件目录。
  6. 使用 rabbitmq-service start 重启 rabbit
  7. 此时,在 server1 上,“rabbitmqctl status”不再起作用。尝试将 server2 加入 server1 会导致“节点关闭”错误。

编辑 1:我无法在文档中开始要求 Erlang 在 Windows 上报告其 SSL 目录以正确设置 ERL_SSL_PATH。Erlang 安装在我服务器上的 C:\Program Files\erl7.0 中。

编辑 2:使用 werl.exe(在 C:\Program Files\erl7.0\bin\werl.exe),我能够发出命令“Foo=io:format(code:lib_dir(ssl, ebin))。 " 并将路径报告为:c:/Program Files/erl7.0/lib/ssl-7.0/ebin。但是,这似乎不是这个问题的原因,因为这已经是我正在使用的。

谢谢,安迪

4

1 回答 1

0

要使环境更改在 Windows 上生效,必须重新安装该服务。重新启动服务是不够的。这可以使用安装程序或在具有管理员权限的命令行上完成(来源

这将做:

rabbitmq-service.bat stop
rabbitmq-service.bat remove
rabbitmq-service.bat install
rabbitmq-service.bat start

此外,如果您正在处理的节点已关闭,而其他集群节点正在运行,则可能会假定它们的状态已不同步。在这种情况下,节点可能无法启动,您可能需要:

rabbitmqctl force_boot

检查日志以确认。(在 %RABBIT_BASE%\log\rabbit@server.log)


迟到的答案,但希望这可以帮助搜索者......

于 2017-06-17T11:55:01.703 回答