#nginx はクラスタ化できますか?
nginx はクラスターの高可用性を実現します
NGINX がリバース プロキシ サーバーとして負荷分散を実現し、静的ファイル サーバーとしても使用できることは誰もが知っています。その特徴 つまり、同時実行のサポートが大きく、1 台のマシンで同時に 30,000 の同時実行をサポートできるため、現在、多くの Web サイトがバックエンド リソースを均一にスケジュールし、割り当てるためのゲートウェイ ポータルとして NGINX を使用しています。ただし、NGINX がダウンすると、バックエンド サービス全体が使用できなくなります。または、同時実行数が非常に大きく、100,000 のレベルに達する場合でも、1 つの NGINX にはまだ制限があるため、現時点ではマスターを実行する必要があります。 NGINX でのスレーブ操作バックアップによりサービスの高可用性が確保され、クラスターは同時実行圧力を共有するために使用されます。現在、NGINX は主にこの 2 つの分野で次のソリューションを提供していますので、それぞれ紹介します:NGINX マスター/スレーブ バックアップ
NGINX は現在マスター/スレーブを実装しています。バックアップ 主流のソリューションは、デュアル マシンのホット バックアップを実装する Keepalive Nginx です。 Keepalived の概要: Keepalived は、VRRP プロトコルに基づくサービス高可用性ソリューションです。IP 単一障害点を回避するために使用できます。同様のツールには、ハートビート、corosync、pacemaker などがあります。 。ただし、通常は単独で動作するのではなく、他の負荷分散テクノロジー (lvs、haproxy、nginx など) と連携してクラスターの高可用性を実現します。 VRRP プロトコル: VRRP の正式名は Virtual Router Redundancy Protocol で、仮想ルーティング冗長プロトコルです。これは、ルーターの高可用性を実現するためのフォールト トレラント プロトコルと考えることができます。同じ機能を提供する N 台のルーターがルーター グループを形成します。このグループにはマスターと複数のバックアップがありますが、外部からは 1 台のルーターのように見えます。は、仮想 IP (vip、つまり、ルーターが配置されている LAN 内の他のマシンのデフォルト ルート) を持つ仮想ルーターを構成します。この IP を所有するマスターは、実際に ARP 応答と IP パケットの転送を担当します。グループ内の他のルーターはバックアップの役割を果たします。マスターはマルチキャスト メッセージを送信します。バックアップがタイムアウト期間内に vrrp パケットの受信に失敗すると、マスターがダウンしていると見なされます。このとき、バックアップは VRRP 優先度に基づいてマスターとして選択され、確実にルーターの高可用性。 VRRP プロトコルの実装では、仮想ルーターは仮想 MAC アドレスとして 00-00-5E-00-01-XX を使用します。XX は一意の VRID (仮想ルーター識別子) です。このアドレスには物理的なアドレスが 1 つだけあります。ルーターも同時に占有されています。仮想ルータ内の物理ルータ グループでは、マルチキャスト IP アドレス 224.0.0.18 を通じて通知メッセージが定期的に送信されます。各ルーターには 1 ~ 255 の優先順位があり、最も高い優先順位がマスター ルーターになります。マスターの優先順位を下げることにより、バックアップ状態のルータがメイン ルータの状態をプリエンプト (プロエンプト) することができ、同じバックアップ優先順位を持つ 2 つの IP アドレスのうち大きい方がマスターとなり、仮想 IP を引き継ぎます。具体的な実装原則:
1) マスターがダウンしていない場合、マスターが VIP を占有し、nginx がマスター上で実行されます2) マスターがダウンしています次に、バックアップが VIP を捕捉し、バックアップ上で nginx サービスを実行します。3) マスター サーバー上の nginx サービスがハングすると、VIP リソースがバックアップ サーバーに転送されます4)バックエンド サーバーの健全性ステータスを検出します。マスターとバックアップの両方で nginx サービスが有効になっています。マスターまたはバックアップに関係なく、キープアライブ サービスの 1 つが停止すると、VIP はキープアライブ サービスがまだ存在するノードにドリフトします。NGINX と keepalived のインストールと構成
# これらには多くのインストール構成があり、相互に監視するスクリプトを作成することもできます。 、アラームなど、特別なレッスンを行います。このレッスンでは、主に解決策と原理について説明します。NGINX 分散クラスター
複数の NGINX があり、負荷分散を実現したい場合は、1. 各 nginx にはパブリック ネットワーク アドレスがあります。ドメイン名で同じドメイン名への複数の方向を設定するのが、ラウンド ロビンを実装する最も簡単な方法です。ただし、障害の遮断は遅くなります。 2. 1 つのパブリック ネットワーク nginx は、アップストリーム関数、ホイール、IP、URL を通じてイントラネット上の複数の nginx に分散されます。しかし、パブリック ネットワーク上の nginx がダウンすると、内部ネットワーク全体が影響を受けます。 3. パブリック ネットワーク nginx のペアと 3 つのパブリック ネットワーク IP により、キープアライブを通じて高可用性が実現され、その後イントラネットへのアップストリームが実現されます (これは、前のセクションで説明したマスター/スレーブ バックアップです)。 一般的に、上記の 1、2、および 3 の方法で基本的に問題を解決できます。2 または 3 を使用することをお勧めします。同時実行の量が非常に大きい場合は、一般に、ハードウェア F5 およびその他の機器を使用するために必要です負荷分散のために、DNS、CDN、およびその他のサービス プロバイダーと協力して、ドメイン名解決、転送、およびキャッシュ構成を実行しますこれは、ほとんどの主要メーカーの現在のアーキテクチャ構成でもあります。 Nginx 関連の技術記事の詳細については、Nginx の使用法チュートリアル 列にアクセスして学習してください。
以上がnginx はクラスター化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。