AlmaLinux9 HAProxy ロードバランサーの構築手順

環境
AlmaLinux release 9.2 (Turquoise Kodkod)

概要
HAProxy によるロードバランサーの構築です。
構成

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
HAProxy 10.0.2.50
Web Sever#1 10.0.2.51
Web Sever#1 10.0.2.52
HAProxy 10.0.2.50 Web Sever#1 10.0.2.51 Web Sever#1 10.0.2.52
HAProxy 10.0.2.50
Web Sever#1 10.0.2.51
Web Sever#1 10.0.2.52

HAProxy をインストールしたサーバーへの HTTP 通信をバックエンドの Web Server#1,
Web Server#2 へ負荷分散するように設定します。

操作手順
1.HAProxy をインストールします。
# dnf -y install haproxy

2.HAProxy の設定を行います
# vi /etc/haproxy/haproxy.cfg

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 既存の [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.2.51:80 check
server node02 10.0.2.52:80 check
# 既存の [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.2.51:80 check server node02 10.0.2.52:80 check
# 既存の [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.2.51:80 check
    server             node02 10.0.2.52:80 check

3.haproxyを起動します

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# systemctl enable --now haproxy
# systemctl enable --now haproxy
# systemctl enable --now haproxy

4.Firewalld を有効にしている場合は、HAProxy が待ち受けるポートの許可が必要です。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# firewall-cmd --add-service=http
# firewall-cmd --runtime-to-permanent
# firewall-cmd --add-service=http # firewall-cmd --runtime-to-permanent
# firewall-cmd --add-service=http
# firewall-cmd --runtime-to-permanent

5. HAproxy のデフォルト設定では [local2] ファシリティへログが送信されるため、ファイルに記録できるように Rsyslog の設定を変更します。
# vi /etc/rsyslog.conf

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 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
# 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
# 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

rsyslogを再起動します
# systemctl restart rsyslog

6.バックエンド Web サーバー (Apache httpd の場合) で X-Forwarded-For ヘッダーをロギングするよう設定しておきます。
# vi /etc/httpd/conf/httpd.conf

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 201行目
LogFormat "\"%{X-Forwarded-For}i\" %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
# 201行目 LogFormat "\"%{X-Forwarded-For}i\" %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
# 201行目
LogFormat "\"%{X-Forwarded-For}i\" %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

httpdを再起動する

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# systemctl restart httpd
# systemctl restart httpd
# systemctl restart httpd

 

AlmaLinux 9

Posted by arkgame