ロードバランサーの機能(超基礎)
ここでは、ロードバランサーの超基礎的な機能について説明します。
負荷分散
ロードバランサーの一番基本的な機能になるのが負荷分散機能です。クライアントからのアクセスを配下のサーバーに分散します。実は負荷分散の方式にも種類があり、特にアプライアンスのロードバランサーでは多くの方式から選択可能です。ただし、特に要件がない場合は以下の2つのどちらかが無難だと思います。
ラウンドロビン
各サーバーに順番に負荷分散していく方式です。①と②の2台のサーバーがあるとすると、①②①②①②と順番にアクセスを割り振ります。アクセスをサーバーに等分に割り振ることができます。ただし、ロードバランサーが内部的にいくつかのプロセスで処理を行っている場合などは、完全に順番通りには割り振られない場合もあります。あくまで、おおよそ等分の割り振りになると考えてください。
リーストコネクション
接続中のクライアントが一番少ないサーバーに次のアクセスを割り振ります。アクセス毎に処理の時間が大幅に異なるような場合でも、一時点でサーバーに接続しているクライアント数が等しくなるように近づける分散方式です。
HTTPS終端
次にHTTPS終端機能について説明します。これはL7のロードバランサーで使用できる機能です。HTTPS終端をサーバーで行うと暗号化処理で負荷が高くなりますが、これをロードバランサーで終端する事でサーバー側の負荷を軽くする事ができます。この機能を使用する場合は、サーバー証明書はロードバランサーに設定する事になります。アプライアンスやVM版では暗号化方式も細かく設定できるようになっており、要件に沿って設定します。
なお、ロードバランサーとサーバーの間をさらにHTTPSで通信させる事も可能です。その場合は、サーバー側にも別途証明書を配置してHTTPS終端する必要があります。
スティッキー(パーシステンス)
負荷分散を行う際、同じクライアントからの通信は同じサーバーに割り振る必要がある場合があります。静的なコンテンツだけでなく、動的な処理をおこなうアプリケーションサーバーがある場合などが該当します。そこで使用するのがスティッキー機能になります。この機能を使用すると、同じクライアントからのアクセスは同じサーバーに割り振るようになります。スティッキーにもいくつか種類があり、主なものはクライアントIPを使用するスティッキーとクッキーを使用するスティッキーです。
クライアントIPアドレス
ロードバランサーがクライアントのIPアドレスと割振り先のサーバーを記憶しておき、その情報に従って新しいアクセスを従来と同じサーバーに割り振ります。最も基本的な方式ですが、ロードバランサーの前にNAT機器がある場合は全てのアクセスのアクセス元IPアドレスが同じになってしまうため、全てのアクセスが同じサーバーに割り振られてしまいます。
クッキー
ロードバランサーがHTTP/HTTPS通信にクッキーを挿入します。クライアントは次回の通信からはそのクッキーをヘッダーに入れてアクセスを行うため、ロードバランサーはその情報を元に前回と同じサーバーに割り振ります。クッキーを使用するため、HTTP/HTTPSをロードバランサーで終端している必要があります。
ヘルスチェック
配下のサーバーが正常に稼働しているかどうかを確認する機能です。正常に稼働していないと判断されたサーバーは負荷分散の対象から外されます。ヘルスチェックの方式には、ICMP、TCPコネクション、HTTP/HTTPSアクセスなどがあります。
また、ヘルスチェックの間隔やタイムアウト、何回ヘルスチェックに失敗するとサーバーがダウンしていると判断するかといった設定値がある場合が多いです。早くダウンと判定するようにした方がサーバー障害時の切り替わりを早くできますが、あまり早くダウンと判断するような設定にしてしまうと、サーバーの負荷が高くヘルスチェックへの応答が遅れるような場面で、誤ってサーバーをダウン判定してしまう可能性があります。