1

EC2 (Amazon Linux) に 3 ノードの Rabbit クラスターをセットアップしたいと考えています。サーバーを失った場合、別の新しいサーバーに自動的に置き換えることができるように、回復を実装したいと考えています。ブローカー ID が rabbit@ip-xx-xx-xx-xx になるように、デフォルトのホスト名 (ip-xx-xx-xx-xx) を使用してクラスターを手動で簡単にセットアップできます。これは、ホスト名がネットワーク上で解決できるためです。

問題は次のとおりです。このホスト名は、サーバーを失ったり再起動したりすると変更され、クラスターが無効になります。クラスター内の他のマシンでは解決できないため、カスタムの静的ホスト名を設定することはできませんでした。その記事の意味をなさない唯一の部分です。

EC2 で RabbitMQ クラスターをリカバリ実装で達成した人はいますか? アドバイスをいただければ幸いです。

4

3 に答える 3

1

3 つのボックスの外部 DNS サービスで 3 つの A レコードを作成し、構成で使用できます。例: rabbit1.alph486.com、rabbit2.alph486.com、rabbit3.alph486.com。これらは、ec2 プライベート IP アドレスである可能性もあります。すべてのボックスが同じ地域にある場合、より高速で安価になります。ボックスを紛失した場合は、DNS レコードを更新するだけです。

さらに、3 つのボックスにエラスティック IP を割り当てることもできます。次に、ボックスを紛失した場合、必要なことは、エラスティック IP をその代替品に割り当てることだけです。

もちろん、クライアントの数が少ない場合は、各ボックスの /etc/hosts ファイルにエントリを追加して、必要に応じて更新することもできます。

于 2013-02-06T23:17:47.280 に答える
0

@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/ホスト名

于 2013-02-08T16:02:56.947 に答える
0

から:

http://www.rabbitmq.com/ec2.html

ホスト名に関する問題

RabbitMQ は、システムの現在のホスト名を使用してデータベース ディレクトリに名前を付けます。ホスト名が変更されると、新しい空のデータベースが作成されます。データの損失を回避するには、解決可能な固定のホスト名を設定することが重要です。例えば:

sudo -s # ルートになる

echo "うさぎ" > /etc/ホスト名

echo "127.0.0.1 ウサギ" >> /etc/hosts

ホスト名 -F /etc/ホスト名

于 2015-01-28T09:12:18.553 に答える