web-dev-qa-db-ja.com

データセンター間で冗長性を実現するにはどうすればよいですか?

多くのハードウェア冗長性が組み込まれたLAMPサーバーがあります。サーバーが使用できなくなる心配はありません。しかし、私が心配しているのは、サーバーが置かれているデータセンターの潜在的なネットワークの問題です。私が欲しいのは、冗長性のために別のデータセンターにある別のサーバーです。負荷分散はそれほど問題ではありません。

そうは言っても、私は2つの点で比較的無知です。

  1. ファイルとMySQLデータベースの両方に関して、まったく同じデータを持つ2つの地理的に離れたデータセンターに2つのサーバーを配置する方法。
  2. 最初のデータセンターでネットワークまたはサーバーに障害が発生した場合に、1つのデータセンターに着信するすべてのトラフィックが他のデータベースに自動的に転送されるようにする方法。

上記の2つの問題を達成する方法についてのガイダンスをいただければ幸いです。

4
BrandonBT

あなたの質問には多くの部分があります!

MySQLの場合、相互に複製する2つのサーバーが必要になるため、一方がアクティブマスターである場合、もう一方がそのデータを取得します。レプリカのレプリケーションがマスターから何秒遅れているかを確認することで、同じデータを取得していることを監視できます。アクティブなマスターのみに書き込む必要があります。そうしないと、両方がauto_increment値を使用しているときに、データベースをホークすることになります。

ファイルの場合、rsyncを定期的に実行して、変更を前後に伝達することをお勧めします。それらが同じファイルを持っているかどうかを監視するだけで十分かもしれません-それを行うにはさまざまな方法があります。

2番目の問題はもっと注意が必要です。プライマリデータセンターが突然オフラインになったとします。バックアップデータセンターはどのようにしてそれについて何をすべきかを知っていますか?通常、障害が発生したことを判断し、バックアップにフェイルオーバーするかどうかを決定するには、手動コンポーネントが必要です。クライアントプロセスを自動的にバックアップに移動させるには、通常、アクティブなデータセンターへの接続をプロキシするか、名前のDNSスイッチオーバーを高速化できる3番目のサイトが必要になります。データセンターのフェイルオーバーにDNSを使用するには、低いTTL値が必要なので、前者をお勧めします。

2
David M