ホームページ >バックエンド開発 >PHPチュートリアル >nginxの負荷分散を設定するにはどうすればよいですか? nginxロードバランシング設定方法

nginxの負荷分散を設定するにはどうすればよいですか? nginxロードバランシング設定方法

不言
不言オリジナル
2018-07-25 16:10:565479ブラウズ

nginx ロード バランシングを構成するには、さまざまな方法があります。ここでは、Nginx ロード バランシングを構成する 2 つの方法を紹介します。次に、nginx ロード バランシングの一般的な構成方法を詳しく見てみましょう。

nginx は、バックエンド Web サーバー (Apache、nginx、tomcat、weblogic) などのリバース プロキシとして機能します。

いくつかのバックエンド Web サーバーは、ファイル共有、データベース共有を考慮する必要があります。 、セッション共有の問題 ファイル共有では、nfs、共有ストレージ (fc、ip ストレージ) redhat GFS クラスター ファイル システム、rsync inotify ファイル同期などを使用できます。小規模クラスターでは、nfs がさらに使用されます。コンテンツ管理システムの場合、単一ユニットでパブリッシュされます。情報。rsync inotify を使用して複数のマシンを同期するのが良い選択です。

小規模クラスター、単一の高性能データベース (Zhiqiang デュアル クアッドコア、32/64/128G メモリなど) で十分です, 大規模クラスタ データベース クラスタを検討するとよいでしょう。mysql が提供する公式クラスタ ソフトウェアを使用することも、keepalived lvs を使用して読み取りと書き込みを分離して Mysql クラスタを作成することもできます。

セッション共有nginx が ip_hash ポーリング方式を使用する場合、各 IP は一定時間内にバックエンドサーバーに固定されるため、セッション共有の問題を解決する必要はありません。 ##IP のリクエストはポーリングされて複数のサーバーに分散されるため、セッション共有の問題を解決する必要があります。nfs を使用してセッションを共有したり、セッションを mysql や memcache に書き込んだりできます。比較的大きい
、通常はセッションをmemcacheに書き込む方法を使用します。

ここでバックエンドWebサーバーを構成する方法については、これ以上説明しません。フロントエンドはバックエンドが何であるかを気にしません。

最初に、後で呼び出しを容易にするために proxy.conf ファイルを作成します (複数のクラスターが構成されている場合)。パブリックパラメータをファイルに書き込んで続行する良い方法には include)
vi /usr/local/nginx/conf/proxy.conf
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64

ここでは、nginx の 2 つの負荷分散方法について説明します: ポーリング重み付け (重み付けを解除することもできます)は 1:1 ロードです) と ip_hash (セッションの問題を解決するために、同じ IP が固定バックエンド サーバーに割り当てられます)
この構成ファイルを nginx.conf に書き込むことができます (Web クラスターが 1 つだけの場合)。複数の Web クラスターがある場合は、vhost に書き込むのが最善です。仮想ホストの形式で、ここでは nginx.conf に書きます。
最初の構成: 加重ポーリング。サーバー、この例は 1:2 割り当てです

 upstream lb {                server 192.168.196.130 weight=1 fail_timeout=20s;
                server 192.168.196.132 weight=2 fail_timeout=20s;
 }
 server {
                listen 80;
                server_name safexjt.com www.safexjt.com;
  index index.html index.htm index.php;
  location / {
                        proxy_pass http://lb;
   proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
   include proxy.conf;
                }
 }

2 番目の構成構成: ip_hash ポーリング方式、サーバーに重みを付けることはできません

upstream lb {                server 192.168.196.130 fail_timeout=20s;
                server 192.168.196.132 fail_timeout=20s;
  ip_hash;
 }
 server {
                listen 80;
                server_name safexjt.com www.safexjt.com;
  index index.html index.htm index.php;
  location / {
                        proxy_pass http://lb;
   proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
   include proxy.conf;
                }
 }

方法 2 nginx ロード バランシングは、ip_hash に基づいてセッション ペーストを実装します
1. ポーリング (デフォルト)
各リクエストは 1 つずつ時系列に並べられ、異なるバックエンド サーバーに割り当てられ、バックエンド サーバーがダウンした場合は自動的に削除されます。

upstream backserver {
server 192.168.0.14;
server 192.168.0.15;
}

2. 重みを指定します

ポーリング確率を指定します 重みはアクセス率に比例し、バックエンドサーバーのパフォーマンスが不均一な場合に使用されます。


upstream backserver {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}

3. IP バインディング ip_hash

各リクエストは、アクセスされた IP のハッシュ結果に従って割り当てられるため、各訪問者はバックエンド サーバーに固定的にアクセスできるため、問題を解決できます。セッションの問題。


upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}

4. 公正 (サードパーティ)

リクエストはバックエンド サーバーの応答時間に応じて割り当てられ、応答時間の短いリクエストが最初に割り当てられます。


upstream backserver {
server server1;
server server2;
fair;
}

5. url_hash (サードパーティ)

アクセスした URL のハッシュ結果に応じてリクエストを振り分け、各 URL が同じバックエンドサーバーに振り分けられるようにするとより効果的ですバックエンドサーバーがキャッシュされている場合。


upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}

負荷分散を使用する必要があるサーバーに

proxy_pass http://backserver/;
upstream backserver{
ip_hash;
server 127.0.0.1:9090 down; (down 表示单前的server暂时不参与负载)
server 127.0.0.1:8080 weight=2; (weight 默认为1.weight越大,负载的权重就越大)
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器)
}

max_fails を追加します: 許可されるリクエストの失敗数はデフォルトで 1 です。最大数を超えると、 proxy_next_upstream モジュール定義が返されます。 Error
fail_timeout:max_fails 失敗後の一時停止時間

関連する推奨事項:

Nginx が負荷分散を実現するためのいくつかの方法

php インタビューの質問 7: nginx ロード バランシングの構成方法

以上がnginxの負荷分散を設定するにはどうすればよいですか? nginxロードバランシング設定方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。