HAProxyは、無料のHTTP/TCP高可用性ロードバランサーおよびプロキシサーバーです。単一のサーバーの障害に起因する問題を軽減するために、複数のサーバーに要求を分散します。 HA Proxyは、GitHub、Bitbucket、Stack Overflow、Reddit、Tumblr、Twitter、Tuentiなどの多くの有名なWebサイトで使用されており、AmazonWebServicesのOpsWorks製品で使用されています。
ここLinuxAPTでは、サーバー管理サービスの一部として、お客様が関連するHAProxy構成クエリを実行するのを定期的に支援しています。
これに関連して、CentOS8システムにHAProxyをインストールする方法を検討します。
CentOS8にHAProxyをインストールして設定する手順
1.システムアップデートを実行します
まず、システムが最新であることを確認することから始めましょう:
$ sudo clean all
$ sudo dnf update
2.システムにHAProxyをインストールします
HAProxyはデフォルトのCentOS8で使用できます。次に、次のdnfaコマンドを使用してHAProxyをインストールします。
$ sudo dnf install haproxy
次に、サーバーを再起動するたびにHAProxyが起動することを確認する必要があります。これは、以下のchkconfigコマンドで実行できます。
$ chkconfig haproxy on
3.HAProxyを構成します
必要な設定と構成を含む構成ファイル/etc/haproxy/haproxy.cfgを作成します。
$ sudo nano /etc/haproxy/haproxy.cfg
ファイルに次のように入力します:
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
ssl-default-bind-ciphers PROFILE=SYSTEM
ssl-default-server-ciphers PROFILE=SYSTEM
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
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
frontend main
bind *:5000
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
use_backend static if url_static
default_backend app
backend static
balance roundrobin
server static 127.0.0.1:4331 check
backend app
balance roundrobin
server app1 127.0.0.1:5001 check
server app2 127.0.0.1:5002 check
server app3 127.0.0.1:5003 check
server app4 127.0.0.1:5004 check
構成の詳細を表示できます。詳細については、このURLを確認してください。 HAProxyを設定したら、サービスを開始します。
$ sudo systemctl start haproxy
$ sudo systemctl enable haproxy
4.ファイアウォールを構成する
HAProxyをCentOS8ファイアウォールに追加し、次のコマンドでルールを更新します。
$ sudo firewall-cmd --add-port=8088/tcp --permanent
$ sudo firewall-cmd --reload
5.HAProxyログを設定する
HAProxy標準ロギングを構成するには、/ etc / rsyslog.confを編集し、ポート514でUDPSyslog受信を有効にします。
$ sudo nano /etc/rsyslog.conf
...
# Provides UDP syslog reception
# for parameters see http://www.rsyslog.com/doc/imudp.html
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")
...
*.info;mail.none;authpriv.none;cron.none,local2.none /var/log/messages
local2.* /var/log/haproxy.log
...
次に、構成ファイルを保存し、以下のコマンドを実行してエラーを確認します。
$ rsyslogd -N1
$ sudo systemctl restart rsyslog haproxy
6.ApacheX-Forwarded-バックエンドサーバーへのログオン用に構成する
次に、バックエンドサーバーにログインし、X-Forwarded-Forヘッダーをログに記録するようにApacheを構成します。変更するデフォルトの行は次のとおりです。
...
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
...
次のようにこの行を編集します:
...
LogFormat "\"%{X-Forwarded-For}i\" %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
...
ファイルを保存してApacheを再起動します:
$ apachectl configtest
$ sudo systemctl restart httpd
HAProxyロードバランサーをテストする方法は?
HAProxyがHTTPリクエストの負荷を分散できることを確認するには、ブラウザに移動し、ホスト名またはIPアドレスのいずれかを使用してHAProxyにアクセスします。
HAProxyを再起動する方法は?
レイヤー4またはレイヤー7のいずれかを構成した後、次のコマンドを使用してHAProxyを再起動します。
$ systemctl restart haproxy
再起動が成功すると、出力は表示されません。つまり、HAProxyは、実装したばかりの変更で稼働しています。