Load BalancerのHA(高可用性)を実現する方法がいくつかあります-またはその点でサービスについて。IPアドレスを持つ2つのマシンがあると仮定します。
- 192.168.100.101
- 192.168.100.102
ユーザーはIPに接続するため、実行するのは、特定のボックスからIPを分離することです(例:仮想IPの作成)。そのIPは192.168.100.100になります。
これで、IPアドレスの自動フェイルオーバー/フェイルバックを処理するHAサービスを選択できます。UNIX用の最も単純なサービスには(u)carpとkeepalivedがあり、より複雑なサービスにはRedHat Cluster SuiteやPacemakerなどがあります。
例としてkeepalivedを考えてみましょう-2つのkeepalivedサービス-それぞれが独自のボックスで実行されており、相互に通信します。その通信はしばしばハートビートと呼ばれます。
| VIP | | |
| Box A | ------v^-----------v^---- | Box B |
| IP1 | | IP2 |
1つのキープアライブが応答を停止した場合(何らかの理由でサービスがダウンした場合、またはボックスがバウンスまたはシャットダウンした場合)-他のボックスでキープアライブされた場合、ハートビートが失われていることに気付き、他のノードが死んでいると推定し、フェイルオーバーアクションを実行します。この場合のアクションは、フローティングIPを起動することです。
| VIP |
------------------ -------------- | Box B |
| IP2 |
この場合に発生する可能性のある最悪のケースは、クライアントのセッションの損失ですが、クライアントは再接続できます。それを避けたい場合は、2つのロードバランサーがそれらの間でセッションデータを同期できる必要があります。そうすることができる場合、ユーザーは少し遅れて壊れる以外に何も気付かないでしょう。
このセットアップの別の落とし穴はスプリットブレインです。両方のボックスがオンラインであるが、リンクが切断され、両方のボックスが同じIPを表示する場合です。多くの場合、これは何らかの種類のフェンシングメカニズム(SCSI予約、IPMI再起動、スマートPDUの電源切断など)、またはサービスを開始するためにクラスターメンバーの大半が稼働している必要がある奇数のノードによって解決されます。
| VIP | | VIP |
| Box A | | Box B |
| IP1 | | IP2 |
より複雑なクラスター管理ソフトウェア(Pacemakerなど)はサービス全体を移動できます(例:1つのノードで停止し、別のノードで開始する)。これが、データベースなどのサービスのHAを実現する方法です。
別の可能な方法-ロードバランサーの近くでルーターを制御している場合、ECMPを利用することです。このアプローチにより、ロードバランサーを水平方向にスケーリングすることもできます。これは、ルータとBGPを通信する2つのボックスのそれぞれで機能します。各ボックスは仮想IP(192.168.100.100)をアドバタイズする必要があり、ルーターはECMPを介してトラフィックの負荷を分散します。マシンが停止すると、VIPのアドバタイズが停止し、ルーターがトラフィックを送信できなくなります。この設定で注意する必要があるのは、ロードバランサー自体が停止した場合にIPのアドバタイズを停止することだけです。