GNU/Linux >> Linux の 問題 >  >> Linux

CentOS7でNginxのロードバランサーとしてHAProxyを設定する方法

ウィリータローによって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ロードバランサーを設定する方法に関するこのチュートリアルをまとめたものです。お気軽に試して、このガイドをソーシャルネットワークで共有してください。いつものように、フィードバックをいただければ幸いです。


Linux
  1. Ubuntu16.04でHAProxyをセットアップする方法

  2. HAProxyロードバランサーを設定する方法

  3. CentOSでNTPサーバーをセットアップする方法は?

  1. LinuxでNGINXをTCP/UDPロードバランサーとして構成する方法

  2. CentOS7でMariaDBのロードバランサーとしてHAProxyを設定する方法

  3. CentOS 7.xでVSFTPDを設定するにはどうすればよいですか?

  1. CentOS7でNginxのロードバランサーとしてHAProxyを設定する方法

  2. CentOS8でKeepAlivedを使用して高可用性NGINXをセットアップする方法

  3. Debian11でApacheのリバースプロキシとしてNginxを設定する方法