Nginx でサポートされる負荷分散スケジューリング アルゴリズム
1.round robin (デフォルト) (推奨学習: nginx チュートリアル)
リクエストを各バックグラウンド サーバーに順番に分散するポーリング方式が、デフォルトの負荷分散方式です。
バックグラウンド マシンのパフォーマンスが安定している状況に適用されます。
ハングしたマシンはサービス リストから自動的に削除できます。
2.weight
重みに従ってリクエストをさまざまなマシンに分散し、ポーリング確率を指定します。重みはアクセス率に比例し、バックエンドサーバーのパフォーマンスが不均一な状況に使用されます。 。
例:
upstream bakend { server 192.168.0.14 weight=10; server 192.168.0.15 weight=10; }
3. IP_hash
リクエスタの IP のハッシュ値に基づいてバックエンド サーバーにリクエストを送信します。同じ IP からのものであることを確認してください。リクエストは固定マシンに送信されるため、セッションの問題は解決できます。
例:
upstream bakend { ip_hash; server 192.168.0.14:88; server 192.168.0.15:80; }
4.url_hash (サードパーティ)
リクエストされた URL のハッシュ値に従って、リクエストを異なるマシンに分割します。 . バックグラウンドサーバーをキャッシュすると効率的です。
例:
ハッシュ ステートメントをアップストリームに追加します。重みなどの他のパラメータはサーバー ステートメントに記述できません。Hash_method は使用されるハッシュ アルゴリズムです。
upstream backend { server squid1:3128; server squid2:3128; hash $request_uri; hash_method crc32; }
ヒント:
アップストリーム ベイクエンド{#負荷分散デバイスの IP とデバイス ステータスを定義する
ip_hash; server 127.0.0.1:9090 down; server 127.0.0.1:8080 weight=2; server 127.0.0.1:6060; server 127.0.0.1:7070 backup; }
負荷を使用する必要があるサーバーに追加するバランシング
proxy_pass http://bakend/;
各デバイスのステータスは次のように設定されます:
1.down は、前のサーバーが一時的に負荷に参加しないことを意味します
2.weight デフォルトは 1 です。weight が大きいほど、負荷の重量も大きくなります。
3.max_fails: 許可されるリクエスト失敗の数はデフォルトで 1 です。最大数を超えると、proxy_next_upstream モジュールによって定義されたエラーが返されます。
4.fail_timeout: 一時停止max_fails 回の失敗後の時間。
5.backup: 他のすべての非バックアップ マシンがダウンしているかビジー状態の場合、バックアップ マシンを要求します。したがって、このマシンの圧力は最も少なくなります。
nginx は、未使用のサーバーで使用するために、負荷分散の複数のグループを同時にセットアップすることをサポートしています。
client_body_in_file_only オンに設定すると、クライアント投稿からのデータをデバッグ用にファイルに記録できます
client_body_temp_path 記録ファイルのディレクトリを設定して、最大 3 レベルのディレクトリを設定します
location URL と一致します。リダイレクトまたは新しいプロキシ ロード バランシングを実行できます。
5. 公平 (サードパーティ)
バックグラウンドに基づいてリクエストと応答を分散します。応答時間 配布時間が短いほど、より多くのリクエストが発生します。
例:
upstream backend { server server1; server server2; fair; }
以上がnginx の負荷分散アルゴリズムとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。