自動フェイルオーバーを備えた高可用性MySQLシステムをAmazonEC2インスタンスで実行したいと思います。
これを解決するための標準的なアプローチは、Heartbeat + DRBDの問題ですが、正確な理由を述べているものはありませんが、DRBDがEC2で機能しないことを示唆する投稿をたくさん見つけました。明らかに、仮想化環境では、シリアルハートビートまたは個別のネットワークは問題外です。異なるサーバーを異なるアベイラビリティーゾーンに配置するのも良いことですが、 はるかに難しい問題 が発生しています。
「クラウド」で高い稼働時間のソリューションを持つことについての人々の意見は何ですか?
注:この質問は、マルチAZを備えたRDSが発表される前に行われました。今日の現代のITプロフェッショナルのための答え。 :)
最近AWSに追加されたマルチゾーンRDSセットアップが本当に必要だと思います。
詳細はこちら: http://aws.typepad.com/aws/2010/05/Amazon-rds-multi-az-deployment.html
AWSについて質問しない場合は、DRBDを含むセットアップをお勧めします。これにより、両方のサーバーが常に同期していることが保証されます。しかし、AWSではまだこれが不可能であるとほぼ100%確信しています。
一般的に、スナップショットなどには注意が必要です。これは特効薬ではありません。 AWSではかなり時間がかかります。インスタンスストレージ自体は、a)まったく高速ではなく、b)永続的ではありません。 EBSを使用しても、それほど高速ではなく、一貫したスナップショットを作成するにはI/Oを停止する必要があります。
安価で簡単なオプション-自分でEC2のさまざまなデータセンターにmysqlをインストールし、それらの間でマスター/マスターレプリケーションをセットアップします。各データセンターのフロントエンドWebサーバーを、複製されたmysqlサーバーに向けます。プライマリサイトでコンテンツヘルスチェックが失敗した場合、各場所のフロントエンドWebサーバー間で自動DNSフェイルオーバーをセットアップします-クライアントトラフィックを他のデータセンターのレプリケートされたサイトに自動的にリダイレクトします-プライマリサイトとヘルスチェックを修正します再び通過を開始します-その後、トラフィックは自動的にプライマリサイトにフォールバックします。私はこれを常に行っています-異なるベンダー間、つまりEC2とLinodeの間でも。それはうまく機能し、クライアントトラフィックのフェイルオーバーは1分未満で発生します。自動化されたDNSフェイルオーバーは dnshat.com から安価に入手できます。
日曜大工のオプションは、MySQLをEBSボリュームにインストールし、エラスティックIPまたはダイナミックDNSを使用して、ポイントしているサーバーが失敗した場合に切り替えることです。
ハートビートを監視する外部サーバーが必要になります。これにより、EBSボリュームがアンマウントされ、バックアップサーバーに再マウントされてから、IPを再マップするかDNSが変更されます。ファイルシステム自体が心配な場合は、データのコピーを取得するために lvmスナップショット などを実行する必要があります。その後、それらをS3またはEBSボリュームにバックアップすることもできます。 。
EBSボリューム自体にデータがあるのが好きです。なぜなら、それが怖いように思える場合は、lvmに関与することなく、バックアップ用にEBSスナップショットを取得できるからです。
また、Amazonには Enterprise MySQLパッケージ がありますが、これは私が使用したことはありませんが、おそらくより良いオプションです。それらの価格は通常、サポート契約にとってかなりリーズナブルです。
デフォルトでは、フローティングVIPを使用したアクティブ/パッシブデュアルマスターレプリケーションを使用します。 (ハートビート、OpenAIS、MMRM、またはペースメーカー)
これが良い考えではない理由は考えられません。あなたはできる?