RabbitMQクラスターからデッドノードを自動的に削除する方法


11

接続をポイントするフロントエンドとしてAmazon内部ロードバランサーを備えたAWS VPCでAnsibleを使用してRabbitMQクラスターを作成することを計画しています。

ノードが上下する自動スケーリングルールに基づいて、RabbitMQクラスターからデッドノードを削除する方法、またはスポットインスタンスを使用している場合の提案はありますか?

ノードがダウンしても、RabbitMQはそれをレプリケーションリストから自動的に削除しませんNode not running。管理UIで確認できます。

Ansibleとユーザーデータを介して、スケーリングされたインスタンスをクラスターに自動的に参加させることができました。

インフラストラクチャの図


@ Pierre.Vriens、ありがとうございます。質問を1つだけに変更しました。
ベルリン

メルシー!私が望む他の4つ(またはそれ以上)の質問は破棄しませんでした。たぶんそれらを次の質問として保持するかもしれません。
Pierre.Vriens

はい、質問はまだ関連性がありますが、これが最も重要です。私は後で別の質問を投稿します:)ありがとう!
ベルリン

1
@ベルリン私はあなたが説明していると思うことを表す図を描きました。もしあなたが何か他のものを意味しているなら、私に知らせてください、私は適応します。
Richard Slater

1
@ Pierre.Vriensさん-数分あったとしても、私の仮定を明確にしたかったので構いません。理論的には、それを私の回答に追加することができます。
Richard Slater

回答:


4

rabbitmq / rabbitmq-autoclusterプラグインの使用を検討してください:

いくつかのピア検出メカニズムを使用してノードを自動的にクラスター化するRabbitMQプラグイン:

  • 領事
  • etcd2
  • DNS Aレコード
  • AWS EC2タグ
  • AWS自動スケーリンググループ

IAMポリシーの設定や、クラスターに参加させたいインスタンスへのEC2タグの追加など、この設定を取得するためにプラグインするかなりの構成があります。

AWS Autoscalingグループを使用する場合は、次のものをに追加しますrabbitmq.config

[
  {rabbit, [ ... ]},
  {autocluster, [
    {backend, aws},
    {aws_autoscaling, true},
    {aws_ec2_region, "us-west-2"}
  ]}
].

AWS Autoscalingグループを使用していない場合でも、EC2インスタンスのタグを使用して目的の結果を得ることができます。

[
  {rabbit, [ ... ]},
  {autocluster, [
    {backend, aws},
    {aws_ec2_tags, [{"region", "us-west-2"}, {"service", "rabbitmq"}]},
    {aws_ec2_region, "us-east-1"},
    {aws_access_key, "..."},
    {aws_secret_key, "..."}
  ]}
].

以上のことから、サービスディスカバリメカニズムとしてHashiCorpのConsulを使用することを強くお勧めします。長期的に見ると、システムの各部分を互いに分離するという点で、柔軟性が大幅に向上します。


詳細な説明と図に感謝します。rabbitmq/rabbitmq-autocluster pluginノードがダウンしたら、AFAIK はノードをレプリケーションリストから削除することも知っているので、もう1つ質問2-nodeがあります。クラスターから始めると思いますが、クラスターから始めることをお勧めし3-nodeますポリシーを使用して図に示すように、 `rabbitmqctl set_policy ha-all" "'{" ha-mode ":" all "、" ha-sync-mode ":" automatic "}'`?または別の質問に投稿する必要がありますか?
ベルリン

1
コメントの書式設定はそれほど使いやすいものではないため、おそらく別の質問です。私は常に、クラウドを採用する際に、逆ではなく多数の小さなインスタンスを使用するようクライアントにアドバイスしてきました。これは、クラウドで障害が予想されるため、2ノードクラスターがあり、1つが失敗すると容量の50%が失われ、3ノードクラスターがあり、1つが失敗すると33%しか失われないためです。
Richard Slater

を使用してクラスターを構成しましたがrabbitmq/rabbitmq-autocluster plugin、それはかなりうまくいきますが、ノードがダウンしても、RabbitMQはそれをレプリケーションリストから削除しません。理由は何ですか?
ベルリン

1
クラスターのクリーンアップ構成オプションを有効にしましたか?
Richard Slater 2017

ありがとう、見つけたhttps://github.com/aweber/rabbitmq-autocluster/wiki/General-Settings、それを試してみる。
ベルリン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.