サーバー クラスターでは、Nginx はプロキシ サーバー (リバース プロキシ) の役割を果たし、単一サーバーへの過度の負荷を避けるために、ユーザーからのリクエストを別のサーバーに転送します。
Nginx 負荷分散戦略
負荷分散は、「アップストリーム」から定義されたバックエンド サーバーのリストから使用されます。 module ユーザーのリクエストを受け入れるサーバーを選択します。最も基本的なアップストリーム モジュールは次のようになります。モジュール内のサーバーはサーバー リストです:
#动态服务器组 upstream dynamic_zuoyu { server localhost:8080; #tomcat 7.0 server localhost:8081; #tomcat 8.0 server localhost:8082; #tomcat 8.5 server localhost:8083; #tomcat 9.0 }
アップストリーム モジュールの構成が完了したら、指定されたアクセスをサーバー リストにリバース プロキシします:
#其他页面反向代理到tomcat容器 location ~ .*$ { index index.jsp index.html; proxy_pass http://dynamic_zuoyu; }
これは最も基本的な負荷分散インスタンスですが、実際のニーズを満たすには十分ではありません;
現在、Nginx サーバーの上流モジュールは 6 つの分散方法をサポートしています:
Round クエリ方式は、上流モジュールのデフォルトの負荷分散戦略です。各リクエストは時系列順に 1 つずつ異なるバックエンド サーバーに分散されます。
重み付け方法。ポーリング戦略に基づいてポーリングの確率を指定します。
ip_hash は、クライアント IP に基づいてロード バランサーの割り当て方法を指定します。この方法により、同じクライアントからのリクエストが常に同じサーバーに送信され、セッションが確保されます。このようにして、各訪問者はバックエンド サーバーに固定的にアクセスできるため、セッションがサーバーを越えることができないという問題を解決できます。
least_conn、接続数が少ないバックエンド サーバーにリクエストを転送します。ポーリング アルゴリズムは、負荷がほぼ同じになるようにリクエストを各バックエンドに均等に転送しますが、一部のリクエストには時間がかかるため、リクエストが配置されているバックエンドの負荷が高くなります。この場合、least_conn はより優れた負荷分散効果を実現できます。
サードパーティの負荷分散戦略を実装するには、サードパーティのプラグインをインストールする必要があります。
公平、サーバーの応答時間に応じてリクエストを割り当てます。応答時間の短いリクエストが最初に割り当てられます。
url_hash は、アクセスされた URL のハッシュ結果に従ってリクエストを割り当てます。これにより、各 URL は同じバックエンド サーバーに送信され、キャッシュ ヒットと組み合わせて使用する必要があります。同じリソースに対する複数のリクエストが異なるサーバーに到着する可能性があり、その結果、不必要な複数のダウンロードが発生し、キャッシュ ヒット率が低下し、リソース時間の無駄が発生します。 url_hash を使用すると、同じ URL (つまり、同じリソース リクエスト) が同じサーバーに到達でき、リソースがキャッシュされると、リクエストを受信したときにキャッシュから読み取ることができます。
Nginx 関連の技術記事の詳細については、Nginx の使用方法チュートリアル 列にアクセスして学習してください。
以上がnginx の負荷分散戦略とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。