ホームページ >バックエンド開発 >PHPチュートリアル >nginxの負荷分散を設定するにはどうすればよいですか? nginxロードバランシング設定方法
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に書き込む方法を使用します。
最初に、後で呼び出しを容易にするために 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; } }
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; }
upstream backserver { ip_hash; server 192.168.0.14:88; server 192.168.0.15:80; }
upstream backserver { server server1; server server2; fair; }
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机器) }
関連する推奨事項:
Nginx が負荷分散を実現するためのいくつかの方法
php インタビューの質問 7: nginx ロード バランシングの構成方法
以上がnginxの負荷分散を設定するにはどうすればよいですか? nginxロードバランシング設定方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。