Debian 11 Bullseye
Sponsored Link

HAProxy : HTTP を負荷分散2021/09/15

 
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

root@dlp:~#
systemctl restart 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

root@node01:~#
systemctl restart apache2

[4] 任意のクライアントコンピューターからフロントエンドサーバーへ HTTP アクセスして動作確認しておきます。
関連コンテンツ