私はrabbitMQを杯で使用していますが、今朝問題が発生しました。 rabbitmqctl statusを実行すると、次のことがわかります。
C:\Users\BuildnTest2>rabbitmqctl status
Status of node 'rabbit@BUILDNTEST2-PC' ...
Error: unable to connect to node 'rabbit@BUILDNTEST2-PC': nodedown diagnostics:
- nodes and their ports on BUILDNTEST2-PC: [{rabbit,49164},
{rabbitmqctl27693,49286}]
- current node: 'rabbitmqctl27693@BuildnTest2-PC'
- current node home dir: C:\Users\BuildnTest2
- current node cookie hash: cSYB8tsT4mGGZHSUGQi08w==
うさぎのトラブルシューティングページにアクセスすると: http://www.rabbitmq.com/troubleshooting.html 彼らは言う:
then you should make sure the erlang cookies are the same.
これは何を意味し、どのように達成されますか?
グーグルはこのフォーラムのスレッドを発見しました http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2011-January/010806.html この問題を解決するための指示があると主張しますが、悲しいかな答えがないウサギのサイトに戻ります。
RabbitMQサイトでの特定の質問に対する最終的な回答は http://www.rabbitmq.com/clustering.html にあります
ただし、ステータスダンプからは、これが問題であるかのようには見えません。ノードがダウンしているように見えます。クラスターを実行していないと仮定して正しいですか?接続できないノードが、コマンドを実行しているノードと同じであるという事実は、これを示しています。
RabbitMQサービスが実行されている場合は、rabbitmqctl startを実行します。実行されていない場合は、サービスに移動して開始し、上記を実行します。アーランCookieは、クラスター化されていない構成には関係ありません。
私の場合、何らかの理由で、.erlang.cookie
の下に保存されたCookie(C:\Windows\
)は、自宅の下に保存されたCookie(%HOMEDRIVE%
%HOMEPATH%
、C:\
私にとっては)。
C:\Windows
からホームフォルダーにCookieをコピーすると、すべてが機能し始めました。
グーグルにいる人にとっては、環境設定からHOME
パラメーターが欠落していると、この同じアーランCookieエラーが発生する可能性があります。たとえば、rabbitmqのデフォルトのArchLinuxインストールで。
この場合、サービスはsystemctl start rabbitmq
で開始され、Cookieを生成しますが、rabbitmqctl status
などのcliツールはホームの場所がわからないため、そのままでは機能しません。
default/etc/rabbitmq/rabbitmq-env.conf
NODENAME=rabbit
NODE_IP_ADDRESS=0.0.0.0
NODE_PORT=5672
LOG_BASE=/var/log/rabbitmq
MNESIA_BASE=/var/lib/rabbitmq/mnesia
modified/etc/rabbitmq/rabbitmq-env.conf
NODENAME=rabbit
NODE_IP_ADDRESS=127.0.0.1
NODE_PORT=5672
HOME=/var/lib/rabbitmq
LOG_BASE=/var/log/rabbitmq
MNESIA_BASE=/var/lib/rabbitmq/mnesia
それが価値があることについては、2018年には、ドキュメントは間違っています。 Windows 10では、Cookieファイルのデフォルトの場所は次のように表示されます。
C:\Windows\System32\config\systemprofile
とない
C:\Windows
ドキュメントが言うように。
最善の方法は、ログファイルを確認することです。ログファイルは通常、ユーザー%AppData%\Roaming\RabbitMQ\log
ディレクトリ。
ログファイルには次のエントリが含まれており、Cookieの場所を特定するのに役立ちました。
node : rabbit@computername
home dir : C:\WINDOWS\system32\config\systemprofile
Erlangプロセスを実行しているユーザーのホームディレクトリに、隠しファイル.erlang.cookieがあります。アーランクラスターのトポロジを担当する文字列を保持します。接続するすべてのノードで文字列(Cookie)が同じであることを確認してください。 Cookieがない場合は作成します。
Erlang Cookieの同期(手動でインストールされたWindowsサービスを実行する場合)rabbitmqctl.batが機能するには、サービスアカウントとrabbitmqctl.batを実行しているユーザーが使用するErlangセキュリティCookieを同期する必要があります。 Erlang Cookieファイルに同じ文字列が含まれるようにするには、Windowsディレクトリ(通常はC:\ WINDOWS.erlang.cookie)から.erlang.cookieファイルをコピーして、ユーザー.erlang.cookieを置き換えます。ユーザーCookieは、ユーザーのホームディレクトリ(%HOMEDRIVE %% HOMEPATH%)にあります。 C:\ Documents and Settings \%USERNAME%.erlang.cookieまたはC:\ Users \%USERNAME%.erlang.cookie(Windows Vista以降)。
CookieをC:\Windows
からホームフォルダー( C:\Users\Current User\.erlang.cookie)
にコピーすると、すべてが正常に動作し始めました。
OSXでrabbitmq-serverのMacPortsバージョンを実行する場合は、〜rabbitmq/.erlang.cookieファイルを確認する必要があります。 /opt/local/var/lib/rabbitmq/.erlang.cookieにあるものと一致する必要があります。一致しない場合、「rabbitmqctl」は接続できません。
クラスター化しようとしていて、Cookieが一致したとしても機能しませんでした...最終的に機能したのは、環境変数でERLANG_HOME変数を設定することだけでした。
これを設定した後、マスターブローカーからCookieをクラスター化するものにコピーでき、結合は正常に機能しました。
「ERLANG_HOMEを、実際にErlangインストールを配置した場所に設定します。例:C:\ Program Files\erlx.x.x(フルパス)。RabbitMQバッチファイルは、%ERLANG_HOME%\ bin\erl.exeの実行を想定しています。
[スタート]> [設定]> [コントロールパネル]> [システム]> [詳細設定]> [環境変数]に移動します。システム環境変数ERLANG_HOMEを作成し、bin\erl.exeを含むディレクトリの完全パスに設定します。 」
Rabbitmq erlang.cookieがユーザーディレクトリのerlang.cookieと一致することを確認します。
Rabbitmqアーランクッキー...
...通常、Unixシステムでは/var/lib/rabbitmq/.erlang.cookieに、WindowsではC:\ Users\Current User.erlang.cookieまたはC:\ Documents and Settings\Current User.erlang.cookieにありますシステム。 ( http://www.rabbitmq.com/clustering.html#setup )
〜/ .erlang.cookieと一致することを確認してください。
クローンサーバーが名前の変更により動作するときに、この問題を観察しました。 rabbitmqとerlangのクリーンインストール後に問題が解決しました。