
Apache と MySQL の自動フェイルオーバーの設定を検討しています。2 つの Apache ボックスと 2 つの MySQL ボックスの前に小さなプロキシ サーバーを配置する予定です。Apache はマスターからスレーブへのデータの rsync を定期的に実行し、MySQL はレプリケーション用にマスター/スレーブに設定されます。障害が発生した場合は、マスターが再構築されるまでバックアップ ボックスが引き継ぐことができます。
前面のプロキシサーバーは、何らかのハートビートソフトウェアを備えたトラフィックコップとして実行されます(この時点では負荷分散は考えていません)。この方法なら、メインのボックスがダウンした場合にファイアウォールを変更する心配はありません。Linux-HA最善の選択肢、または何か提案はありますか?
答え1
Linux HA は優れたツールセットです。シンプルなものを求めるなら、ハートビート 1 をご利用ください。ハートビート 2 は、2 ノード以上のクラスターと XML 構成に対応しています。ほとんどのシンプルな 2 ノードのケースでは、ハートビート 1 で十分です。
しかし、アプリケーションの前にプロキシを配置することは常に良いアイデアであることには同意しますが (複数のサーバーを 1 つの仮想サーバーから実行するなど)、説明されているセットアップでは、新しい SPF、つまりプロキシを導入しているように思えます。
あなたの場合、おそらく両方のサーバーをアクティブ/アクティブ構成で実行し、両方のサーバーに完全な Web サービスと完全なプロキシ サービスを含めるのがよいでしょう。
ハートビートを設定して、3 つの IP を引き継ぐだけです。アクティブな MySQL サーバー用、アクティブな Web サーバー用、アクティブなプロキシ用です (最後の 1 つだけを公開する必要があります)。
次に、プロキシが常に内部の「アクティブ Web サーバー」IP にアクセスするよう設定し、Web サーバーが「アクティブ DB サーバー」IP にアクセスするように設定します。
負荷分散構成の準備ができたら、Web サーバー IP の切り替えを削除し、代わりに両方の Web サーバーをプロキシのバックエンド サーバー グループに配置するだけです。
初期設定は次のようになります。
Server A (Apache on Port 80) Server A (Apache Port 8080) Server A MySQL <-----------
| \ | \ | \
Web <-> Public Proxy IP >-> Shared Private Web IP >--> Shared Private MySQL IP | Mysql Synchronization Link
| / | / | /
Server B (Apache on Port 80) Server B (Apache Port 8080) Server B MySQL <-----------
その後、準備が整ったら、ユーザーに見える変更を加えることなく、実際の負荷分散 (Web の場合と同様) と MySQL クラスタリングにシームレスに移行できます。
何よりも良いのは、アプリケーションをすぐにプロキシの背後に配置すると (プロキシが「実際には」同じサーバーであっても)、Web アプリの多くのバグ (リンク作成時のホスト名やパスに関する想定など) が早期に明らかになることです。
答え2
上記のリンクはLinux HAの設定に役立ちます