HAProxy : HTTP を負荷分散2024/04/16 |
|
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:~ # pkg install -y haproxy
|
| [2] | HAProxy の設定です。 |
|
root@dlp:~ #
vi /usr/local/etc/haproxy.conf # 新規作成
global
log 127.0.0.1:514 local1 info
chroot /var/empty
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
# # フロントエンドを定義 ( http-in の箇所は任意の名前 )
frontend http-in
# 80 ポートで待ち受け
bind *:80
# デフォルトのバックエンドを定義
default_backend backend_servers
# バックエンドを定義
backend backend_servers
# ラウンドロビンで負荷分散
balance roundrobin
# バックエンドサーバーを定義
server node01 10.0.0.51:80 check
server node02 10.0.0.52:80 check
pw useradd haproxy -u 200 -d /var/empty -s /usr/sbin/nologin root@dlp:~ # service haproxy enable haproxy enabled in /etc/rc.conf root@dlp:~ # service haproxy start Starting haproxy. |
| [3] | HAproxy のログをファイルに記録できるように Syslogd の設定を変更します。 |
|
root@dlp:~ #
vi /etc/syslog.conf # 8行目 : 追記
*.err;kern.warning;auth.notice;mail.crit /dev/console
local1.* /var/log/haproxy.log
*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
root@dlp:~ # touch /var/log/haproxy.log root@dlp:~ # chown haproxy:haproxy /var/log/haproxy.log root@dlp:~ # sysrc syslogd_flags="-b localhost -C" syslogd_flags: -s -> -b localhost -C root@dlp:~ # service syslogd restart |
| [4] | バックエンド Web サーバー (Apache httpd の場合) で X-Forwarded-For ヘッダーをロギングするよう設定しておきます。 |
|
root@node01:~ #
vi /usr/local/etc/apache24/httpd.conf # 316,317行目 : 以下のように変更 LogFormat " \"%{X-Forwarded-For}i\" %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedLogFormat " \"%{X-Forwarded-For}i\" %l %u %t \"%r\" %>s %b" common
service apache24 reload |
| [5] | 任意のクライアントコンピューターから HAProxy フロントエンドサーバーへ HTTP アクセスして動作を確認しておきます。 |
|
|
| Sponsored Link |
|
|