4

ハートビートや、haproxy ロード バランサーがダウンしたときにフェールオーバーするための keepalived などの高可用性ソリューションを検討してきました。私たちは高可用性を望んでいますが、現時点では、2 つのロード バランサー インスタンスを同時に実行するための支出の範囲で高可用性を実現する必要はないことに気付きました。私たちのセットアップでは冗長になります)。

私の別の解決策は、現在のロード バランサーが機能しなくなった場合に AMI から新しいロード バランサー EC2 インスタンスを起動し、それをドメイン名が指すエラスティック IP に関連付けることです。これにより、ダウンタイムが新しいインスタンスを起動してエラスティック IP を関連付けるのにかかる時間に制限されるようになります。これは、現在の状況を考えると、特にマルチ AV を簡単に実行できるため、高可用性に対する合理的な費用対効果の高いソリューションのように思えます。ゾーン。次の手順を使用してこれを行うことを検討しています。

  1. ロードバランサーの AMI を準備する
  2. ロードバランサーとして機能する単一の ec2 インスタンスを起動し、それに Elastic IP を割り当てます
  3. マイクロ サーバーが現在のロード バランサーに定期的に ping を実行するようにします (いずれにせよ、追加のマイクロ サーバーが常に実行されています)。
  4. ping がタイムアウトした場合は、ロード バランサー AMI を使用して新しい EC2 インスタンスを起動します。
  5. Elastic IP を新しいインスタンスに関連付ける
  6. 古いロード バランサ インスタンスをシャットダウンする
  7. 新しいインスタンスで手順 3 以降を繰り返します。

スクリプトでコマンドを実行して EC2 インスタンスを起動およびシャットダウンし、エラスティック IP アドレスをインスタンスに関連付け、サーバーに ping を実行する方法を知っています。

私の質問は、ここで適切な ping は何でしょうか? 標準的な ping は一定の間隔で十分でしょうか? また、適切な間隔はどれくらいでしょうか? それとも、これはかなり単純化されたアプローチであり、私が行うべきよりスマートなヘルスチェックがありますか?

また、誰かがこのアプローチで問題を予見する場合は、お気軽にコメントしてください

4

2 に答える 2

6

私はあなたがどこから来たのかを正確に理解しています、私の会社は同じ立場にあります. 可用性の高いフォールト トレラント システムに関心がありますが、取得するトラフィックに対してオーバーヘッド コストが現実的ではありません。

  1. あなたのソリューションで私が抱えている問題の 1 つは、マイクロ インスタンスとロード バランサーの両方が同時に停止することはないと想定していることです。Amazon での私の経験から、これが発生する可能性はありますが、可能性は低いですが、ロードバランサーが停止する原因が何であれ、マイクロインスタンスもダウンする可能性があると言えます。
  2. もう 1 つの潜在的な問題は、ダウンタイム中にいつでも別の代替インスタンスを開始できると想定していることです。これはまったく当てはまりません。たとえば、Amazon が数日前に us-east-1 リージョンで停止した場合を考えてみましょう。停電により、ゾーンの 1 つで電力が失われました。彼らが電源を回復し、インスタンスの回復を開始したとき、API は完全な負荷のために適切に機能していませんでした。この間、利用可能になるまでに約 1 時間かかりました。このような停止によってロード バランサーが停止し、別のロード バランサーを起動できなくなった場合、ダウンすることになります。

そうは言っても。Amazon が提供する ELB は、私にとってより良い解決策であることがわかりました。HAProxy を使用する理由はわかりませんが、ELB を使用すると自動スケーリングなどを実行できるため、ELB を調査することをお勧めします。

作成する ELB ごとに、Amazon は、インスタンスが登録されている各ゾーンに 1 つのロード バランサーを作成します。これらは、上記のような Amazon での深刻な停止中の特定の問題に対して依然として脆弱です。たとえば、このダウンタイム中、ロード バランサーに新しいインスタンスを追加できませんでしたが、現在のインスタンス (停電の影響を受けていないインスタンス) はまだリクエストを処理していました。

更新 2013-09-30

最近、ELB と HAProxy の組み合わせを使用するようにインフラストラクチャを変更しました。ELB が最高の可用性を提供することがわかりましたが、ELB が DNS ロード バランシングを使用しているという事実は、私のアプリケーションではうまく機能しません。したがって、セットアップは 2 ノードの HAProxy クラスターの前に ELB です。AWS 用に作成したこのツールHAProxyCloudを使用して、Auto Scalingグループを HAProxy サーバーに簡単に追加できます。

于 2012-07-03T17:26:27.677 に答える