Nginx の負荷分散アルゴリズムとフェイルオーバー分析

Nginx の負荷分散アルゴリズムとフェイルオーバー分析

概要

Nginx ロード バランシングは、アップストリーム サーバー (実際のビジネス ロジックによってアクセスされるサーバー)、ロード バランシング、フェイルオーバー、障害再試行、フォールト トレランス、ヘルス チェックなどを提供します。
上流サーバー (実際のビジネス ロジックがアクセスするサーバー) に障害が発生した場合、他の上流サーバー (実際のビジネス ロジックがアクセスするサーバー) に転送できます。

構成

アップストリームバックサーバー{
    サーバー 127.0.0.1:8080;
    サーバー 127.0.0.1:8081;
  }
  
  サーバー{
    聞く 80;
    サーバー名 www.itmayiedu.com;
    位置 / {
      ### アップストリーム サーバーの負荷分散サーバー proxy_pass http://backServer を指定します。
      インデックス index.html index.htm;
    }
  }

負荷分散アルゴリズム

各リクエストは時系列順に異なるバックエンド サービスに割り当てられます。バックエンド サーバーがクラッシュした場合、障害のあるシステムは自動的に削除され、ユーザー アクセスに影響が及ぶことはありません。

重み(ポーリング重み)

重み値が大きいほどアクセスされる確率が高くなります。主にバックエンドサーバーごとのパフォーマンスにばらつきがある場合に使用されます。または、マスターとスレーブの状況で異なる重みを設定するだけで、ホスト リソースを合理的かつ効果的に使用できます。

通常は比例する

アップストリームバックサーバー{
 サーバー 127.0.0.1:8080 重み=1;
 サーバー 127.0.0.1:8081 重み=2;
 }

ip_ハッシュ

各リクエストはアクセス IP のハッシュ結果に従って割り当てられるため、同じ IP アドレスからの訪問者は固定のバックエンド サーバーにアクセスでき、動的 Web ページのセッション共有問題を効果的に解決できます。一般的には IP バインディングと呼ばれます。

アップストリームバックサーバー{
   サーバー 127.0.0.1:8080 ;
   サーバー 127.0.0.1:8081 ;
   ip_ハッシュ; 
 }

公正(第三者)

フェア アルゴリズムは、重み付けや ip_hash よりもスマートな負荷分散アルゴリズムです。ページ サイズと読み込み時間に応じて負荷をインテリジェントに分散できます。つまり、バックエンド サーバーの応答時間に応じてリクエストを割り当て、応答時間が短いリクエストを優先します。 Nginx 自体は fair をサポートしていません。このスケジューリング アルゴリズムが必要な場合は、upstream_fair モジュールをインストールする必要があります。

url_hash(サードパーティ)

アクセスされた URL のハッシュ結果に応じてリクエストを分散し、各 URL がバックエンド サーバーに送信されるように設定するこで、バックエンド キャッシュ サーバーの効率をさらに向上させることができます。 Nginx 自体は url_hash をサポートしていません。このスケジューリング アルゴリズムが必要な場合は、Nginx ハッシュ パッケージをインストールする必要があります。

Nginx 構成のフェイルオーバー

  • アップストリーム サーバー (実際のアクセス サーバー) に障害が発生したり、時間内に応答しなかったりした場合は、サーバーの高可用性を確保するために、次のサーバーを直接ローテーションする必要があります。
  • nginx とアップストリーム サーバー (実際にアクセスしたサーバー) 間のタイムアウト、バックエンド サーバー接続のタイムアウト (ハンドシェイクを開始して応答を待機するタイムアウト)、proxy_connect_timeout 1 秒。
  • nginx がアップストリーム サーバー (実際にアクセスしたサーバー) に送信するタイムアウト期間は proxy_send_timeout 1 秒です。
  • nginx は上流サーバー (実際にアクセスしたサーバー) のタイムアウト proxy_read_timeout 1 秒を受け入れます。

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

以下もご興味があるかもしれません:
  • Nginx で Brotli 圧縮アルゴリズムを有効にする方法の例
  • Nginx で Brotli アルゴリズム圧縮を有効にする例
  • NginxはGzipアルゴリズムを使用してメッセージを圧縮します
  • Nginxポーリングアルゴリズムの基本的な実装方法の詳細な説明
  • Nginx 7層負荷分散のいくつかのスケジューリングアルゴリズムの簡単な理解
  • C# は Nginx のスムーズな重み付けポーリング アルゴリズムを実装します
  • nginxの4つのスケジューリングアルゴリズムと高度な機能の詳細な分析
  • Brotli圧縮アルゴリズムを有効にするNginxの実装プロセスの詳細な説明

<<:  MySQL マルチテーブル結合クエリ例の説明

>>:  Vue 名前付きスロットの基本的な使用例

ブログ    

推薦する

よく使用される MySQL 関数の完全なリスト (分類および要約)

1. 数学関数ABS(x) xの絶対値を返します。 BIN(x) xの2進値を返します(OCTは8...

mysql5.7.19 解凍版の詳細なインストール チュートリアル (純粋なクラックされた中国語版 SQLYog を使用)

Mysql5.7.19バージョンは今年リリースされた新しいバージョンです。最近のMySQLのバージ...

MySQL マスタースレーブレプリケーション構成プロセス

メインライブラリの構成1. MySQLを設定する vim /etc/my.cn # ファイルに次の内...

docker デプロイメントの実装手順 lnmp-wordpress

目次1. 実験環境2. Dockerソースをインストールする3. Dockerをインストールする4....

HTML 基本ノート (推奨)

1. ウェブページの基本構造: XML/HTML コードコンテンツをクリップボードにコピー<...

Dockerコンテナの状態変換の実装

Dockerコンテナの状態遷移図2度目の実戦 [root@localhost ~]# docker ...

MySQL の時間タイプとモードの詳細

目次1. MySQL の時刻型2. タイムゾーンを確認する3. 不正な時間値4. 厳密モード5. 事...

Zabbix による VMware Exsi ホストの監視のグラフィカルな手順

1. 仮想化 vcenter に入り、ブラウザでログインし (クライアントは設定する場所を見つけませ...

CSS の境界線を通して三角形と矢印を実装するサンプルコード

1. CSS ボックスモデルボックスには、余白、境界線、パディング、コンテンツが含まれます境界線の接...

なぜ Tomcat が起動できないのでしょうか?

目次現象:ポートの使用:ファイルにスペルミスがあります:現象: Tomcat がインストールされ、W...

Linux デュアル ネットワーク カード バインディング スクリプト メソッドの例

Linux の操作と構成作業では、デュアル ネットワーク カードのバインディングがよく使用されます。...

mysql データはどこに保存されますか?

MySQLデータベースの保存場所: 1. MySQLがMyISAMストレージエンジンを使用する場合...

Vueのキャッシュ方法の例の詳細な説明

最近、「フロントエンドキャッシュ」という新しい要件が作成されました要件背景: フォームへの高頻度の繰...

MySql テーブル、データベース、シャーディング、パーティショニングの知識ポイントの紹介

1. はじめにデータベース内のデータ量が一定レベルに達すると、システムパフォーマンスのボトルネックを...

Vueは複数の画像の追加、表示、削除を実装します

この記事では、Vueで複数の画像を追加、表示、削除するための具体的なコードを参考までに紹介します。具...