HAProxy : HTTP を負荷分散2024/05/28 |
|
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 systemctl reload 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 LogFormat "%a %l %u %t \"%r\" %>s %O" commonroot@node01:~# systemctl reload apache2 |
| [4] | 任意のクライアントコンピューターからフロントエンドサーバーへ HTTP アクセスして動作確認しておきます。 |
|
|
| Sponsored Link |
|
|