GNU/Linux >> Linux の 問題 >  >> Cent OS

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

HAProxyまたは高可用性プロキシは、オープンソースのTCPおよびHTTPロードバランサーおよびプロキシサーバーソフトウェアです。 HAProxyはCでWillyTarreauによって作成されており、SSL、圧縮、キープアライブ、カスタムログ形式、お​​よびヘッダーの書き換えをサポートしています。 HAProxyは、メモリフットプリントが小さく、CPU使用率が低い、高速で軽量のプロキシサーバーおよびロードバランサーです。 Github、StackOverflow、Reddit、Tumblr、Twitterなどの大規模なサイトで使用されています。過去数年間で最も人気のあるソフトウェアロードバランサーおよびプロキシサーバーになりました。

このチュートリアルでは、3台のサーバー、1台のロードバランサー、および2台のNginxWebサーバーのHAProxyのインストールと構成について説明します。単一のサーバーにHAProxyをインストールしてから、他のサーバーにNginxWebサーバーをインストールします。 HAProxyは、NginxWebサーバーのロードバランサーとして機能します。

HAProxyの基本概念

レイヤー4とレイヤー7

HAProxyは、TCPモードのレイヤー4とHTTPモードのレイヤー7の2つのモードで実行できます。レイヤー4 TCPモードでは、HAProxyはRAWTCPパケットをクライアントからアプリケーションサーバーに転送します。レイヤー7HTTPモードでは、HAProxyはHTTPヘッダーを解析してからアプリケーションサーバーに転送します。このチュートリアルでは、レイヤー7HTTPモードのみをサポートするWebサーバーとしてNginxを使用します。

バランスアルゴリズム

これは、負荷分散を行うときにサーバーを選択するためにHAProxyによって使用されるアルゴリズムです。次のモードを使用できます。

ラウンドロビン

これは最も単純なバランスアルゴリズムです。新しい接続ごとに、次のバックエンドサーバーによって処理されます。リストの最後のバックエンドサーバーに到達すると、バックエンドリストの先頭から再起動します。

ラストコン

新しい接続は、接続数が最も少ないバックエンドサーバーによって処理されます。これは、リクエストの時間と負荷が大きく異なる場合に役立ちます。

ソース

これはスティッキーセッション用です。クライアントIPはハッシュされ、このIPから最後のリクエストを受信したバックエンドサーバーを判別します。したがって、IP Aは常にバックエンド1によって処理され、IPBはセッションを中断しないように常にbanckend2によって処理されます

oその他のアルゴリズムがあります。詳細については、公式のHAProxyサイトを確認してください。

前提条件
  • 3 CentOS 7

ロードバランサー
192.168.1.102

nginx1
192.168.1.104

nginx2
192.168.1.105

  • 3台すべてのサーバーでのルート権限。

ステップ1-/etc/hostsファイルを構成します

ロードバランサーサーバーにログインし、/ etc/hostsファイルを編集します。

ssh[メール保護]
sudo su
 vi / etc / hosts 

nginx1およびnginx2のホスト名を追加します:

 192.168.1.104 nginx1.loadbalancer.me nginx1 
192.168.1.105 nginx2.loadbalancer.me nginx2

ファイルを保存してエディタを終了します。

次に、Nginxサーバー(nginx1およびnginx2)のhostsファイルを編集します。

ssh[メール保護]
ssh[メール保護]

ホストファイルのロードバランサーの新しい行を編集して追加します:

 vi / etc / host 

各nginxサーバーにロードバランサーのホスト名を追加します:

192.168.1.102ロードバランサー

nginx1およびnginx2サーバーでこれを実行します。

ステップ2-HAProxyをインストールして設定する

HAProxyはCentOS7リポジトリで利用可能であり、ロードバランサーサーバーにログインして、パッケージリストを更新します。

ssh[メール保護]
yum -y update

次に、次のyumコマンドを使用してHAProxyをインストールします。

 yum -y install haproxy 

インストールが完了したら、「/ etc / haproxy /」ディレクトリに移動し、元の構成ファイルをバックアップします。

 cd / etc / haproxy / 
mv haproxy.cfg haproxy.cfg.orig

次に、viエディターを使用して新しいHAProxy構成ファイル「haproxy.cfg」ファイルを追加します。

 vi haproxy.cfg 

以下に設定を貼り付けます:

#---------------------------------------------- ----------------------- 
#グローバル設定
#--------------- -------------------------------------------------- ----
global
log 127.0.0.1 local2 #Log configuration

chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
ユーザーhaproxy#Haproxyがユーザーおよびグループ「haproxy」の下で実行されている
グループ統計ソケット/var/ lib / haproxy / stats

#------------------------------- --------------------------------------
#すべての'がリッスンする一般的なデフォルト'および'backend'セクションは
#ブロックで指定されていない場合に使用されます
#-------------------------- -------------------------------------------
デフォルト
モードhttp
ロググローバル
オプションhttplog
オプションdontlognull
オプションhttp-server-close
オプションforwardfor127.0.0.0/8
オプションhttp
タイムアウトキュー1m
タイムアウト接続10秒
タイムアウトクライアント1m
タイムアウトサーバー1m
タイムアウトhttp-keep-alive10s

#--------------------------------------- ------------------------------
#HAProxy Monitoring Config
#------- -------------------------------------------------- ------------
listen haproxy3-monitoring *:8080#HaproxyMonitoringはポート8080で実行されます
モードhttp
オプションforwardfor
オプションhttpclose
stats enable
stats show-legends
stats refresh 5s
stats uri / stats #UR LforHAProxyモニタリング
statsrealm Haproxy \ Statistics
stats auth howtoforge:howtoforge#モニタリングダッシュボードにログインするためのユーザーとパスワード
stats admin if TRUE
default_backend app-main#オプションでバックエンドを監視するためのものです

#------------------------------------ ---------------------------------
#フロントエンド構成
#----- -------------------------------------------------- --------------
frontend main
bind *:80
option http-server-close
option forwardfor
default_backend app -メイン

#------------------------------------------------------- ------------------------------
#バランスアルゴリズムとしてのバックエンドラウンドロビン
#----- -------------------------------------------------- --------------
バックエンドアプリ-メイン
バランスラウンドロビン#バランスアルゴリズム
オプションhttpchk HEAD / HTTP / 1.1 \ r \ nホスト:\ localhost# Chサーバーアプリケーションが稼働していることを確認します-200ステータスコード
servernginx1 192.168.1.104:80 check#Nginx1
server nginx2 192.168.1.105:80 check pre> #Nginx

構成ファイルを保存して終了します。

次に、HAProxyのrsyslogを構成します。

HAProxy統計をログに記録するようにrsyslogデーモンを構成します。 rsyslog.confファイルを編集して、UDPポート514をrsyslogで使用できるようにします。

 vi /etc/rsyslog.conf 

この行のコメントを解除して、UDP接続を有効にします。

 $ ModLoad imudp 
$ UDPServerRun 514

特定のIPを使用する場合は、次のような新しい行を追加できます。

 $ UDPServerAddress 127.0.0.1 

ファイルを保存して終了します。

次に、rsyslogの新しいhaproxy構成ファイルを作成します。

 cd /etc/rsyslog.d/ 
vi haproxy.conf

以下に構成を貼り付けます:

local2。=info/var/log/haproxy-access.log#アクセスログの場合
local2.notice /var/log/haproxy-info.log#サービス情報の場合-バックエンド、ロードバランサー

保存して終了します。

次に、rsyslogを再起動してから、haproxyを起動します。

 systemctl restart rsyslog 
systemctl start haproxy

起動時に開始するhaproxyを追加します:

 systemctl enable haproxy 

ステップ3-Nginxをインストールして構成する

このセクションでは、nginx1およびnginx2サーバーのepelリポジトリからNginxをインストールします。

サーバーにログインします:

ssh[メール保護]
ssh[メール保護]

以下のyumコマンドを使用してepelリポジトリをインストールします。

 yum -y install epel-release 

これで、Nginxをインストールできます:

 yum -y install nginx 

Nginxがインストールされています。 Webディレクトリに移動し、インデックスファイルを変更して、2つのサーバーのどちらがhtmlファイルを配信したかを確認します。

 cd / usr / share / nginx / html / 
echo "

nginx1.loadbalance.me

"> index.html#nginx1サーバーの場合
echo "

nginx2 .loadbalance.me

"> index.html#nginx2サーバーの場合

次に、Nginxを追加して起動時に開始し、次に開始します:

 systemctl enable nginx 
systemctl start nginx

nginx1およびnginx2サーバーでこの手順を実行していることを確認してください。

ステップ4-テスト

ロードバランサーIPにアクセスしてブラウザーからテストする: 192.168.1.102

curlコマンドを使用したテスト:

 curl 192.168.1.102 

ユーザー名とパスワード「howtoforge」を使用してポート8080で実行されているHAProxyWebモニタリングにログインするためのテスト:

http://192.168.1.102:8080/stats

HAProxyは正常に機能しており、2つのNginxウェブサーバーのロードバランサーとして機能します。

結論

HAProxyまたは高可用性プロキシは、TCPベースのサービスに高可用性を提供するオープンソースソフトウェアであり、HTTPロードバランサーおよびプロキシサーバーとして動作します。このソフトウェアはCで記述されており、SSL、キープアライブ、および圧縮をサポートしています。 HAProxyは、メモリフットプリントが小さく、CPU使用率が低く、高速で軽量なロードバランサーとプロキシサーバーを必要とするすべての人に最適です。 Haproxyは、レイヤー4TCPモードとレイヤー7HTTPモードで実行できます。 Nginxは、HAProxyを使用したレイヤー7HTTPモードのみをサポートします。レイヤー4TCPモードを使用する場合は、apacheなどの他のWebサーバーを使用できます。 CentOS 7では、HAProxyはデフォルトのリポジトリで利用できます。インストールと構成は簡単です。


Cent OS
  1. CentOS7にNginxをインストールする方法

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

  3. CentOS/RHEL 5 で新規ユーザー用に VNC サーバーをセットアップする方法

  1. CentOS8にNginxをインストールする方法

  2. CentOS7にMagento2.1をインストールする方法

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

  1. CentOSでSVNサーバーをセットアップする方法

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

  3. CentOS7でHAproxyロードバランサーを使用してPerconaクラスターをセットアップする方法