@Chrskly は、Rabbit コミュニティの一般的なコンセンサスである適切な回答を提供しました。
- DNS や他のサーバーの識別を処理する init スクリプトは、主に私が耳にするものです。
- Amazon の内部 IP/DNS は引き続きローテーションされ、静的なままのパブリック IP/DNS 名は、適切にエイリアスされない限り、rabbit のホスト名として使用できないため、DNS またはホスト名のエイリアスの助けなしでは、Elastic IP を機能させることができませんでした。
- スクリプトによるホスト ファイルの操作もオプションです。これには、起動時に他のサーバーの DNS を識別できるスクリプトが付随する必要があるため、構成をより「ソリッド ステート」にするという点で多くの作業を節約することはできません。
私がやっていること:
DNS フロントにいくつかの制限があるため、ブートストラップ スクリプトを使用して、起動時に割り当てられたデフォルトの内部 dnsを使用して、他の使用可能なマシンでマシンとクラスターを初期化することにしました。マシンを紛失した場合、新しいマシンが起動し、rabbit を準備して、クラスター化するマシンの DNS 名を検索します。次に、ハウスキーピングのためにデッド ノードをクラスタから削除します。
Python でいくつかの自作の init スクリプトを使用しています。ただし、これは Chef/Puppet などで簡単に実行できます。
更新: ドキュメントの詳細
から:
http://www.rabbitmq.com/ec2.html
ホスト名に関する問題
RabbitMQ は、システムの現在のホスト名を使用してデータベース ディレクトリに名前を付けます。ホスト名が変更されると、新しい空のデータベースが作成されます。データの損失を回避するには、解決可能な固定のホスト名を設定することが重要です。例えば:
sudo -s # ルートになる
echo "うさぎ" > /etc/ホスト名
echo "127.0.0.1 ウサギ" >> /etc/hosts
ホスト名 -F /etc/ホスト名