Linux
 Computer >> コンピューター >  >> システム >> Linux

NginxのロードバランサーとしてのHAProxyの使用

この記事では、HAProxyをロードバランサーとして構成する方法を紹介します。 2つのNginx Webサーバー(Apacheに置き換えることができます)。 CentOSは、すべての場合にホストオペレーティングシステムとして使用されます。

HAProxyは、複数のバックエンドサーバー間で着信要求を分散することにより、TCPおよびHTTPアプリに高可用性と負荷分散を提供するサーバーソフトウェアです。 HAProxyは、 Twitterなどの多くの人気のあるリソースで使用されています 、 Instagram Github アマゾン、

HAProxyは、クライアントリクエストを受け入れ、それらをNginxWebサーバーにリダイレクトする別のサーバーにインストールされます。以下に一般的なシステムアーキテクチャを示します。

NginxのロードバランサーとしてのHAProxyの使用

バックエンドサーバーでのNginx構成

まず、WebサーバーへのNginxのインストールと構成から始め、負荷のバランスを取ります。 yum(またはRHEL / CentOS 8ではdnf)を使用してEPELリポジトリとnginxをインストールします:

#yum install epel-release -y
#yum install nginx -y

次に、 nginx conf ファイルは、サーバーがHAProxyサーバーとバックエンドサーバーからの要求のみを処理する必要があることを指定します。

バックエンドサーバー1:

 server {listen current_server_IP_address:80 default_server; second_backend_server_IP_addressを許可します。 IP_haproxyを許可します。すべてを拒否します。サーバーの名前 _;ルート/usr/ share / nginx / html; #デフォルトのサーバーブロックの構成ファイルをロードします。 /etc/nginx/default.d/*.confをインクルードします。場所/{}

バックエンドサーバー2:

 server {listen current_server_IP_address:80 default_server; first_backend_server_IP_addressを許可します。 IP_haproxyを許可します。すべてを拒否します。サーバーの名前 _;ルート/usr/ share / nginx / html; #デフォルトのサーバーブロックの構成ファイルをロードします。 /etc/nginx/default.d/*.confをインクルードします。場所/{}

nginx構成ファイルはデフォルトです。サーバーをIPをリッスンするために追加しました 許可を使用してサーバー以外のすべてのユーザーへのアクセスを拒否しました および拒否 ディレクティブ。

Webサーバーが機能し始めるには、firewalldまたはiptablesを使用してファイアウォールのHTTPポートを開きます。

#firewall-cmd --permanent –add-service=http
#firewall-cmd –reload

いずれかのバックエンドサーバーでテストチェックを実行します。

# curl IP_of_the_second_server

 <!DOCTYPE html PUBLIC "-// W3C // DTD XHTML 1.1 //EN""https://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">ここでhtmlを取得しますファイル

サーバーは標準のnginxインデックスファイルを返しました。チェックをより便利にするために、各バックエンドサーバーのインデックスファイルの内容を変更して、現在のリクエストを処理したサーバーをブラウザで確認できるようにしました。

nginxインデックスファイルは/usr / share / nginx / html /にあります 。

HAProxyロードバランサーの構成

ロードバランサーとして使用されるサーバーにHAProxyをインストールして構成しましょう。

HAProxyをインストールします:
#yum install epel-release -y
#yum install haproxy -y

実行中のtransactionInstalling:haproxy-1.5.18-9.el7.x86_64 1/1Verifying:haproxy-1.5.18-9.el7.x86_64 1/1Installed:haproxy.x86_64 0:1.5.18-9.el7Complete!

HAProxyを有効にするには、 Enabled =1を追加する必要があります / etc / default / haproxyに ファイル:

#nano /etc/default/haproxy

NginxのロードバランサーとしてのHAProxyの使用

それでは、HAProxyの設定に移りましょう。最も単純な構成では、ロードバランサーサーバーがすべてのHTTPリクエストを処理し、それらをバックエンドサーバーに順番に送信します。

#nano /etc/haproxy/haproxy.cfg

 log / dev / log local0 chroot / var / lib / haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemondefaults mode http log global option httplog option redispatch retries 3 timeout http-request 10s timeout queue 1mタイムアウト接続10秒タイムアウトクライアント1分タイムアウトサーバー1分タイムアウトhttp-keep-alive10秒タイムアウトチェック10秒maxconn3000frontendwww bind balancer_IP_address:80 default_backend nginx_poolbackendnginx_poolバランスラウンドロビンモードhttpサーバーweb1IP_of_the_first_backend_server:80チェックサーバーweb2 IP_of_the_second_backend_server:80 

設定を保存した後、haproxy.cfgの構文を確認してください:

#haproxy -f /etc/haproxy/haproxy.cfg -c

問題がない場合は、次のようなメッセージが表示されます。

構成ファイルは有効です

次に、HAProxyを再起動し、Linuxスタートアップに追加します。そして、ファイアウォールでHTTPポートを開きます。

#systemctl restart haproxy
#systemctl enable haproxy
#firewall-cmd —permanent –add-service=http
#firewall-cmd –reload

このようにして、ロードバランサーが構成されました。ブラウザでHAProxyサーバーのIPアドレスを開いて確認しましょう:

NginxのロードバランサーとしてのHAProxyの使用

ご覧のとおり、両方のサーバーが順番にコンテンツを返したため、バランサーは機能しています。

Haproxy.cfg構成ファイルのパラメーター

HAProxyアルゴリズムの主な例を考えてみましょう:

  • roundrobin —はデフォルトのアルゴリズムであり、サーバーに順番にリクエストを送信します。この例では、この方法を使用しました。
  • leastconn –アクティブな接続の数が最も少ないサーバーを選択します。セッションが長時間使用されるプロジェクトに適用することをお勧めします。
  • source –ユーザーのIPアドレスのハッシュに基づいてサーバーを選択します。このモードでは、ユーザーのIPアドレスが変更されていない場合、クライアントは同じWebサーバーに接続します。

いくつかの構成ファイルパラメータについて説明しましょう。

グローバル ブロック:

  • log —logを/dev / logに書き込み、local0をオブジェクト値として保存します
  • chroot —セキュリティ設定、HAProxyを指定されたディレクトリにロックします
  • maxconn —プロセスごとの同時接続の最大数
  • daemon —プロセスをデーモンとして実行する

デフォルト ブロック。このブロックは、それに続く他のすべてのセクションのデフォルトパラメータを設定します:

  • log —書き込まれるエントリをログに設定します(この場合、グローバルとは、グローバルセクションで設定されたパラメータが使用されることを意味します)
  • mode —通信プロトコルを設定し、次のいずれかの値を取ります:tcp、http、またはhealth
  • retries —障害が発生した場合のサーバーへの接続の試行回数
  • option httplog —HAProxyがHTTPリクエストをプロキシしている場合に使用されるログ形式
  • option redispatch —サーバーに障害が発生した場合に、プログラムがセッションを終了して再ディスパッチできるようにします
  • contimeout —サーバーとの接続が正常に確立されるまでの最大待機時間

さまざまなタイムアウトに関連するパラメータもたくさんあります。

HAProxy統計の収集

統計ブロックを構成ファイルに追加します:

 listen stats bind:10001 stats enable stats uri / haproxy_stats stats auth admin:admin 

説明:

  • bind –統計を表示できるポート
  • stats enable –統計レポートを有効にします
  • stats uri –統計ページのアドレスを設定します
  • stats auth –アクセスするためのログインとパスワード
任意のTCPポートを指定できます。上記のものが忙しい、またはあなたに合わない場合。

ファイアウォールで上記で指定されたポートで着信接続を受け入れます:

firewall-cmd --permanent –add-port=10001/tcp
firewall-cmd –reload

HAProxyレポートを表示するには、次のリンクをたどってください:

https://hostname_haproxy:10001/haproxy_stats

NginxのロードバランサーとしてのHAProxyの使用 ブラウザーでバランサーのIPアドレスを開き、 F5を押し始めます。 。 HAproxyの統計が変更されます。

この記事では、基本的なHAProxy構成について検討しました。 HAProxyモジュールを使用するケースは他にもあります。

このスキーマでは、負荷分散HAProxyサーバーが単一障害点になります。 Webサービスのフォールトトレランスを向上させるために、別のHAProxyサーバーを追加し、Keepalivedを使用して高可用性ロードバランサー構成を実装できます。次のようなスキーマが得られます:

NginxのロードバランサーとしてのHAProxyの使用


  1. 初心者のための MacBook Pro の 10 のヒント

    Macbook Pro は非常に強力なラップトップです。生産性を何倍にも向上させることができます。ただし、特に Windows 環境での作業に慣れている場合は、少し複雑になることもあります。この記事では、この洗練された最先端のアルミニウム ブロックに慣れるのに役立つ 10 の役立つヒントをまとめました。 注: 現在、この記事では macOS High Sierra を実行している 2018 年モデルを使用しているため、古い MBP モデルまたは古いバージョンの macOS を使用している場合、一部の機能にアクセスできない場合があります。 また、YouTube チャンネルで、以下の主要な

  2. Windows 10 の MagicDisc の最良の代替手段

    MagicDisc が廃止されたため、人々は CD または DVD に書き込むことなく CD/DVD イメージを使用する代替手段を探しています。あなたも MagicDisc の代替品を探しているなら、あなたは正しい場所にいます. この投稿では、Windows 10 向けの MagicDisc の代替製品トップ 10 について説明します。 Windows ユーザーに最適な MagicDisc の代替品 - 2021 年 MagicDisc の 10 の代替案 – 2021 年 MagicISOとして広く知られているMagicDiscにより、ユーザーは任意のハードディスクまたはCDからISOフ