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


13

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

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

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

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

回答:


5

まあ、私は単に明白なことを述べるつもりはありませんが、一般的なアイデアは、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ツールは価値があります。


3
AWSの機能セットとその制限に精通しています。最初の例を挙げると、ELBはCNAME RRを介してアクセスされます。CNAMERRはSOA RRと共存できないため、TLDにサービスを提供できません。また、静的IPを介してアクセスできません。2番目の例を挙げると、RDSはMySQLであり、これは大きな制限です。はい、私たちは自分のマシンタイプのフェイルオーバーを自動化することに興味があります。はい、プライベートクラウドの展開は当社に関連しています。はい、興味があります。など
ヤン

2
@Yang:質問をもっと慎重に表現し、答えを入力する手間を省く必要がありました。HAに万能のソリューションはありません。問題のサービス、状態の保持方法、プロトコルフェールオーバープロパティなどに依存します。EC2で一般的なIPレベルのHAツールを使用する場合の制限/難しさについては正しいです。しかし、「HA on AWS」に普遍的に適用される単一の答えはありません。
ジェスパーM

0

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


0

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

/programming/9542784/looking-for-paas-providers-recommendations

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

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


0

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


0

両方のサーバーにハートビートをインストールします「アクティブ」サーバーにElastic IPを接続します「スタンバイ」サーバーがエラスティックIPを取得するとすぐに、API要求を開始してエラスティックIPを取得することにより、フェイルオーバーを実行するスクリプトを構成します(約30〜60秒かかります)マスター/アクティブになります。

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


-1

AmazonはすでにElastic Load Balancingを提供しています...なぜ車輪を再発明するのですか?


3
ELBのさまざまな制限のためですか?CNAMEが必要であり、foo.comとwww.foo.comの両方を提供できないためですか?カスタムスケジューリングロジックを実装したいのですか?信頼性の低いVMのクラスターにELBを自分で実装する方法を知りたいのですが。好きなのを選びな。
ヤン

@Yang、データセンターのサーバーである場合と同じ方法で行います。基本的な違いはなく、クラウド環境にする魔法のソースもありません。
クリスS
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.