Nginx 7層負荷分散のいくつかのスケジューリングアルゴリズムの簡単な理解

Nginx 7層負荷分散のいくつかのスケジューリングアルゴリズムの簡単な理解

この記事は主に、Nginx 7 層負荷分散のいくつかのスケジューリング アルゴリズムを紹介します。この記事のサンプル コードは非常に詳細で、皆さんの学習や仕事に一定の参考値があります。困っている友人は参考にしてください。

Nginx は軽量で高性能な Web サーバーであり、優れたロード バランサーおよびリバース プロキシ サーバーでもあります。強力な定期マッチングルール、動的および静的分離、URL 書き換え機能、簡単なインストールと構成、ネットワークの安定性への依存度が非常に低いなどのサポートがあるため、7 層ロード バランシングとしてよく使用されます。ハードウェアが悪くなければ、通常は数万の同時接続を安定してサポートできます。ハードウェアのパフォーマンスが十分に良く、システムカーネルパラメータと Nginx 構成が最適化されている場合は、100,000 を超える同時接続に達することもできます。

以下は、7層ロードバランシングとしてのNginxでよく使用されるスケジューリングアルゴリズムと適用可能なビジネスシナリオです。

1. ポーリング(デフォルトのスケジューリングアルゴリズム)

機能: 各リクエストは異なるバックエンド サーバーに割り当てられ、時系列順に処理されます。
適用可能なビジネス シナリオ: バックエンド サーバーのハードウェア パフォーマンス構成がまったく同じで、特別なビジネス要件がない場合に使用されます。

アップストリームバックエンドサーバー{ 
サーバー 192.168.0.14:80 max_fails=2 fail_timeout=10s; 
サーバー 192.168.0.15:80 max_fails=2 fail_timeout=10s; 
}

2. 加重ラウンドロビン

機能: ポーリング確率を指定し、重み値はアクセス比率に比例し、ユーザー要求は重み比率に従って割り当てられます。
適用可能なビジネス シナリオ: バックエンド サーバーのハードウェア処理能力が不均一な場合に使用されます。

アップストリームバックエンドサーバー{ 
サーバー 192.168.0.14:80 重み=5 max_fails=2 fail_timeout=10s; 
サーバー 192.168.0.15:80 重み=10 max_fails=2 fail_timeout=10s;
}

3. ip_ハッシュ

機能: 各リクエストはアクセス IP のハッシュ結果に従って割り当てられるため、各訪問者は固定のバックエンド サーバーにアクセスし、セッション保持の問題を解決できます。
適用可能なビジネス シナリオ: アカウント ログインを必要とするシステムや、セッション接続を維持するサービスに適用できます。

アップストリームバックエンドサーバー{ 
ip_ハッシュ; 
サーバー 192.168.0.14:80 max_fails=2 fail_timeout=10s; 
サーバー 192.168.0.15:80 max_fails=2 fail_timeout=10s; 
}

4. 最小接続数 least_conn

機能: nginx リバース プロキシとバックエンド サーバー間の接続数に応じて、接続数が最も少ないものが最初に割り当てられます。

適用可能なビジネス シナリオ: クライアントとバックエンド サーバー間の長時間の接続を維持する必要があるビジネスに適用できます。

アップストリームバックエンドサーバー{ 
最小接続数;
サーバー 192.168.0.14:80 max_fails=2 fail_timeout=10s; 
サーバー 192.168.0.15:80 max_fails=2 fail_timeout=10s; 
}

5. fair (サードパーティモジュール ngx_http_upstream_fair_module をコンパイルしてインストールする必要があります)

機能: リクエストはバックエンド サーバーの応答時間に応じて分散され、応答時間が短いリクエストが優先されます。
適用可能なビジネスシナリオ: アクセス応答速度に特定の要件があるビジネス。

アップストリームバックエンドサーバー{
公平; 
サーバー 192.168.0.14:80 max_fails=2 fail_timeout=10s; 
サーバー 192.168.0.15:80 max_fails=2 fail_timeout=10s; 
}

6. url_hash (サードパーティモジュール ngx_http_upstream_hash_module をコンパイルしてインストールする必要があります)

機能: アクセス URL のハッシュ結果に基づいてリクエストを割り当て、同じ URL が同じバックエンド サーバーにアクセスするようにします。

適用可能なビジネス シナリオ: この方法は、バックエンド サーバーがキャッシュ サーバーである場合に、より効果的です。

アップストリームバックエンドサーバー{ 
サーバー 192.168.0.14:80 max_fails=2 fail_timeout=10s;
サーバー 192.168.0.15:80 max_fails=2 fail_timeout=10s; 
$request_uri をハッシュします。 
}

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Python機械学習ライブラリxgboostの使用
  • エンジニアはLRUキャッシュ除去アルゴリズムとPython実装プロセスを理解する必要があります
  • コード例を通してページ置換アルゴリズムの原理を理解する
  • 機械学習について知っておくべきトップ10のアルゴリズムについて簡単に説明します
  • マージソートの時間計算量の導出の詳細な説明

<<:  JavaScript ベースのシンプルな計算機の実装

>>:  MySQL スロークエリを通じて MySQL のパフォーマンスを最適化する方法

推薦する

Linux jdk のインストールと環境変数の設定チュートリアル (jdk-8u144-linux-x64.tar.gz)

最初にsudo suコマンドを使用して root アカウントに切り替えることをお勧めします。そうしな...

bash のスクリプトデバッグメカニズムの詳細な説明

スクリプトをデバッグモードで実行するbash -x <script> を使用すると、スク...

JS を使って 1 分で github+Jekyll ブログに訪問カウント機能を追加する実装

目次1分でgithub+Jekyllブログにトラフィック機能を追加する1. ジェクルとは何か1. J...

純粋な CSS 流星群の背景サンプルコード

GitHubアドレス、気に入ったらスターを付けてくださいプラグインのプレビューチュートリアルコード表...

Linux での JDK と Tomcat のアップロードと設定に関する詳細なチュートリアル

準備1. 仮想マシンを起動する2. gitツールルートアカウントでログインルートアカウントを使用して...

CentOS 7.0 (mysql-5.7.21) で複数の MySQL インスタンスを起動する方法

設定手順Linux システム: CentOS-7.0 MySQL バージョン: 5.7.21 Lin...

WeChatミニプログラムは同時通訳を利用して音声認識を実装します

私は同時通訳音声認識機能を使用して、WeChatアプレットのホームページの音声検索機能を実現しました...

JavaScriptはPromiseを使用して複数の繰り返しリクエストを処理します

1. なぜこの記事を書くのですか?重複リクエストの処理に関する記事をたくさん読んだことがあるでしょう...

原因不明のMySqlサービス消失の解決策

原因不明のMySqlサービス消失の解決策先ほど、MySQL-Front が突然 MySql を開けな...

Vue-router プログラムナビゲーションの 2 つの実装コード

ページをナビゲートする2つの方法宣言型ナビゲーション: リンクをクリックしてナビゲーションを実現する...

ホバードロップダウンメニューを実装するためのネイティブJS

JS はホバー ドロップダウン メニューを実装します。これは、フロントエンドの面接で遭遇するシナリ...

Nginx プロキシを使用してインターネットを閲覧する方法

私は通常、Tomcatや他のアプリケーションのリバースプロキシとしてnginxを使用しています。実際...

DockerコンテナのライフサイクルアーキテクチャとVMとの違いについて詳しく説明します。

コンテナのライフサイクルコンテナランタイムのライフサイクルコンテナは、分離特性を持つプロセスのセット...

SQL Server の完全バックアップに関する珍しいエラーと解決策

1. エラーの詳細一度、データベース全体のバックアップを手動で実行したときに、次のエラーが発生しまし...

TypeScript におけるジェネリックケースの詳細な説明

ジェネリックの定義 // 要件 1: ジェネリックは指定されていないデータ型をサポートできるため、渡...