HAProxy

提供: FreeBSD入門
2015年3月18日 (水) 00:44時点におけるDaemon (トーク | 投稿記録)による版 (ページの作成:「HAProxy とは、高可用性(High Availability)、負荷分散、TCPとHTTPベースのアプリケーションにプロキシを提供するソフトウェアです...」)

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索
スポンサーリンク

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

関連項目




スポンサーリンク