HAProxyについて


HAProxy(High Availability Proxy)は、任意のTCPサービスの負荷を分散できるオープンソースのロードバランサーです。 セッションの永続性とレイヤー7処理をサポートするため、HTTP負荷分散に特に適しています。

DigitalOcean Private Networking を使用すると、HAProxyをフロントエンドとして構成して、プライベートネットワーク接続を介して2つのVPSの負荷を分散できます。

プレリュード


ここでは3つのVPS(ドロップレット)を使用します。

ドロップレット1-ロードバランサーホスト名:haproxy OS:UbuntuパブリックIP:1.1.1.1プライベートIP:10.0.0.100

ドロップレット2-ノード1ホスト名:lamp1 OS:UbuntuプライベートIP上のLAMP:10.0.0.1

ドロップレット2-ノード2ホスト名:lamp2 OS:UbuntuプライベートIP上のLAMP:10.0.0.2

HAProxyのインストール


apt-getコマンドを使用してHAProxyをインストールします。

apt-get install haproxy

initスクリプトでHAProxyを起動できるようにする必要があります。

nano /etc/default/haproxy

ENABLEDオプションを1に設定します

ENABLED=1

この変更が適切に行われたかどうかを確認するには、パラメータなしでHAProxyのinitスクリプトを実行します。 次のように表示されます。

root@haproxy:~# service haproxy
Usage: /etc/init.d/haproxy {start|stop|reload|restart|status}

HAProxyの設定


デフォルトの構成ファイルを移動して、独自の構成ファイルを作成します。

mv /etc/haproxy/haproxy.cfg{,.original}

新しい構成ファイルを作成および編集します。

nano /etc/haproxy/haproxy.cfg

このファイルにブロックごとに構成を追加することから始めましょう。

global
	log 127.0.0.1 local0 notice
	maxconn 2000
	user haproxy
	group haproxy

logディレクティブは、ログメッセージの送信先となるsyslogサーバーについて言及しています。 Ubuntuでは、rsyslogはすでにインストールされ実行されていますが、IPアドレスをリッスンしません。 rsyslogの設定ファイルは後で変更します。

maxconnディレクティブは、フロントエンドでの同時接続の数を指定します。 デフォルト値は2000であり、VPSの構成に応じて調整する必要があります。

userおよびgroupディレクティブは、HAProxyプロセスを指定されたユーザー/グループに変更します。 これらは変更しないでください。

defaults
	log     global
	mode    http
	option  httplog
	option  dontlognull
	retries 3
	option redispatch
	timeout connect  5000
	timeout client  10000
	timeout server  10000

このセクションではデフォルト値を指定しています。 変更する値は、さまざまなtimeoutディレクティブです。 connectオプションは、VPSへの接続試行が成功するのを待機する最大時間を指定します。

clientおよびserverタイムアウトは、クライアントまたはサーバーがTCPプロセス中にデータを確認または送信することが期待される場合に適用されます。 HAProxyは、clientserverのタイムアウトを同じ値に設定することをお勧めします。

retriesディレクティブは、接続障害後にVPSで実行する再試行回数を設定します。

option redispatchは、接続障害が発生した場合のセッションの再配布を可能にします。 したがって、VPSがダウンすると、セッションのスティッキネスが上書きされます。

listen appname 0.0.0.0:80
	mode http
	stats enable
	stats uri /haproxy?stats
	stats realm Strictly\ Private
	stats auth A_Username:YourPassword
	stats auth Another_User:passwd
	balance roundrobin
	option httpclose
	option forwardfor
	server lamp1 10.0.0.1:80 check
	server lamp2 10.0.0.2:80 check

これには、フロントエンドとバックエンドの両方の構成が含まれます。 アプリケーションを識別するための単なる名前であるappnameをポート80でリッスンするようにHAProxyを構成しています。 statsディレクティブは、接続統計ページを有効にし、stats authディレクティブで指定された資格情報を使用してHTTP基本認証で保護します。

このページはstats uriに記載されているURLで表示できるため、この場合はhttp://1.1.1.1/haproxy?statsです。 このページのデモはここで見ることができます

balanceディレクティブは、使用する負荷分散アルゴリズムを指定します。 使用可能なオプションは、ラウンドロビン(roundrobin)、静的ラウンドロビン(static-rr)、最小接続(leastconn)、ソース(source)、URI([ X135X]