17

Windows 2008 R2 で Erlang OTP 17.1 を使用して RabbitMQ v3.3.5 を実行しています。私の開発環境と QA 環境はスタンドアロンです。私のステージング環境と本番環境はクラスター化されています。

この 1 つの問題は、RabbitMQ サービスが実行されている場所で頻繁に発生していることに気付きました。RabbitMQ 管理コンソールはすべてを認識していますが、コマンド ラインから rabbitmqctl を実行しようとすると、ノードがダウンしているというエラーで失敗します (ローカルで試してみました)。リモートサーバー)。

Windows サービスを再起動すると、この問題は解決します。

RabbitMQ エラー ログにエラー メッセージが表示されません。最後のメッセージは、ノードが稼働していることを示していました。

以下は、ステージング Windows クラスターのノード 2 で最近発生した問題の出力例です。

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

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

attempted to contact: [rabbit@MYSERVER2]

rabbit@MYSERVER2:
  * connected to epmd (port 4369) on MYSERVER2
  * epmd reports: node 'rabbit' not running at all
                  no other nodes on MYSERVER2
  * suggestion: start the node

current node details:
- node name: rabbitmqctl2199771@MYSERVER2
- home dir: C:\Users\RabbitMQ
- cookie hash: mn6OaTX9mS4DnZaiOzg8pA==

この時点で、RabbitMQ サービスを再起動してから再試行します

PS C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.3.5\sbin> .\rabbitmqctl.bat status
Status of node rabbit@MYSERVER2...
[{pid,3784},
 {running_applications,
     [{rabbitmq_management_agent,"RabbitMQ Management Agent","3.3.5"},
      {rabbit,"RabbitMQ","3.3.5"},
      {os_mon,"CPO  CXC 138 46","2.2.15"},
      {mnesia,"MNESIA  CXC 138 12","4.12.1"},
      {xmerl,"XML parser","1.3.7"},
      {sasl,"SASL  CXC 138 11","2.4"},
      {stdlib,"ERTS  CXC 138 10","2.1"},
      {kernel,"ERTS  CXC 138 10","3.0.1"}]},
 {os,{win32,nt}},
 {erlang_version,
     "Erlang/OTP 17 [erts-6.1] [64-bit] [smp:4:4] [async-threads:30]\n"},
 {memory,
     [{total,35960208},
      {connection_procs,2704},
      {queue_procs,5408},
      {plugins,111936},
      {other_proc,13695792},
      {mnesia,102296},
      {mgmt_db,0},
      {msg_index,21816},
      {other_ets,884704},
      {binary,25776},
      {code,16672826},
      {atom,602729},
      {other_system,3834221}]},
 {alarms,[]},
 {listeners,[{clustering,25672,"::"},{amqp,5672,"::"},{amqp,5672,"0.0.0.0"}]},
 {vm_memory_high_watermark,0.4},
 {vm_memory_limit,3435787059},
 {disk_free_limit,50000000},
 {disk_free,74911649792},
 {file_descriptors,
     [{total_limit,8092},
      {total_used,4},
      {sockets_limit,7280},
      {sockets_used,2}]},
 {processes,[{limit,1048576},{used,139}]},
 {run_queue,0},
 {uptime,5}]
...done.

これの原因と、状況を自動的に検出する方法について何か考えはありますか?

これは特に Windows で RabbitMQ を実行する際の問題ですか?

4

4 に答える 4

10

ホスト名を解決しようとしている場合、ホスト名は大文字と小文字を区別しません。たとえば、LOCALHOSTlocalhostは同じホストです。

ただし、Erlang がノードの名前を作成する場合 (たとえばrabbit@<hostname>、RabbitMQ の場合)、この名前は大文字と小文字が区別されます。同じホスト上で実行されている場合でも、rabbit@LOCALHOSTrabbit@localhostは 2 つの異なるノード名です。

最近、私たち (RabbitMQ チーム) は、Windows で、RabbitMQ 用に構築されたノード名が一貫していないことを発見しました。そのため、RabbitMQ が Windows サービスとして開始され、名前を付けることができrabbit@MYHOSTてもrabbitmqctl到達しようとしてrabbit@myhost失敗することがありました。

RabbitMQ 3.6.0 以降、ノード名は一貫している必要があります。

于 2016-03-22T16:03:44.993 に答える