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は、client
とserver
のタイムアウトを同じ値に設定することをお勧めします。
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]