目次
ポーリング
Weighted
最小接続数
hash
fair
負荷分散関連パラメータ
ホームページ 運用・保守 Nginx nginxロードバランシングを構成する方法

nginxロードバランシングを構成する方法

May 19, 2023 am 09:59 AM
nginx

nginxロードバランシングを構成する方法

ポーリング

nginx は、すべてのリクエストをクラスター内の各サーバーに均等に分散します。

upstream test {
server 127.0.0.1:7001; # 等同于server 127.0.0.1:7001 weight=1;server 150.109.118.85:7001; # 等同于server 150.109.118.85:7001 weight=1;}

server {
listen 8081;
server_name localhost;

location / {
 proxy_pass http://test/;
}
}
ログイン後にコピー

upstream: サービス クラスターを定義します。 proxy_pass: 一致するリクエスト プロキシを proxy_pass の背後に設定されたサービスに転送します。ロード バランシングをここで設定する必要があるため、http:// の後にアップストリームで定義されたサービス クラスターを続ける必要があります。

: アップストリームがサービス クラスターを定義する場合、構成されたサービス アドレスはドメイン名ポートまたは IP ポートのみにすることができ、プロトコルとパスを含めることはできません。それ以外の場合は、nginx が を報告します。 nginx: [ emerg] アップストリームのホストが無効ですこのエラー メッセージ。

Weighted

upstream test {
server 127.0.0.1:7001 weight=2;
server 150.109.118.85:7001 weight=1;
}
ログイン後にコピー
ログイン後にコピー

最初の 2 つのリクエストは 127.0.0.1:7001 に転送され、次のリクエストは 150.109.118.85 :7001 に転送されます。 このサービスは 127.0.0.1:7001 に 2 回転送されます。 。 。

最小接続数

ファイルの場所: src/http/modules/ngx_http_upstream_least_conn_module.c

nginx リクエストは、最小の active_connection/weight を持つサーバーに割り当てられます。

upstream test {
  least_conn;
server 127.0.0.1:7001 weight=1;
server 150.109.118.85:7001 weight=1;
}
ログイン後にコピー

ip_hash

ファイルの場所: src/http/modules/ngx_http_upstream_ip_hash_module.c

ユーザーの IP に従って、ハッシュ値を計算します。ロード バランシング キャッシュ内にこのハッシュに対応するサーバーがある場合、対応するサーバーに直接転送されます。

upstream test {
  ip_hash;
server 127.0.0.1:7001;
server 150.109.118.85:7001;
}
ログイン後にコピー

nginx が ip_hash ポリシーを使用した後は、ユーザーのコンピューターの IP が変更されない限り、常に同じビジネス サービスを要求します。

アプリケーション シナリオ: ファイル アップロード機能を実装する場合、大きなファイルをアップロードする場合、大きなファイルを複数のフラグメントに分割してサーバーにアップロードすることがよくありますが、上記の戦略を使用すると、同じ問題が発生します。ファイルの断片が別のサーバーにアップロードされたため、ファイルの結合が失敗し、期待した結果が得られませんでした。 nginx が ip_hash ポリシーを使用した後、クライアントは現在のファイルのフラグメントをアップロードするだけで済み、後続のファイル フラグメントがアップロードされると、nginx は IP のハッシュを計算して、ハッシュに対応するサーバーにリクエストを自動的に転送します。

hash

ファイルの場所: src/http/modules/ngx_http_upstream_hash_module.c

ハッシュ計算に使用できるremote_addr (クライアントIP) (テストでは問題ないようです)結果) ip_hash)、request_uri (リクエスト URI)、および args (リクエスト パラメーター) を直接置き換えます。以下では主に request_uri の使用法をデモンストレーションとして使用します。他の 2 つの使用法は同様です。

リクエストされた URI に基づいてハッシュ値を計算し、リクエストをサーバーに転送します。後続のリクエストがハッシュによって計算された後、同じハッシュが存在する場合、リクエストはそのハッシュに転送されます。対応するサーバー。

クラスター内のサーバーがダウンした後に何が起こるかを想定します。r1 がサーバー a にヒットした場合、r2 はどのサーバーにヒットしますか? 。サーバaがダウンすると、r1で計算したハッシュ値とサーバaの対応関係が失われ、r1はサーバbに再配布されます。サーバー a が正常に戻った後も、r1 はサーバー b に割り当てられます。

upstream test {
  hash $request_uri;
server 127.0.0.1:7001;
server 150.109.118.85:7001;
}
ログイン後にコピー

アプリケーション シナリオ: 同じファイル リソースに対するすべてのリクエストが同じサーバーに転送されるため、リソースがキャッシュにヒットしやすくなり、帯域幅とリソースのダウンロード時間が削減されます。

consistent_hash

consistent_hash (一貫性のあるハッシュ) このモジュールは、nginx の組み込みハッシュ モジュールとほぼ同じ方法で使用されます。 consistent_hashで計算できる内容は、remote_addr、request_uri、argsなど、先ほどのnginxの組み込みハッシュモジュールと同じです。ここから ngx_http_consistent_hash をダウンロードできます。これはサードパーティ モジュール用のソフトウェアです。

upstream test {
consistent_hash $request_uri;
server 127.0.0.1:7001;
server 150.109.118.85:7001;
}
ログイン後にコピー

fair

応答時間が短いサービス リクエストが最初に割り当てられます。このサードパーティ モジュールは、nginx_upstream_fair のダウンロード ページから入手できます。このモジュールは 8 年前に最後に更新されました。これを使用する必要があるかどうかを検討してください。

upstream test {
fair;
server 127.0.0.1:7001;
server 150.109.118.85:7001;
}
ログイン後にコピー

テスト結果は、デフォルトのポーリング状況と同じ効果があり、問題はまだ見つかっていないことを示しています。 。 。

負荷分散関連パラメータ

down

down で識別されるサーバーは、リソース要求を一時的にサポートしていません。

upstream test {
server 127.0.0.1:7001 down;
server 150.109.118.85:7001;
}
ログイン後にコピー

上記の負荷分散の例では、127.0.0.1:7001down として識別されるため、このサービスにはリクエストは転送されず、すべてのリクエストが転送されます。サービス 150.109.118.85:7001 に転送します。

weight

クラスター内のサービスの重み値。デフォルトは 1 です。重みのみが影響を受け、クラスター内のすべてのサービスが正常であるという条件下では、nginx はより多くのリクエストをより大きな重みを持つサービスに転送します。

upstream test {
server 127.0.0.1:7001 weight=2;
server 150.109.118.85:7001 weight=1;
}
ログイン後にコピー
ログイン後にコピー

このクラスター内のサービス 127 とサービス 150 によって処理されるリクエストの比率は 2:1 です。

max_fails

サービスがリクエストを処理するときに許可されるサービス エラーの数。デフォルトは 1 です。サービス処理リクエストのエラー数が max_fails を超えると、以降のリクエストはエラーが発生したサービスに転送されません。

upstream test {
server 127.0.0.1:7001 max_fail=1;
server 150.109.118.85:7001;
}
ログイン後にコピー

fail_timeout

如果某个服务处理请求时发生错误的次数超过 max_fails,nginx 将暂时禁止将请求转发到该服务。当过去fail_timeout设置的时间以后,nginx会尝试将请求转发到刚才被禁止的服务,如果服务正常,那么后续的请求可以继续转发到这台服务,如果服务错误,那么继续等待fail_timeout时间后再来检测。fail_timeout默认时间是10s。

upstream test {
server 127.0.0.1:7001 max_fail=1 fail_timeout=10s;
server 150.109.118.85:7001;
}
ログイン後にコピー

backup

备用服务器,当所有非backup服务发生错误被停用或者设置为down时,nginx会启用标识为backup的服务。

upstream test {
server 127.0.0.1:7001 backup;
server 150.109.118.85:7001;
}
ログイン後にコピー

max_conns

这个功能存在于nginx商业版。同一服务同时处理请求的个数。防止服务因处理请求过多,服务器性能不足,发生宕机的情况。

upstream test {
server 127.0.0.1:7001 max_conns=10000;
server 150.109.118.85:7001;
}
ログイン後にコピー

slow_start

这个功能存在于nginx商业版。当集群中错误服务等待fail_timeout时间后,nginx检测到这个服务能够正常使用后,再等待slow_start时间后,才正式使用这个服务。

upstream test {
server 127.0.0.1:7001 slow_start=30s;
server 150.109.118.85:7001;
}
ログイン後にコピー

以上がnginxロードバランシングを構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windowsでnginxを構成する方法 Windowsでnginxを構成する方法 Apr 14, 2025 pm 12:57 PM

Windowsでnginxを構成する方法は? nginxをインストールし、仮想ホスト構成を作成します。メイン構成ファイルを変更し、仮想ホスト構成を含めます。 nginxを起動またはリロードします。構成をテストし、Webサイトを表示します。 SSLを選択的に有効にし、SSL証明書を構成します。ファイアウォールを選択的に設定して、ポート80および443のトラフィックを許可します。

Dockerコンテナの名前を確認する方法 Dockerコンテナの名前を確認する方法 Apr 15, 2025 pm 12:21 PM

すべてのコンテナ(Docker PS)をリストする手順に従って、Dockerコンテナ名を照会できます。コンテナリストをフィルタリングします(GREPコマンドを使用)。コンテナ名(「名前」列にあります)を取得します。

Dockerによってコンテナを起動する方法 Dockerによってコンテナを起動する方法 Apr 15, 2025 pm 12:27 PM

Docker Containerの起動手順:コンテナ画像を引く:「Docker Pull [Mirror Name]」を実行します。コンテナの作成:「docker create [options] [mirror name] [コマンドとパラメーター]」を使用します。コンテナを起動します:「docker start [container name or id]」を実行します。コンテナのステータスを確認してください:コンテナが「Docker PS」で実行されていることを確認します。

Nginxが開始されるかどうかを確認する方法 Nginxが開始されるかどうかを確認する方法 Apr 14, 2025 pm 01:03 PM

nginxが開始されるかどうかを確認する方法:1。コマンドラインを使用します:SystemCTLステータスnginx(Linux/unix)、netstat -ano | FindStr 80(Windows); 2。ポート80が開いているかどうかを確認します。 3.システムログのnginx起動メッセージを確認します。 4. Nagios、Zabbix、Icingaなどのサードパーティツールを使用します。

Docker用のコンテナを作成する方法 Docker用のコンテナを作成する方法 Apr 15, 2025 pm 12:18 PM

Dockerでコンテナを作成します。1。画像を引く:Docker Pull [ミラー名]2。コンテナを作成:Docker Run [Options] [Mirror Name] [コマンド]3。コンテナを起動:Docker Start [Container Name]

Nginxバージョンを確認する方法 Nginxバージョンを確認する方法 Apr 14, 2025 am 11:57 AM

nginxバージョンを照会できるメソッドは次のとおりです。nginx-vコマンドを使用します。 nginx.confファイルでバージョンディレクティブを表示します。 nginxエラーページを開き、ページタイトルを表示します。

nginxでクラウドサーバードメイン名を構成する方法 nginxでクラウドサーバードメイン名を構成する方法 Apr 14, 2025 pm 12:18 PM

クラウドサーバーでnginxドメイン名を構成する方法:クラウドサーバーのパブリックIPアドレスを指すレコードを作成します。 NGINX構成ファイルに仮想ホストブロックを追加し、リスニングポート、ドメイン名、およびWebサイトルートディレクトリを指定します。 nginxを再起動して変更を適用します。ドメイン名のテスト構成にアクセスします。その他のメモ:SSL証明書をインストールしてHTTPSを有効にし、ファイアウォールがポート80トラフィックを許可し、DNS解像度が有効になることを確認します。

nginxサーバーを開始する方法 nginxサーバーを開始する方法 Apr 14, 2025 pm 12:27 PM

NGINXサーバーを起動するには、異なるオペレーティングシステムに従って異なる手順が必要です。Linux/UNIXシステム:NGINXパッケージをインストールします(たとえば、APT-GetまたはYumを使用)。 SystemCtlを使用して、NGINXサービスを開始します(たとえば、Sudo SystemCtl Start NGinx)。 Windowsシステム:Windowsバイナリファイルをダウンロードしてインストールします。 nginx.exe実行可能ファイルを使用してnginxを開始します(たとえば、nginx.exe -c conf \ nginx.conf)。どのオペレーティングシステムを使用しても、サーバーIPにアクセスできます

See all articles