ホームページ > バックエンド開発 > PHPチュートリアル > Nginxロードバランシング構成例の詳細説明

Nginxロードバランシング構成例の詳細説明

WBOY
リリース: 2016-08-08 09:21:03
オリジナル
1015 人が閲覧しました

[はじめに] 負荷分散は、トラフィックの多い Web サイトで行う必要があるものです。次に、Nginx サーバーでの負荷分散の設定方法を紹介します。これが必要な学生に役立つことを願っています。ロード バランシング まず、ロード バランシングとは何かを簡単に理解しましょう。上記のロード バランシングの設定方法が必要な学生に役立つことを願っています。

負荷分散

まず、負荷分散とは何かを簡単に理解しましょう。文字通りに理解すると、N 台のサーバーが均等に負荷を分散し、高負荷のために特定のサーバーがダウンすることはないと説明できます。サーバーはアイドル状態です。したがって、負荷分散の前提は、複数のサーバーで実現できること、つまり 3 台以上のサーバーで十分であるということです。 テスト環境

サーバーがないため、このテストでは指定されたドメイン名を直接ホストし、VMware に 3 つの CentOS をインストールします。

テストドメイン名: a.com

AサーバーIP: 192.168.5.149 (メイン)

BサーバーIP: 192.168.5.27

CサーバーIP: 192.168.5.126

展開アイデア

サーバーはメイン サーバー。ドメイン名はサーバー A (192.168.5.149) に直接解決され、サーバー A はサーバー B (192.168.5.27) とサーバー C (192.168.5.126) に負荷分散されます。

ドメイン名の解決


実際の環境ではないので、ドメイン名はテスト用のa.comになっているだけなので、a.comの解像度はhostsファイルでしか設定できません。

開く: C:WindowsSystem32driversetchosts

末尾に

192.168.5.149を追加しますa.com

保存して終了し、コマンドモードを開始してpingを実行し、設定が成功したかどうかを確認します

スクリーンショットから、a.com正常に解析されました 192.168.5.149IP に移動します

サーバーの nginx.conf 設定

nginx.conf を開きます。ファイルの場所は nginx インストール ディレクトリの conf ディレクトリにあります。

http 段追加次代

アップストリーム a.com {
サーバー 192.168.5.126:80;

サーバー 192.168.5.27:80;

}

サーバー{
リッスン 80 ;
サーバー名 a.com;
場所 / {
proxy_pass header X-Forwarded-For $proxy_add_x_forwarded_for
}
}

nginxを保存して再起動します
;
B、Cサーバーのnginx.conf設定
nginx.confを開き、httpセクションに次のコードを追加します

server{
リッスン 80;

サーバー名 a.com;

インデックスindex.html;

root /data0/htdocs/www


Test

どのサーバーであるかを区別するために、が処理のためにリダイレクトされるため、区別するために、サーバー B とサーバー C にそれぞれ異なる内容のindex.html ファイルを作成しました。


ブラウザを開いて a.com にアクセスすると、すべてのリクエストがメイン サーバー (192.168.5.149) によってサーバー B (192.168.5.27) とサーバー C (192.168.5.126) に割り当てられ、負荷分散が実現されていることがわかります。 。 効果。

B サーバー処理ページ

C サーバー処理ページ

サーバーの 1 つがダウンした場合はどうなりますか?

サーバーがダウンした場合、アクセスに影響はありますか?


まず例を見てみましょう。上記の例に基づいて、マシン C サーバー 192.168.5.126 がダウンしていると仮定して (ダウンタイムをシミュレートすることは不可能なので、C サーバーをシャットダウンします)、それにアクセスします。また。

アクセス結果:

Cサーバー(192.168.5.126)がダウンしていましたが、Webサイトへのアクセスには影響がなかったことが分かりました。こうすることで、特定のマシンが負荷分散モードでダウンしているためにサイト全体がドラッグダウンすることを心配する必要がなくなります。

b.com も負荷分散を設定する必要がある場合はどうすればよいですか?

a.comの設定と同じでとても簡単です。次のように:


b.com のメイン サーバー IP が 192.168.5.149 で、負荷が 192.168.5.150 と 192.168.5.151 マシンに分散されていると仮定します。

次に、ドメイン名 b.com を 192.168.5.149 IP に解決します。

メインサーバー (192.168.5.149) の nginx.conf に次のコードを追加します。アップストリーム b.com {

サーバー 192.168.5.151:80; Http: // b. com; proxy_set_
}
}
nginxを保存して再起動します

マシン192.168でnginxをセットアップします.5.150 および 192.168.5.151 で、nginx.conf を開き、最後に次のコードを追加します。 }

保存して nginx を再起動します

完了 次の手順で b.com の負荷分散構成を実装できます。

メインサーバーはサービスを提供できませんか?
上記の例では、メインサーバーの負荷分散を他のサーバーに適用しました。そのため、純粋に転送機能としてサーバーを使用して無駄にならないように、メインサーバー自体をサーバーリストに追加できますか?サービスの提供にも携わります。

上記の場合と同様に、3 つのサーバー:

A サーバー IP: 192.168.5.149 (メイン)

B サーバー IP: 192.168.5.27


C サーバー IP: 192.168.5.126

ドメイン名を A に解決します。次に、サーバー A からサーバー B およびサーバー C へ、サーバー A は転送機能のみを実行します。ここでは、サーバー A にもサイト サービスを提供させます。

まず、メイン サーバーをアップストリームに追加すると、次の 2 つの状況が発生する可能性があります。

1. メイン サーバーは他の IP に転送され、他の IP サーバーはそれを正常に処理します。サーバー 自分の IP に転送され、その後メイン サーバーに移動して IP が割り当てられます。常にローカル マシンに割り当てられると、無限ループが発生します。

この問題を解決するにはどうすればよいですか?ポート 80 は負荷分散処理の監視に使用されてきたため、このサーバーでは a.com へのアクセス要求を処理するためにポート 80 を使用できなくなり、新しいポートを使用する必要があります。そこで、メインサーバーの nginx.conf に次のコードを追加しました。ブラウザに「a.com:8080」と入力し、アクセスできるかどうかを確認してください。結果は正常にアクセスできました

正常にアクセスできたので、メインサーバーをアップストリームに追加できますが、次のようにポートを変更する必要があります:

upstream a.com {

; .5.27:80;

サーバー 127.0.0.1:8080;

}

ここでメインサーバーのIP 192.168.5.149または127.0.0.1を追加できるため、両方とも自分自身へのアクセスを示します。

Nginx を再起動し、a.com にアクセスして、メイン サーバーに割り当てられるかどうかを確認します。

メインサーバーも正常にサービスに参加できます。

最後に

まず、負荷分散は nginx に特有のものではありません。有名な Dingding apache にもありますが、そのパフォーマンスは nginx ほど良くない可能性があります。

2. 複数のサーバーでサービスを提供しますが、ドメイン名はメインサーバーのみに解決され、pingを行わずに実際のサーバーIPを取得できるため、ある程度のセキュリティが向上します。

3. アップストリームの IP は内部ネットワークである必要はなく、外部ネットワークの IP も使用できます。ただし、典型的なケースでは、LAN 内の特定の IP が外部ネットワークに公開され、ドメイン名がこの IP に直接解決されます。次に、メイン サーバーはそれをイントラネット サーバーの IP に転送します。

4. 特定のサーバーがダウンしても、Nginx はダウンした IP にリクエストを転送しません:

http://www.php100.com/ html/プログラム /nginx/2013/0905/5525.html



上記では、関連する内容も含めて Nginx のロード バランシング設定例の詳細な説明を紹介しています。PHP チュートリアルに興味のある友人の参考になれば幸いです。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート