【发布时间】:2019-04-02 18:07:51
【问题描述】:
拜托,我需要你的帮助。
自从上周尝试在 Windows 服务器上配置 RabbitMQ 集群以来,我一直在苦苦挣扎。我重新安装了 RabbitMQ 3.7.8 和 ErlangOTP 21-1 超过 15 次试图找出问题并修复它,但不幸的是,我所有的尝试都失败了。
我的环境: 三台带操作系统的虚拟机:windows server 2012
环境变量设置:
• ERLANG_HOME = C:\Program Files\erl10.1
• path: C:\Program Files\Handle
• %RABBITMQ_BASE% = c:\RabbitMQ
• %RABBITMQ_CONFIG_FILE% = %RABBITMQ_BASE%
• RABBITMQ_NODENAME = masternode
• Server names: RabbitMQ01 “masternode” , RabbitMQ02, RabbitMQ03
• Adding IP & hots name “masternode” in the host file for name resolution (C:\Windows\System32\drivers\etc\hosts)
• Setting RabbitMQ configuration file “advanced.config” in c:\users\USERNAME\AppData\Roaming\RabbitMQ” to enable users to login to RabbitMQ management remotely by adding the following setting
[
{rabbit,
[
{tcp_listeners, [5672]},
{loopback_users, []},
{num_tcp_acceptors, 100}
]
}
].
安装步骤:(针对每台服务器)
1. After setting the environment variables, I restarted the machine. Then
2. Install ErlangOTP 21-1
3. Install RabbitMQ 3.7.8 server
4. Enable plugins - rabbitmq-plugins.bat enable rabbitmq_management
以上服务器安装完成后,我开始配置集群
- 首先,我通过 ping Rabbit@masternode 验证了从 RabbitMQ02, 02 可以访问 masternode 并且成功。
-
使用以下命令停止 RabbitMQ 服务器和应用程序
rabbitmq-服务停止 rabbitmqctl stop_app
- 将 .erlang.cookie 从主节点“path=c:\windows\system32\config\systemprofile”复制到 RabbitMQ02“path=c:\windows\system32\config\systemprofile”和“path=c:\users\USERNAME” ”。
通过执行以下命令启动 RabbitMQ 服务和应用程序
rabbitmqctl start_app rabbitmq-服务启动
- 通过执行此命令“rabbitmqctl stop_app”再次停止应用程序
- 我开始将 RabbitMQ02 加入到主节点
rabbitmqctl join_cluster rabbit@masternode(小盒子)
一旦达到这一点,我会在 RabbitMQ02 上收到以下错误。
C:\Program Files\RabbitMQ 服务器\rabbitmq_server-3.7.8\sbin>rabbitmqctl join_cluster rabbit@masternode 错误:无法在节点“rabbit@rhrabbitmq02”上执行操作。请参见 诊断信息和建议如下。
最常见的原因是:
- 目标节点无法访问(例如,由于主机名解析、TCP 连接 r 防火墙问题)
- CLI 工具无法通过服务器进行身份验证(例如,由于 CLI 工具的 Erlang cookie 与服务器的不匹配)
- 目标节点未运行
除了以下诊断信息:
- 请参阅http://rabbitmq.com/document 上的 CLI、集群和网络指南 ation.html 了解更多
- 在节点rabbit@rhrabbitmq02上查询服务器日志
诊断
尝试联系:[rabbit@rhrabbitmq02]
兔子@rhrabbitmq02: * 连接到 rhrabbitmq02 上的 epmd(端口 4369) * epmd 报告节点“兔子”使用端口 25672 进行节点间和 CLI 工具流量 我知道了 * TCP 连接成功但 Erlang 分发失败
- 身份验证失败(被远程节点拒绝),请检查Erlang 饼干
当前节点详情: * 节点名称:rabbitmqcli41@rhrabbitmq02 * 有效用户的主目录:C:\Users\admin * Erlang cookie 哈希:pndBksvQokXyiSqBdnne/g==
主节点状态:
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.8\sbin>rabbitmqctl status
Status of node masternode@rhrabbitmq01 ...
[{pid,4008},
{running_applications,
[{rabbitmq_management,"RabbitMQ Management Console","3.7.8"},
{rabbitmq_management_agent,"RabbitMQ Management Agent","3.7.8"},
{rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.7.8"},
{rabbit,"RabbitMQ","3.7.8"},
{amqp_client,"RabbitMQ AMQP Client","3.7.8"},
{rabbit_common,
"Modules shared by rabbitmq-server and rabbitmq-erlang-client",
"3.7.8"},
{os_mon,"CPO CXC 138 46","2.4.6"},
{cowboy,"Small, fast, modern HTTP server.","2.2.2"},
{mnesia,"MNESIA CXC 138 12","4.15.5"},
{cowlib,"Support library for manipulating Web protocols.","2.1.0"},
{lager,"Erlang logging framework","3.6.3"},
{syslog,"An RFC 3164 and RFC 5424 compliant logging framework.","3.4.3"},
{ranch_proxy_protocol,"Ranch Proxy Protocol Transport","1.5.0"},
{jsx,"a streaming, evented json parsing toolkit","2.8.2"},
{ranch,"Socket acceptor pool for TCP protocols.","1.5.0"},
{ssl,"Erlang/OTP SSL application","9.0.2"},
{public_key,"Public key infrastructure","1.6.2"},
{asn1,"The Erlang ASN1 compiler version 5.0.7","5.0.7"},
{inets,"INETS CXC 138 49","7.0.2"},
{xmerl,"XML parser","1.3.18"},
{recon,"Diagnostic tools for production use","2.3.2"},
{crypto,"CRYPTO","4.3.3"},
{goldrush,"Erlang event stream processor","0.1.9"},
{compiler,"ERTS CXC 138 10","7.2.5"},
{syntax_tools,"Syntax tools","2.1.6"},
{sasl,"SASL CXC 138 11","3.2.1"},
{stdlib,"ERTS CXC 138 10","3.6"},
{kernel,"ERTS CXC 138 10","6.1"}]},
{os,{win32,nt}},
{erlang_version,
"Erlang/OTP 21 [erts-10.1] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:64
]\n"},
{memory,
[{connection_readers,0},
{connection_writers,0},
{connection_channels,0},
{connection_other,29212},
{queue_procs,0},
{queue_slave_procs,0},
{plugins,1192744},
{other_proc,26188552},
{metrics,195524},
{mgmt_db,337648},
{mnesia,75088},
{other_ets,2748464},
{binary,181696},
{msg_index,27840},
{code,27573597},
{atom,1131721},
{other_system,9846202},
{allocated_unused,9377056},
{reserved_unallocated,0},
{strategy,rss},
{total,[{erlang,69528288},{rss,78905344},{allocated,78905344}]}]},
{alarms,[]},
{listeners,
[{clustering,25672,"::"},
{amqp,5672,"::"},
{amqp,5672,"0.0.0.0"},
{http,15672,"::"},
{http,15672,"0.0.0.0"}]},
{vm_memory_calculation_strategy,rss},
{vm_memory_high_watermark,0.4},
{vm_memory_limit,3435785420},
{disk_free_limit,50000000},
{disk_free,86038073344},
{file_descriptors,
[{total_limit,8092},
{total_used,2},
{sockets_limit,7280},
{sockets_used,0}]},
{processes,[{limit,1048576},{used,399}]},
{run_queue,1},
{uptime,6087},
{kernel,{net_ticktime,60}}]
【问题讨论】:
-
RabbitMQ 没有在
masternode上运行 - 它就在输出中。在masternode上,rabbitmqctl status的输出是什么? -
多次安装和卸载RabbitMQ后发现cookie文件名看起来不正常,文件名看起来像“.erlang”而不是“.erlang.cookie” 我不知道为什么吗?
-
对不起,我复制了我从主节点卸载 RabbitMQ 的信息。现在我重新安装 RabbitMQ 并将 cookie 复制到 RabbitMQ02,然后我尝试启动 App 以查看它是否可以正常工作,但它没有。这是错误消息。
-
消息已更新以反映实际的错误消息。
-
在加入命令失败后,我无法在 RabbitMQ02 中启动 RabbitMQ 应用程序或执行与主节点的加入。
标签: rabbitmq