Ubuntu 18.04
Sponsored Link

HAProxy : HTTP を負荷分散2018/12/04

 
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 ヘッダーをロギングするよう設定しておきます。
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 アクセスして動作を確認してください。
関連コンテンツ