ウィリータローによってCで書かれたHAProxyは、高可用性プロキシとも呼ばれ、高速で軽量のHTTPロードバランサーおよびプロキシサーバーです。 CPU使用率が低く、メモリフットプリントが小さいことが原因です。ロードバランサーは、StackOverflow、Twitter、Github、Tumblrなどの人気のあるウェブサイトで使用されています。
このガイドでは、CentOS7でNginxWebサーバーのロードバランサーとしてHAProxyを設定する方法を示します。ロードバランサーは2つのNginxWebサーバーの前に配置され、サーバーにHTTPリクエストを均等に分散します。
HAProxyバランスアルゴリズム
これは、ワークロードを分散するときにWebサーバーを選択するためにロードバランサーが使用するアルゴリズムです。
1。ラウンドロビン
これは最も単純なアルゴリズムです。基本的に、新しい接続はそれぞれ次のWebサーバーによって処理されます。たとえば、4つのバックエンドサーバーがある場合、それぞれが連続してリクエストを処理します。リストの最後のWebサーバーに到達すると、ロードバランサーは最初のWebサーバーから再び上から起動します。
2。 Lastconn
ここで、新しいリクエストは、接続数が最も少ないサーバーによって処理されます。これは、リクエストの負荷と時間が大幅に異なる場合に便利です。
はじめに
開始するには、飛行前チェックリストを実行し、次のものがあることを確認します。
1。 CentOS7サーバー
ホスト名 | サーバーIPアドレス |
---|---|
ロードバランサー | 173.82.168.96 |
web-server-1 | 173.82.2.236 |
web-server-2 | 173.82.94.57 |
2。すべてのサーバーへのSSHアクセス
以下は、セットアップのグラフィック表現です。
ステップ1:ロードバランサーで/ etc/hostsファイルを構成する
SSHを使用してロードバランサーにログインし、図のようにNginxWebサーバーのIPアドレスとホスト名を追加します。
vim /etc/hosts
173.82.2.236 web-server-1
173.82.94.57 web-server-2
vimテキストエディタを保存して終了します。
次に、各Webサーバー(web-server-1およびweb-server-2)にログインし、/etc/hosts
を編集します。 ロードバランサーを指すファイル。
173.82.168.96 load-balancer
テキストエディタを保存して終了します。
ステップ2:ロードバランサーサーバーにHAProxyをインストールして構成する
HAProxyリポジトリは、CentOSリポジトリですぐに利用できます。 HAProxyをインストールして設定するには、まず、ログインしてシステムリポジトリを更新します。
yum update -y
次に、次のコマンドを使用してHAProxyをインストールします。
yum -y install haproxy
サンプル出力
インストールが正常に完了したら、haproxyディレクトリに移動します。
cd /etc/haproxy
haproxy.cfg
をバックアップします ファイルの名前をhaproxy.cfg.bak
に変更します。
mv haproxy.cfg haproxy.cfg.bak
次に、新しいHAproxy構成ファイルを作成します。
vim haproxy.cfg
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
log 127.0.0.1 local2 #Log configuration
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy #Haproxy running under user and group "haproxy"
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
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
#---------------------------------------------------------------------
#HAProxy Monitoring Config
#---------------------------------------------------------------------
listen haproxy3-monitoring *:8080 #Haproxy Monitoring run on port 8080
mode http
option forwardfor
option httpclose
stats enable
stats show-legends
stats refresh 5s
stats uri /stats #URL for HAProxy monitoring
stats realm Haproxy\ Statistics
stats auth Password123: Password123 #User and Password for login to the monitoring dashboard
stats admin if TRUE
default_backend app-main #This is optionally for monitoring backend
#---------------------------------------------------------------------
# FrontEnd Configuration
#---------------------------------------------------------------------
frontend main
bind *:80
option http-server-close
option forwardfor
default_backend app-main
#---------------------------------------------------------------------
# BackEnd round robin as balance algorithm
#---------------------------------------------------------------------
backend app-main
balance roundrobin #Balance algorithm
option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost #Check the server application is up and healty - 200 status code
server web-server-1 173.82.2.236:80 check #Nginx1
server web-server-2 173.82.94.57:80 check #Nginx2
出力に示されているように、最後の2行で指定されているWebサーバーに注意してください。
テキストエディタを保存して終了します。
次に、 rsyslogを構成します HAProxy統計をログに記録するデーモン。
rsyslog.conf
を編集します UDPポート514をrsyslogで使用できるようにするファイル。
vim /etc/rsyslog.conf
ポート154を介したUDP接続を許可するには、次の行のコメントを解除します。
$ModLoad imudp
$UDPServerRun 514
テキストエディタを保存して終了します。
次に、syslog用の新しいHAProxy構成ファイルを作成します。
vim /etc/rsyslog.d/haproxy.conf
次の構成を貼り付けます
local2.=info /var/log/haproxy-access.log #For Access Log
local2.notice /var/log/haproxy-info.log #For Service Info - Backend, loadbalancer
テキストエディタを保存して終了します。
続行してrsyslogを再起動します。
systemctl restart rsyslog
次に、起動時にHaproxyを起動して有効にします。
systemctl start haproxy
systemctl enable haproxy
HaProxyが稼働していることを確認するには、次を実行します。
systemctl status haproxy
次のステップでは、NginxをWebサーバーにインストールします。
ステップ3:Nginxのインストールと構成
残っている唯一の重要なステップは、各WebサーバーにNginxをインストールすることです。
ただし、最初に、図のようにEPELリポジトリをインストールします
yum install epel-release
次に、Nginxをインストールします
yum install nginx -y
サンプル出力
Nginxが両方のサーバーにインストールされているので、index.html
を変更します HAproxyロードバランサーでシミュレーションするときに各サーバーを区別するために、各NginxWebサーバーにファイルを配置します。
図のようにhtmlディレクトリに移動します:
cd /usr/share/nginx/html/
index.htmlファイルをバックアップする
mv index.html index.html.bak
次に、新しいindex.htmlファイルを作成し、サンプルコンテンツを貼り付けます。
Webサーバー1の場合
echo "web-server-1. Hey ! This is your first web server" > index.html
Webサーバー2の場合
echo "web-server-2. Hey ! This is your second web server" > index.html
次に、両方のWebサーバーでNginxを起動し、サービスが実行されているかどうかを確認します
systemctl start nginx
systemctl status nginx
負荷分散のテスト
すべてがうまくいったことを確認するには、次のコマンドを繰り返し実行します。
curl 173.82.168.96
出力は次のようになります。
よく観察できるように、curlコマンドを実行するたびに、出力は最初のWebサーバーコンテンツと2番目のWebサーバーコンテンツの間で交互に表示されます。
それでは、Webブラウザを使用してテストしてみましょう。
https://load-balancer-IP-address
これにより、いずれかのWebサーバー(この場合はweb-server-2)のコンテンツが表示されます。
ここで、1回または2回更新してみてください。出力は、他のWebサーバー(この場合はweb-server-1)を指します。
素晴らしい!これにより、ロードバランサーがWebサーバー間でHTTPリクエストを公平に分散できることが確認されます。
ロードバランサブラウザの統計をさらに収集するには、次のURLを使用してください
https://load-balancer-IP:8080/stats
haproxy.cfg
で定義したように、ユーザー名とパスワードとしてPassword123を使用します 構成ファイル。
これは、CentOS 7でNginx用のHAProxyロードバランサーを設定する方法に関するこのチュートリアルをまとめたものです。お気軽に試して、このガイドをソーシャルネットワークで共有してください。いつものように、フィードバックをいただければ幸いです。