ロードバランサ・リバースプロキシソフトウェア【HA Proxy】
今月の気になるオープンソース情報(2017年11月号)
OSS研究室 森 彰吾
今回はHAProxyについて紹介します。
HAProxyはオープンソースのロードバランサ・リバースプロキシとして動作するソフトウェアです。 ロードバランサと言えば高価な機器を購入して利用するというイメージがありがちです。その一方で、小規模なシステムや、クラウド 環境での導入のハードルが高いと感じている方も多いのでは?と思います。HAProxyはソフトウェアとして動作するため、様々な環境に合わせて利用可能です。
HAProxyの便利な点を解説します。
URLやHTTPヘッダーなどの情報でアクセスの分散が可能
HAProxyはOSI参照モデルのレイヤー7(アプリケーション層)で動作可能なロードバランサです。デージーネットで既に取扱いのあるLinux Virtual Server (LVS)とは、この点が大きく異なります。LVSは、OSI参照モデルのレイヤー4(トランスポート層)で動作するため、TCP/UDPを利用したルールしか設定することができません。
一方、HAProxyは、HTTPなどのプロトコルの内容を理解したルールを記載することができます。そのため、アクセス先のURLやHTTPのヘッダー情報毎に、アク セス先のサーバを変更するなど、きめ細かい制御が可能です。
SSLオフロードが可能
HAProxyが代理でSSLの処理を行うことで、バックエンドのサーバでのSSLの処理を省くことができます。バックエンドサーバは、SSLの処理の負荷がなくなり、 メインのサービスに専念することができるようになります。
HTTP以外にも様々なTCPプロトコルに対応
HTTP以外にも、メール(SMTP/IMAP/POP)やデータベース(MySQL/PostgreSQL)のロードバランサとしても利用ができます。この場合には、振り分けルールとし ては、レイヤー4のロードバランサとして動作することになりますが、監視はレイヤー7で行うことができます。例えばSMTPであれば「HELO」コマンドや 「MAIL FROM」コマンドを送信して、ステータスコードをチェックすることがきます。
クライアントの情報をログに残すことができる
HAProxyはプロキシプロトコルというプロトコルに対応しています。このプロトコルは、プロキシを経由した場合に、接続元の情報が失われてしまうのを防 ぐためのものです。よくありがちな問題としては、ログに出力されるクライアントIPアドレスが、全てロードバランサやプロキシサーバのIPアドレスになっ てしまい、どこからの接続か判別がつかないという問題です。HAProxyはプロトコルに対応したソフトウェアと連携することで、クライアントの情報をバックエンドのサーバソフトウェアに渡すことができます。
なお、現状プロキシプロトコルの動作が確認できているソフトウェアとしては、PostfixやDovecotが存在しています。
統計情報が閲覧できる
HAProxyは現在どのサーバが稼働/停止しているのか、どのぐらいの接続があるのかなどの統計情報をWEBのインタフェースやコマンドラインで参照することが できます。いちいちログの確認を行うことなく状態の把握ができるため、非常に便利です。
デージーネットでは、仮想環境のサービス(OpenStackサービス)の負荷分散のために、HAProxyを利用しています。ただのシングル構成ではHAProxyがダウン してしまうと、負荷分散対象のサービスが全てダウンするため、HAProxyを冗長化して利用しています。
ロードバランサの導入をご検討の方は、HAProxyも選択肢に入れてみてはいかがでしょうか?