CentOS Stream 9
Sponsored Link

HAProxy : HTTP を負荷分散
2022/03/22
 
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 ~]#
dnf -y install haproxy
[2] HAProxy の設定です。
[root@dlp ~]#
vi /etc/haproxy/haproxy.cfg
# 既存の [frontend ***] [backend ***] セクションは
# コメント化して自身に必要な設定を最終行に追記
# フロントエンドを定義 ( 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 enable --now haproxy

[3] Firewalld を有効にしている場合は、HAProxy が待ち受けるポートの許可が必要です。
[root@dlp ~]#
firewall-cmd --add-service=http

success
[root@dlp ~]#
firewall-cmd --runtime-to-permanent

success
[4] HAproxy のデフォルト設定では [local2] ファシリティへログが送信されるため、ファイルに記録できるように Rsyslog の設定を変更します。
[root@dlp ~]#
vi /etc/rsyslog.conf
# 30,31行目 : コメント解除して追記

module(load="imudp") # needs to be done just once
input(type="imudp" port="514")
$AllowedSender UDP, 127.0.0.1
# 46行目 : 以下のように変更

*.info;mail.none;authpriv.none;cron.none;local2.none    /var/log/messages
local2.*                                                /var/log/haproxy.log

[root@dlp ~]#
systemctl restart rsyslog

[5] バックエンド Web サーバー (Apache httpd の場合) で X-Forwarded-For ヘッダーをロギングするよう設定しておきます。
[root@node01 ~]#
vi /etc/httpd/conf/httpd.conf
# 201行目 : 以下のように変更

LogFormat "
\"%{X-Forwarded-For}i\"
%l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
[root@node01 ~]#
systemctl restart httpd

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