ホームページ 運用・保守 Nginx nginxの負荷分散を行う方法

nginxの負荷分散を行う方法

Jun 20, 2019 pm 03:47 PM
nginx 負荷分散

nginxの負荷分散を行う方法

#1. Nginx リバース プロキシ

nginx のロードバランシングを紹介する前に、nginx のリバースプロキシについて紹介しますが、リバースプロキシは一般的に使用されているため、ここではフォワードプロキシについては紹介しません。

nginx のプロキシ プロセスは、リクエストを nginx に送信し、そのリクエストをバックエンド サーバーに転送し、バックエンド サーバーに転送します。 -end サーバーは処理を完了します。その後、結果が nginx に送信され、nginx は結果をクライアントに送信します。バックエンド サーバーはリモートまたはローカルにすることも、nginx サーバー内で定義された別の仮想ホストにすることもできます。 nginx の転送を受け取るこれらのサーバーは、アップストリームと呼ばれます

nginx をプロキシとして使用する目的の 1 つは、インフラストラクチャの規模を拡大することです。 nginx は多数の同時接続を処理でき、リクエストが到着すると、nginx はリクエストを任意の数のバックグラウンド サーバーに転送して処理できます。これは、クラスター全体に負荷分散を分散することと同じです。

構文: proxy_pass URL

説明: URL は次の形式にすることができます: http://location:8000/uri/,など。「場所の設定」で見つけることができます。

例: 単純なリバース プロキシを作成してみましょう:

ポート 80 でリッスンするディレクトリには test_proxy ファイルがありませんが、私の 8080 ポート リスニング ディレクトリに、次のコンテンツをポート 80 のサーバーに追加しました:

location ~ /test_proxy.html$ {proxy_pass http://127.0.0.1:8080;}

次に、次のように入力しますブラウザ上で http://IP アドレス/test_proxy.html にアクセスすると、要求された情報が表示されます。実際には、ポート 80 がポート 8080 に転送され、データが返送されます。

2. バッファリング

nginx は、パフォーマンスを向上させるためのバッファリング メカニズムも提供します。バッファリングを行わない場合、データはバックエンド サーバーからクライアントに直接送信されます。バッファリングの機能は、バックエンドサーバーからの処理結果をnginx上に一時的に保存することで、nginxからバックエンドへの接続を早期に閉じてIOロスを軽減することができます。通常、コンテンツはメモリに保存されますが、コンテンツが多すぎてメモリが不足する場合、コンテンツは一時ファイル ディレクトリに保存されます。以下は、一般的に使用されるバッファリング設定項目の一部であり、http、server、および location コンテンツ ブロックの下にあります。

proxy_buffering: このコンテンツ ブロックでバッファリングを有効にするかどうかを制御します。デフォルトは「オン」です。

proxy_buffers: 2 つのパラメータがあり、1 つ目はバッファ リクエストの数を制御し、2 つ目はバッファ サイズを制御します。デフォルト値は 8、1 ページ (通常は 4k または 8k) です。値が大きいほど、より多くのコンテンツがバッファーされます。

proxy_buffer_size: バックエンド応答結果の最初のセグメント (ヘッダーを含む部分) は個別にバッファリングされます。この構成は、この部分のサイズを構成します。バッファー。この値のデフォルトは proxy_buffer と同じ値ですが、一般にヘッダーの内容が少ないため、より小さい値に設定できます。

proxy_busy_buffers_size: 「クライアント対応」としてマークされたバッファのサイズを設定します。クライアントは一度に 1 つのバッファからのみデータを読み取ることができ、バッファはキューの順序に従ってバッチでクライアントに送信されます。この構文は、このキューのサイズを構成します。

proxy_temp_path: nginx が一時ファイルを保存するパスを定義します。

proxy_max_temp_file_size: リクエストごとに一時ファイルを保存できるディレクトリのサイズ。アップストリームから送信された結果が大きすぎてバッファーに収まらない場合、nginx はそれらの結果のために一時ファイルを作成します。

3. 負荷分散

設定構文: アップストリーム名 {.......}

説明: name はカスタム名、{} は定義する必要があるコンテンツです。これは http ブロックでのみ定義でき、server ブロックでは定義できません。定義した後、location ブロックの下に次のコードを記述して、http://name を呼び出すことができます。

例: サーバーの数に制限があるため、ここでは 1 つのサーバーの異なるポートを使用して負荷分散をシミュレートします。もちろん、複数のサーバーの構成も同様です。

#次のコードをサーバー ブロックに追加します:

#アップストリーム テスト {#ip_hash サーバー IP:8001; サーバー IP:8002; サーバー IP:8003; }

次に、http ブロック内の場所に次のコンテンツを追加します。

location / {#サーバーがクライアントの実際の IP を取得できるように、ホスト ヘッダーとクライアントの実際のアドレスを設定しますproxy_set_header ホスト $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_connect_timeout 30;#接続タイムアウトを 30 秒に設定します proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffer_size 32k; #バッファ サイズを設定 proxy_buffering on; #バッファを開く proxy_buffers 4 128k; #バッファの数とサイズを設定します proxy_busy_buffers_size 256k; #クライアント対応バッファ サイズを設定します proxy_max_temp_file_size 256k; # proxy_pass http://test; #上記のロード バランシング セットの呼び出し }

もちろん、次のことを思い出してください。設定するIP ポートは設定ファイルで事前に設定されます。例えば以下のような構成です。

nginxの負荷分散を行う方法

次に、ホスト アドレスにアクセスし、継続的に更新すると、各ポートから出力されるページ情報がわかります。デフォルトのロード バランシングではポーリングが使用されます。

# 負荷分散に別のサーバーを使用している場合は、次の構成などのわずかな変更を加えるだけで済みます。

アップストリーム mydomain.com{サーバー 47.95.242.167:80; サーバー 47.95.242.168:80; サーバー 47.95.242.169:80; }

設定後、http の残りのコードは上記と同様になり、他の 3 つのサーバーでも次のようになります。そこでの設定。もちろん、これら 3 つのサーバーにファイアウォールを設定する必要があります。

サーバー{80 を聞く; サーバー名 www.mydomain.com; indexindex.htmindex.phpindex.html;ルート ディレクトリ パス;}

①負荷分散スケジュールにおけるバックエンド サーバーのステータス

dowm:current サーバー当面は負荷分散には参加しません。

#backup: 予約済みのバックアップ サーバー。

max_fails: 許可されるリクエストの失敗の数。

fail_timeout: max_fails が失敗した後にサーバーが一時停止する時間。

max_conns: 受信接続の最大数を制限します。

注: 上記の設定はすべてアップストリーム中に設定されます。たとえば、{} に追加されたサーバー IP: 8001 down は、このサービスがサービスではないことを意味します。負荷分散に参加し、バックアップに使用されます。上記の設定はサービスの背後に書き込まれます。

②スケジュールアルゴリズム

ポーリング: 時系列順に異なるバックエンド サーバーに 1 台ずつ割り当てられます。

加重ポーリング: 設定されたサーバーの後にweight=numberを追加できます。数値が大きいほど、割り当ての確率が高くなります。

ip_hash: 各リクエストはアクセス IP のハッシュに応じて振り分けられるため、同じ IP からのバックエンド サーバーへのアクセスは固定されます。

least_hash: リンクの最小数。接続数が最も少ないマシンがそのマシンに配布されます。

url_hash: アクセスされた URL のハッシュ結果に従ってリクエストを振り分け、各 URL を同じバックエンド サーバーに振り分けます。

ハッシュ キー値: ハッシュ カスタム キー。

注: スケジューリング アルゴリズムはアップストリームの設定で構成されます。たとえば、中括弧内に ip_hash を記述することは、ip_hash を使用して

を割り当てることを意味します。詳細 Nginx 関連の技術記事については、Nginx チュートリアル 列にアクセスして学習してください。

以上が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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Nginxが起動されているかどうかを確認する方法は? Nginxが起動されているかどうかを確認する方法は? Apr 14, 2025 pm 12:48 PM

Linuxでは、次のコマンドを使用して、nginxが起動されるかどうかを確認します。SystemCTLステータスNGINXコマンド出力に基づいて、「アクティブ:アクティブ(実行)」が表示された場合、NGINXが開始されます。 「アクティブ:非アクティブ(dead)」が表示されると、nginxが停止します。

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

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

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などのサードパーティツールを使用します。

Linuxでnginxを開始する方法 Linuxでnginxを開始する方法 Apr 14, 2025 pm 12:51 PM

Linuxでnginxを開始する手順:nginxがインストールされているかどうかを確認します。 systemctlを使用して、nginxを開始してnginxサービスを開始します。 SystemCTLを使用して、NGINXがシステムスタートアップでNGINXの自動起動を有効にすることができます。 SystemCTLステータスNGINXを使用して、スタートアップが成功していることを確認します。 Webブラウザのhttp:// localhostにアクセスして、デフォルトのウェルカムページを表示します。

nginx403を解く方法 nginx403を解く方法 Apr 14, 2025 am 10:33 AM

Nginx 403禁止エラーを修正する方法は?ファイルまたはディレクトリの許可を確認します。 2。HTACCESSファイルを確認します。 3. nginx構成ファイルを確認します。 4。nginxを再起動します。他の考えられる原因には、ファイアウォールルール、Selinux設定、またはアプリケーションの問題が含まれます。

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にアクセスできます

nginx304エラーを解く方法 nginx304エラーを解く方法 Apr 14, 2025 pm 12:45 PM

質問への回答:304変更されていないエラーは、ブラウザがクライアントリクエストの最新リソースバージョンをキャッシュしたことを示しています。解決策:1。ブラウザのキャッシュをクリアします。 2.ブラウザキャッシュを無効にします。 3.クライアントキャッシュを許可するようにnginxを構成します。 4.ファイル許可を確認します。 5.ファイルハッシュを確認します。 6. CDNまたは逆プロキシキャッシュを無効にします。 7。nginxを再起動します。

nginx403エラーを解く方法 nginx403エラーを解く方法 Apr 14, 2025 pm 12:54 PM

サーバーには、要求されたリソースにアクセスする許可がなく、NGINX 403エラーが発生します。ソリューションには以下が含まれます。ファイル許可を確認します。 .htaccess構成を確認してください。 nginx構成を確認してください。 SELINUXアクセス許可を構成します。ファイアウォールルールを確認してください。ブラウザの問題、サーバーの障害、その他の可能なエラーなど、他の原因をトラブルシューティングします。

See all articles