次のような状況があります: サーバー上で、同じ FQDN を参照する 2 つの IP を設定する必要があります。サーバー上で実行されているアプリケーションで、FQDN を構成しています。1 つの IP (FQDN に基づく) へのアクセスに問題が発生すると、サーバーは同じ FQDN に割り当てられた 2 番目の IP を使用します。
例:
/etc/hosts
含まれる
1.1.1.1 server1.google.com
1.1.2.1 server1.google.com
1.1.1.1 へのアクセスに問題が発生すると、サーバーは server1.google.com を 1.1.2.1 として使用します。
そういったものを使うことはできますか? 他に選択肢はありますか?
答え1
/etc/hosts はラウンドロビンを行いません。最初に見つかった一致を返すだけです。
ラウンドロビン解決が必要な場合は、それを実行する完全な DNS サーバーが必要になります。
さらに、ラウンドロビン DNS は、必要な負荷分散に適したツールではありません。便利そうに見えますが、名前解決は、あなたがしようとしていることを行うためのレイヤーではありません。
答え2
アプリケーションを変更したくない、または変更できない場合は、アプリケーションを実行しているサーバーと接続する 2 つのサーバーの間のどこかに負荷分散レイヤーを配置する必要があります。これにより、次のことが可能になります。
- 同じ DNS 名と IP アドレスを使い続ける (ロードバランサーが仮想 IP を作成します)
- 順番にすべてのサーバーに転送される
- 問題が発生した場合に消えてしまうサーバーへの接続は避けてください
- 必要に応じて、認証セッションを同じ宛先に保持できるようにする
負荷分散ソリューションについては、Linux LVS プロジェクト。
アプリケーションがサポートされている場合は、接続文字列に両方の IP を指定するようにアプリケーションを変更することもできます。最初の IP が使用され、応答しない場合は 2 番目の IP が使用されます。ただし、これはアプリケーションの構築に使用される言語に大きく依存します。たとえば、これは Java データベース コネクタで可能です。