インターネット上にアプリケーションを展開する場合、アプリケーションの可用性、スケーラビリティ、およびパフォーマンスは、ユーザーエクスペリエンスを向上させるために非常に重要です。負荷分散、クラスタリング、プロキシなど、冗長性を導入するテクノロジーはたくさんあります。
HAProxyは、トラフィックの多いWebサイト向けに設計された、無料のオープンソースで信頼性の高いロードバランサーです。着信トラフィックを複数のバックエンドサーバーに分散することで負荷分散します。
この記事では、RockyLinux8にHAProxyをインストールする方法を紹介します。
このチュートリアルでは、次の設定を使用します。
サーバー IPアドレス
HAProxy 172.16.10.10
バックエンド1 172.16.10.11
バックエンド2 172.16.10.12
- RockyLinux8を実行しているサーバー。
- ルートパスワードはサーバーで構成されています。
HAProxyをインストール
デフォルトでは、HAProxyパッケージはRockyLinux8のデフォルトリポジトリで利用できます。次のコマンドでインストールできます:
dnf install haproxy -y
HAProxyがインストールされたら、HAProxyサービスを開始し、システムの再起動時に開始できるようにします。
systemctl start haproxy
systemctl enable haproxy
HAProxyを構成する
次に、/ etc / haproxy / haproxy.cfgファイルを編集し、フロントエンドとバックエンドの2つのセクションを変更する必要があります。 [フロントエンド]セクションで、HAProxy IPのポート、統計URI、およびバックエンド名を定義する必要があります。 [バックエンド]セクションで、負荷分散アルゴリズム、バックエンドサーバーの名前、IP、およびポートを定義する必要があります。
nano /etc/haproxy/haproxy.cfg
次のセクションを変更します。
frontend http_balancer bind 172.16.10.10:80 option http-server-close option forwardfor stats uri /haproxy?stats default_backend Apache_webservers backend apache_webservers mode http balance roundrobin option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost server apache1 172.16.10.11:80 check server apache2 172.16.10.12:80 check
終了したらファイルを保存して閉じ、/ etc/rsyslog.confファイルを編集する必要があります。
nano /etc/rsyslog.conf
次の行のコメントを解除します:
module(load="imudp") input(type="imudp" port="514")
ファイルを保存して閉じてから、次のコマンドを使用してrsyslogのhaproxy.confファイルを作成します。
nano /etc/rsyslog.d/haproxy.conf
次の行を追加します:
local2.=info /var/log/haproxy-access.log local2.notice /var/log/haproxy-info.log
次に、rsyslogサービスを開始し、システムの再起動時に開始できるようにします。
systemctl start rsyslog
systemctl enable rsyslog
最後に、HAProxyサービスを再起動して、変更を適用します。
systemctl restart haproxy
次のコマンドを使用して、HAProxyサービスのステータスを確認することもできます。
systemctl status haproxy
次の出力が表示されます。
? haproxy.service - HAProxy Load Balancer Loaded: loaded (/usr/lib/systemd/system/haproxy.service; disabled; vendor preset: disabled) Active: active (running) since Tue 2021-08-03 03:10:37 EDT; 1min 16s ago Process: 44032 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q $OPTIONS (code=exited, status=0/SUCCESS) Main PID: 44036 (haproxy) Tasks: 2 (limit: 12524) Memory: 3.1M CGroup: /system.slice/haproxy.service ??44036 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid ??44111 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid Aug 03 03:10:36 RockyLinux8 systemd[1]: Starting HAProxy Load Balancer... Aug 03 03:10:37 RockyLinux8 systemd[1]: Started HAProxy Load Balancer.
次に、すべてのサーバーでfirewalldを構成し、ポート80がファイアウォールを通過できるようにする必要があります。
次のコマンドを実行して、ポート80を許可できます。
firewall-cmd --permanent --add-port=80/tcp
次に、firewalldサービスをリロードして変更を適用します。
firewall-cmd --reload
次に、両方のバックエンドサーバーにApacheサーバーをインストールする必要があります。次のコマンドを実行して、Apacheサーバーをインストールします。
dnf install httpd -y
Apacheサーバーをインストールしたら、Apacheサービスを開始し、システムの再起動時に開始できるようにします。
systemctl start httpd
systemctl enable httpd
次に、両方のバックエンドサーバーでデフォルトのindex.htmlファイルを変更する必要があります。
最初のバックエンドで、次のコマンドを使用してindex.htmlファイルを編集します。
nano /usr/share/httpd/noindex/index.html
すべての行を削除し、次の行を追加します:
Welcome to First Apache Web Server!
終了したら、ファイルを保存して閉じます。
2番目のバックエンドで、次のコマンドを使用してindex.htmlファイルを編集します。
nano /usr/share/httpd/noindex/index.html
すべての行を削除し、次の行を追加します:
Welcome to Second Apache Web Server!
終了したら、ファイルを保存して閉じます。
HAProxyを確認する
この時点で、HAProxyは、負荷分散アルゴリズムに基づいてすべての着信要求をバックエンドサーバーに転送するように構成されています。次に、HAProxyが正しく機能しているかどうかを確認します。
Webブラウザーを開き、URL http://172.16.10.10にHAProxyIPを入力します。 。最初のApacheWebサーバーページが表示されます:
次に、同じページをもう一度更新すると、2番目のApacheWebサーバーページが表示されます。
これにより、HAProxyが期待どおりに機能し、2つのバックエンドサーバー間でトラフィックを分散していることが確認されます。
おめでとう!これで、Rocky Linux 8にHAProxyロードバランサーが正常にインストールおよび構成されました。これで、実稼働環境にHAProxyを実装して、高いパフォーマンスとスケーラビリティを実現できます。