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 名前付きスロットの基本的な使用例

推薦する

値の転送を実現するために、2つの同じレベルのコンポーネントをVueで作成します。

Vue コンポーネントは接続されているため、コンポーネント間で値を渡す必要があるのは避けられません...

Oracle Rownum 書き込みに似た MySQL の詳細な例

Rownum は、Oracle での独自の書き込み方法です。Oracle では、rownum を使用...

MySQL 8.0.12 のインストールと設定方法のグラフィックチュートリアル (Windows 版)

1. はじめにプロジェクトではMySQLを使用しています。インターネット上の例を参考にインストール...

Dockerを使用してLaravelおよびVueプロジェクトの開発環境を構築する詳細な説明

この記事では、Docker で構築された Laravel および Vue プロジェクトの開発環境を紹...

MySQL で複数の主キーが定義されているエラーの解決方法

主キーを作成するには 2 つの方法があります。 テーブルテーブル名を作成( フィールド名タイプ、 フ...

react-beautiful-dnd を使用してリスト間のドラッグ アンド ドロップを実装する

目次react-beautiful-dndを選ぶ理由基本的な使い方基本概念使い方使用中に発生した問題...

負荷分散の基礎知識とnginxを使用した負荷分散の簡単な例

Nginx は、一般的に 7 層の負荷分散に使用できます。この記事では、負荷分散に関する基本的な知識...

Dockerの基本的な手順

目次基本的な指示1. 現在のマシンのコンテナステータスを確認する2. イメージをダウンロードまたは取...

Vueの計算プロパティの詳細な説明

1. 計算属性とは何ですか? 簡単に言えば、計算された結果が属性に保存されるもので、キャッシュとして...

ウェブデザイナーは3つの側面からウェブページを最適化する必要がある

<br />帯域幅の増加に伴い、Web ページ上のオブジェクトも増えているため、Web ...

Dockerが正常に起動しない原因と解決策を詳しく解説

1. Docker 起動時の異常なパフォーマンス: 1. ステータスが繰り返し再起動している場合は、...

MySQL 5.7.19 のインストールと設定方法のグラフィック チュートリアル (win10)

以下に記録されているように、WIN10システムにMYSQLをダウンロードしてインストールするための詳...

JavaScript 配列メソッドの詳細な例

目次導入配列の作成作成方法詳しい説明方法参加する() push() と pop() shift() ...

CentOS 7.x dockerはoverlay2ストレージ方式を使用する

/etc/docker/daemon.json を編集し、以下を追加します。 { "ストレ...