web-dev-qa-db-ja.com

EC2でフェイルオーバーを自動化するにはどうすればよいですか?

独自のクラスターを管理している(つまり、Amazon Autoscale、Rightscale、Scalrなどを使用していない/支払っていない)人々のうち、EC2でインスタンスをどのように管理し、フェイルオーバー(例)を処理していますか?私が思っているように、ほとんどの人がEC2 APIに対して独自のスクリプトのボートロードを作成してしまうのではないかと思います。

それは確かに私たちのアプローチです:独自のPythonオフサイトで実行されるBotoベースのモニタリング/再起動デーモンを起動し、インスタンスからのUDPキープアライブをリッスンします。失敗すると、ボリュームのスナップショットを作成し、登録しますイメージ、新しいインスタンスの開始、古いボリュームの削除など。

スクリプトをハッキングするとき、これらの問題に対処し、Scalrの制約を受けていないオープンソースツールがいくつかあると思いますが、私は常にGoogleから戻ってきます手ぶら。 (Scalrのようなものは、サポートされるソフトウェアのセット/バージョン/構成にかなり制限があり、これらのセットアップを操作するための専門的でIMOの面倒な方法があります。)

また、Linux-HA/Pacemakerエコシステム(Heartbeat、ldirectordなど)はそのように聞こえます EC2にはあまり適していません 。 (しかし、私は this -を見つけましたが、これが本当に高品質のソリューションであるかどうかはわかりません)。

13
Yang

まあ、私は明白なことだけを述べるつもりはありませんが、一般的な考え方は、この複雑さをAmazonが管理するサービスにプッシュすることです。

したがって、フロントエンドでは、Amazon Elastic Load Balancing(ELB)を使用して、可用性の高いロードバランシングを提供します。リアエンドでは、Amazon Relational Database Service(ホスト型MySQL)、SimpleDB、S3をストレージに使用します。これらはすべてAmazonによって管理されており、何らかの高可用性/フェイルオーバー処理が含まれています。

これは通常、Webアプリケーションサーバーと、使用している可能性のある一般的でないサーバータイプ(レンダリングサーバー、自己インストール型のNoSQLデータストアなど)を残します。

Webappサーバーは通常、ELBに組み込まれたヘルスチェックで十分に処理されます。 1つのwebappサーバーがダウンしているときに小さなパフォーマンスの低下を受け入れるか、必要以上に+1サーバーを一貫してプロビジョニングできます。または、構成が単純な場合、webappサーバーに障害が発生すると、ELBとCloudwatchが自動的に新しいwebappサーバーを生成します。

独自のカスタムサーバーは別の問題です。これらについては本当です、あなたはあなた自身で、そしてアプリケーションの組み込みメソッドでやるか、カスタムスクリプト/オープンソースHAツールで何かを一緒にダクトテープで作る必要があります。

Rightscaleのソリューションの購入は高額すぎる可能性があります。ただし、高可用性が必要な場合は、ELB、基本的なCloudWatchアラート(現在は5分の解像度で無料)、AutoScaleなどのより安価なAmazonツールが役立ちます。

5
Jesper M

あなたが説明する問題(HA、カスタムサーバーの監視、「ダクトテーピング」サービス)は通常、PaaSプロバイダーによって処理されます。 RightscaleとScalrは以前の回答ですでに言及されており、他にも適切なオプションがあります(PaaSオプションについては、こちらをご覧ください:

https://stackoverflow.com/questions/9542784/looking-for-paas-providers-recommendations

どのプロバイダーが必要なものに最も近い適合を提供するかを検討する必要があります。

通知:私はオープンソースのPaaSプロバイダーであるcloudifyで働いています。

0
Barak

RightScaleにはいくつかの優れた記事があります EC2でフェイルオーバーを自動化する方法について。それらのほとんどは、RightScale自体を使用してそれを行う方法を示していますが、原則は一般的であり、EC2でフェイルオーバーアーキテクチャをセットアップする方法を考えている人にはおそらく役立つでしょう。

0
Suman

両方のサーバーにハートビートをインストールします。「アクティブ」サーバーにElastic IPを接続します。「スタンバイ」サーバーがエラスティックIP(約30〜60秒かかります)マスター/アクティブにすることができます。

ここで提供する詳細はありません。

0
Amir Mehler

ELBをAuto Scalingと組み合わせて使用​​して、あらゆる種類のアプリの自動フェイルオーバーを実現する方法について エンジニアリングブログの投稿 を最近書いた。 ELBヘルスチェックを使用してアプリのステータスをpingし、自動スケーリングアクションをトリガーする方法について説明します。

0
TheDeveloper