HAproxy

提供: ArchWiki
2017年11月1日 (水) 22:26時点におけるKusakata (トーク | 投稿記録)による版 (同期)
ナビゲーションに移動 検索に移動

HAProxy は TCP や HTTP ベースのアプリケーションに高可用性・負荷分散・プロキシを提供するフリーで高速かつ信頼性があるソリューションです。通信量が極めて多いウェブサイトに適しており、世界中の人気ウェブサイトで使われています。長年、HAproxy はオープンソースのロードバランサのデファクトスタンダードとして、主流の Linux ディストリビューションでインストールされるようになっており、また、クラウドプラットフォームでも頻繁に利用されています。

インストール

haproxy パッケージをインストールしてください。

実行

systemd を使って haproxy.service を有効化してください。HAProxy の設定は # systemctl reload haproxy.service を使うことで動的にリロードすることができます。

設定

サンプル設定は /etc/haproxy/haproxy.cfg にあります。必要に応じて編集して haproxy.service を起動してください。

一般的な設定

ACL

HAProxy は ACL に対応しており、テストを行なったり、テストの結果にあわせて特定のアクションを起こすことができます。典型的な ACL は以下のように記述します:

/etc/haproxy/haproxy.cfg
acl photo_page path_beg /photos

上記の場合、ユーザーのリクエストしたパスの先頭が /photos の場合に ACL がマッチします。

バックエンド

HAProxy では、バックエンドは転送されたリクエストを受信するサーバーあるいはサーバー群を示す用語です。様々な ロードバランスアルゴリズム に基づいてバックエンドで負担を分散させることができます:

  • ラウンドロビン
  • 静的ラウンドロビン (別名、加重ラウンドロビン)
  • 最小接続

例えば以下のようにバックエンドを記述します:

/etc/haproxy/haproxy.cfg
backend http-in
   balance roundrobin
   server s1 web1.example.com:80 check
   server s2 web2.example.com:80 check

フロントエンド

フロントエンドはどうやってバックエンドにリクエストを転送するか定義します。定義は以下からなります:

  • IP アドレスとポート
  • ACL
  • use_backend ルール

ヘルスチェック

バックエンドを check オプションで宣言すると、HAProxy は起動時・定期的にバックエンドが転送されたリクエストを処理できているかどうか確認します。バックエンドがヘルスチェックに通らなかった場合、健康状態に回復したと診断されるまで (つまりヘルスチェックに合格するまで) ローテーションから削除されます。

デフォルトでは、HAProxy はバックエンドと TCP 接続の確立を試行して健康度を確かめます。

check オプションで大量のバックエンドを宣言した場合、HAProxy は起動時に全てのバックエンドにクエリを投げるので、起動が遅くなることがあります。

参照