サーバー クラスターでは、Nginx はプロキシ サーバー (リバース プロキシ) の役割を果たし、単一サーバーへの過度の負荷を避けるために、ユーザーからのリクエストを別のサーバーに転送します。負荷分散は、「アップストリーム」モジュールによって定義されたバックエンド サーバー リストからユーザー リクエストを受け入れるサーバーを選択するために使用されます。
負荷分散のいくつかの一般的な方法
1. ポーリング (デフォルト)
各リクエストバックエンドサーバーがダウンした場合は、バックエンドサーバーを時系列順に 1 台ずつ自動的に削除できます。
upstream backserver { server 192.168.0.14; server 192.168.0.15; }
2,weight
ポーリング確率を指定します。重みはアクセス率に比例し、バックエンドサーバーのパフォーマンスが不均一な場合に使用されます。
upstream backserver { server 192.168.0.14 weight=3; server 192.168.0.15 weight=7; }
重みが大きいほどアクセスされる確率が高くなり、上記の例のようにそれぞれ30%、70%となります。
3. ip_hash
上記の方法の問題の 1 つは、負荷分散システムにおいて、ユーザーが特定のサーバーにログインした場合、ユーザーが 2 番目のリクエストを行うときに、は負荷分散システムです。各リクエストは特定のサーバー クラスターにリダイレクトされます。サーバーにログインしているユーザーが別のサーバーにリダイレクトされると、そのログイン情報が失われます。これは明らかに不適切です。
この問題を解決するには、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; }
各デバイスのステータスは次のように設定されます:
1)、ダウンは、シングルの前のサーバーが一時的に負荷に参加していないことを意味します
2)の場合、重みのデフォルトは 1 です。重みが超過します。値が大きいほど、負荷の重さが大きくなります。
3), max_fails: 許可されるリクエスト失敗の数は、デフォルトでは 1 です。最大数を超えると、proxy_next_upstream モジュールによって定義されたエラーが返されます。
4)、fail_timeout: 後max_fails の失敗、時間。
5)、バックアップ: 他のすべての非バックアップ マシンがダウンしているかビジー状態の場合、バックアップ マシンを要求します。したがって、このマシンの圧力は最も少なくなります。
設定例:
#user nobody; worker_processes 4; events { # 最大并发数 worker_connections 1024; } http{ # 待选服务器列表 upstream myproject{ # ip_hash指令,将同一用户引入同一服务器。 ip_hash; server 125.219.42.4 fail_timeout=60s; server 172.31.2.183; } server{ # 监听端口 listen 80; # 根目录下 location / { # 选择哪个服务器列表 proxy_pass http://myproject; } } }
以上がnginxの負荷分散の実装方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。