HAProxy
HAProxy とは、高可用性(High Availability)、負荷分散、TCPとHTTPベースのアプリケーションにプロキシを提供するソフトウェアです。MySQLの負荷分散などに利用できます。
読み方
- HAProxy
- えいちえーぷろきし
目次
概要
よくあるWebアプリケーションとDBの構成のシステムは、HAProxyを利用しない構成は、このような構成です。
Cluster +-------+ App - DB Driver ----------- | MySQL | App - DB Driver ----------- | MySQL | App - DB Driver ----------- | MySQL | +-------+
この典型的なWebアプリケーションは、データベースのクラスタに接続しています。データベースノードが落ちたときに、クライアントは、サーバリクエストを処理するために、ほかのデータベースノードに再接続しなければなりません。
HAProxyを利用する場合、アプリケーション(App)とDBの間にHAProxyが入ります。
Cluster +-------+ +-------+ App - DB Driver -| HA |- | MySQL | App - DB Driver -| Proxy |- | MySQL | App - DB Driver -| |- | MySQL | +-------+ +-------+
HAProxyは、1つ以上のMySQLサーバに対する接続のキューイングと帯域制限を提供し、1つのサーバが大量のリクエストによって過負荷になることを防ぎます。。 すべてのクライアントは、HAProxyのインスタンスに接続し、プロキシは、ロードバランススキームを使用して、利用できるMySQLの1つのコネクションに転送します。
ヘルスチェック
HAProxyは、ヘルスチェックを実行し、リクエストルーティングのために利用できるサーバを決定します。デフォルトのヘルスチェックは、サーバへのTCP接続の確立の試行です。
不具合の検出
HAProxyは、いかに速くサーバが利用できないことを検出するかを決定するための定義されたパラメータがあります。 デフォルトでは、定期的にサーバが"up"しているかヘルスチェックします。 5秒おきに、サーバの100%のダウン、もしくは、到達不能かわかります。
HAProxyを利用するメリット
- すべてのアプリケーションは、1つのIPを通してクラスタにアクセスします。データベースクラスタのトポロジーは、HAProxyの背後に隠れます。
- MySQLコネクションは、利用可能なDBノードの間でロードバランスされます。
- アプリケーションの変更なく、ノードの追加や削除が可能です。
- データベース接続が最大値に達しても、HAProxyは、追加の新しい接続をキューします。データベース接続リクエストの帯域制限し、過負荷から守ります。
インストール
pkgコマンドでインストールする場合
sudo pkg install haproxy
$ sudo pkg install haproxy Updating FreeBSD repository catalogue... FreeBSD repository is up-to-date. All repositories are up-to-date. The following 1 packages will be affected (of 0 checked): New packages to be INSTALLED: haproxy: 1.5.11 The process will require 3 MiB more space. 730 KiB to be downloaded. Proceed with this action? [y/N]: y Fetching haproxy-1.5.11.txz: 100% 730 KiB 249.1kB/s 00:03 Checking integrity... done (0 conflicting) [1/1] Installing haproxy-1.5.11... [1/1] Extracting haproxy-1.5.11: 100% Message for haproxy-1.5.11: ************************************************* * Congratulations! Haproxy is now installed. * ************************************************* Check the following directories for further info: documentation: '/usr/local/share/doc/haproxy' examples: '/usr/local/share/examples/haproxy' rc.conf variables listing can be found in: '/usr/local/etc/rc.d/haproxy'
設定
sudo sysrc haproxy_enable=YES
使い方
起動
sudo /usr/local/etc/rc.d/haproxy start
停止
sudo /usr/local/etc/rc.d/haproxy stop
再起動
sudo /usr/local/etc/rc.d/haproxy restart
ステータス
sudo /usr/local/etc/rc.d/haproxy status
コマンドの終了を待つ
sudo /usr/local/etc/rc.d/haproxy poll
サービスが有効か確認する
サービスが有効な場合は、0、そうでなければ、1を返します。コマンドは、何も表示しません。
sudo /usr/local/etc/rc.d/haproxy enabled
rc.confの設定を表示します
サービスの制御に使われるrc.conf変数を表示します。
sudo /usr/local/etc/rc.d/haproxy rcvar
設定のリロード
sudo /usr/local/etc/rc.d/haproxy reload
関連項目
ツイート