HAProxy : HTTP を負荷分散2024/05/28 |
HAProxy によるロードバランサーの構築です。
当例では以下のような環境を例に設定します。 -----------+---------------------------+--------------------------+------------ | | | |10.0.0.30 |10.0.0.51 |10.0.0.52 +----------+-----------+ +-----------+----------+ +-----------+----------+ | [ dlp.srv.world ] | | [ node01.srv.world ] | | [ node02.srv.world ] | | HAProxy | | Web Server#1 | | Web Server#2 | +----------------------+ +----------------------+ +----------------------+ |
HAProxy をインストールしたサーバーへの HTTP 通信をバックエンドの Web Server#1, Web Server#2 へ負荷分散するように設定します。
|
|
[1] | HAProxy をインストールします。 |
root@dlp:~# apt -y install haproxy
|
[2] | HAProxy の設定です。 |
root@dlp:~#
vi /etc/haproxy/haproxy.cfg # 最終行に追記 # フロントエンドを定義 ( [http-in] の箇所は任意の名前 ) frontend http-in # 80 ポートで待ち受け bind *:80 # デフォルトのバックエンドを定義 default_backend backend_servers # X-Forwarded-For ヘッダーを渡す option forwardfor # バックエンドを定義 backend backend_servers # ラウンドロビンで負荷分散 balance roundrobin # バックエンドサーバーを定義 server node01 10.0.0.51:80 check server node02 10.0.0.52:80 check systemctl reload haproxy |
[3] | バックエンド Web サーバーで X-Forwarded-For ヘッダーをロギングするよう設定しておきます。 以下は Apache2 の例ですが、Nginx の場合はこちらの [3] を参照ください。 |
root@node01:~# a2enmod remoteip Enabling module remoteip. To activate the new configuration, you need to run: service apache2 restart
root@node01:~#
vi /etc/apache2/apache2.conf # 212-215行目 : 以下のように変更 # RemoteIPInternalProxy は HAProxy の IP アドレスを指定 RemoteIPHeader X-Forwarded-For RemoteIPInternalProxy 10.0.0.30 LogFormat "%v:%p %a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%a %l %u %t \"%r\" %>s %O" commonroot@node01:~# systemctl reload apache2 |
[4] | 任意のクライアントコンピューターからフロントエンドサーバーへ HTTP アクセスして動作確認しておきます。 |
Sponsored Link |