HAProxyはHighAvailabilityProxyの略です。 Cで記述されており、TCPおよびHTTPベースのアプリケーション向けの無料のオープンソースTCP/HTTPロードバランサーおよびプロキシソリューションです。 HAProxyは、ワークロードを複数のサーバーに分散することにより、サーバー環境のパフォーマンスを向上させるために使用されます。
HAProxyを使用すると、障害が発生した場合に、アプリケーションを自動的に再起動したり、作業を別のサーバーに再ルーティングしたりできます。この強力で高性能、信頼性が高く、安全なロードバランサーは最も広く使用されており、非常にトラフィックの多いWebサイト用に特別に設計されています。
このチュートリアルでは、CentOS8でHAProxyを使用して高可用性ロードバランサーを設定する方法を示します。
前提条件
- Atlantic.Netクラウドプラットフォーム上の3つの新しいCentOS8VPS
- 各VPSで設定されたルートパスワード
このチュートリアルでは、次の設定を使用します:
HAProxyサーバー: –ホスト名:haproxy IP:192.168.0.10
Webサーバー1:- ホスト名:web1 IP:192.168.0.11
Webサーバー2:- ホスト名:web2 IP:192.168.0.12
ステップ1–Atlantic.Netクラウドサーバーを作成する
まず、Atlantic.Netクラウドサーバーにログインします。 1GB以上のRAMを搭載したオペレーティングシステムとしてCentOS8を選択して、新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。
CentOS 8サーバーにログインしたら、次のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。
dnf update -y
ステップ2–Nginxのインストールと構成
注:WebServer1およびWebServer2でこの手順を完了してください
まず、NginxWebサーバーをweb1およびweb2インスタンスにインストールする必要があります。
次のコマンドを実行してNginxをインストールできます:
dnf install nginx -y
Nginxがインストールされたら、Nginxサービスを開始し、両方のインスタンスで起動時に開始できるようにします。
systemctl start nginx systemctl enable nginx
次に、 index.htmlを変更します 各インスタンスのファイル。
index.htmlを変更します web1のファイル 次のコマンドを使用したインスタンス:
echo "This is My First Nginx Web Server" > /usr/share/nginx/html/index.html
index.htmlを変更します web2のファイル 次のコマンドを使用したインスタンス:
echo "This is My Second Nginx Web Server" > /usr/share/nginx/html/index.html
終了したら、ファイルを保存して閉じます。
ステップ3–HAProxyのインストールと設定
注:HAProxyサーバーでこの手順を実行してください
まず、次のコマンドを使用して、haproxyサーバーインスタンスにHAProxyをインストールします。
dnf install haproxy -y
インストールが完了したら、haproxyのデフォルト構成ファイルをバックアップします。
mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg-bak
構成ファイルは、4つの主要なセクションに分かれています。
- グローバル設定: プロセス全体のパラメータを設定するために使用されます。
- デフォルト: 他のすべてのセクションのデフォルトパラメータを設定するために使用されます。
- フロントエンド: バックエンドへのアクセスを有効にするためにHAProxyに外部からアクセスする方法を定義するために使用されます。
- バックエンド: プロキシが着信接続を転送するために接続するサーバーのセットを定義するために使用されます。
次に、次のコマンドを使用して新しいhaproxy構成ファイルを作成します。
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
#統計UNIXソケットをオンにする
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 haproxy_balancer # define the name of the frontend. bind 192.168.0.10:80 # IP address of HAProxy server option http-server-close option forwardfor stats uri /haproxy?stats # Specify the HAProxy status page. default_backend webservers
#———————————————————————
#さまざまなバックエンド間のラウンドロビンバランシング
#———————————————————————
backend webservers#アプリケーションを識別するための名前を指定します
mode http balance roundrobin # defines the roundrobin load balancer scheduling algorithm option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost server nginx-web1 192.168.0.11:80 check # IP address of the first backend server server nginx-web2 192.168.0.12:80 check # IP address of the second backend server
注:サーバーの設定に関連するIPで上記のIPアドレスを修正してください
終了したら、ファイルを保存して閉じます。次に、次のコマンドを使用して、haproxy構成ファイルにエラーがないか確認します。
haproxy -c -f /etc/haproxy/haproxy.cfg
次の出力が得られるはずです:
Configuration file is valid
最後に、haproxyサービスを開始し、次のコマンドを使用して起動時に開始できるようにします。
systemctl start haproxy systemctl enable 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 Fri 2020-04-24 02:14:55 EDT; 5min ago Process: 1371 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q (code=exited, status=0/SUCCESS) Main PID: 1373 (haproxy) Tasks: 2 (limit: 6087) Memory: 2.8M CGroup: /system.slice/haproxy.service ├─1373 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid └─1374 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid Apr 24 02:14:55 haproxy systemd[1]: Starting HAProxy Load Balancer... Apr 24 02:14:55 haproxy systemd[1]: Started HAProxy Load Balancer.
ステップ4–HAProxyログを設定する
HAProxyログを使用すると、バックエンドWebサーバーへの各接続の統計を確認できます。
ファイル/etc/rsyslog.confを編集してrsyslogを構成できます:
nano /etc/rsyslog.conf
次の行のコメントを解除します:
module(load="imudp") input(type="imudp" port="514")
終了したら、ファイルを保存して閉じます。次に、HAProxyログメッセージを受信して処理するように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 restart rsyslog systemctl enable rsyslog
ステップ5–HAProxyの負荷分散をテストする
この時点で、HAProxyがインストールおよび構成されています。負荷分散が機能しているかどうかをテストするときが来ました。
Webブラウザーを開き、HAProxyIPhttp://192.168.0.10と入力します。次の画面に最初のNginxWebサーバーのコンテンツが表示されます。
次に、Webページを更新します。次の画面に2番目のNginxWebサーバーのコンテンツが表示されます。
URL http://192.168.0.10/haproxy?statsを使用して、haproxyのステータスを表示できます。次の画面に、サーバーの状態、現在の要求率、応答時間、およびその他のメトリックが表示されます。
結論
上記のガイドでは、CentOS 8でHAProxyを使用して高可用性ロードバランサーをセットアップする方法を学習しました。これで、ITインフラストラクチャとアプリケーションの要件に合わせてロードバランシングを簡単に設計および構成できます。 Atlantic.NetのVPSホスティングで試してみてください。