NGINX Plusをアクティブ/パッシブまたはアクティブ/アクティブの高可用性(HA)クラスターに構成することで、アプリケーションの可用性を保証できます。アクティブ/パッシブのHAクラスターでは、2台のNGINX Plusサーバーが使用されます。1台目のプライマリがアクティブにトラフィックを処理し、2台目のバックアップはプライマリの状態を監視し、現在のプライマリに障害が発生した場合に自動的にプライマリとなって処理を引き継ぎます。アクティブ/アクティブのHAクラスターでは、両方のサーバーがトラフィックを処理します。アクティブ/アクティブ/アクティブなどのN+1構成もサポートしています。

自動フェイルオーバーによるクラスターでのHAに加えて、NGINX Plusは、構成の同期をサポートしているため、クラスター内の1つのNGINX Plusサーバーで作成した構成を他のサーバーに反映させることができます。状態の共有もサポートしているため、スティッキーラーニングのセッションパーシステンス、レート制限、key‑valueストアなどの状態の情報を利用する機能もクラスター環境で正しく動作します。
WebアプリケーションのためのHAアーキテクチャー
NGINX Plusの高度なロードバランシングやアプリケーションヘルスモニタリングの機能は、上流のアプリケーションサーバーに耐障害性とスケーラビリティを提供します。NGINX PlusをHAクラスターに構成することで、アプリケーションの耐障害性を引き上げ、アプリケーションスタックの単一障害点を排除できます。NGINX Plusのあるサーバーがトラフィックを処理できなくなると、別のサーバーが処理を引き継ぎます。
構成を拡張して複数のアクティブ/パッシブNGINX Plusインスタンスをサポートすることで、より高レベルの冗長性を保証したり、アクティブ/パッシブの単一ペアを上回るスループットを実現したりできます。
HAソリューションの仕組み
NGINX Plusのアクティブ/パッシブのHAソリューションのベースとなるkeepalived
は、VRRP(Virtual Router Redundancy Protocol)の実装を使用します。nginx-ha-keepalivedパッケージをインストールしてkeepalived
を構成すると、クラスター内のそれぞれのNGINX Plusサーバーで個別のプロセスとしてkeepalivedが動作し、共有仮想IPアドレスを管理します。仮想IPアドレスとは、例えば、利用するサービスやアプリケーションのDNSレコード経由で下流のクライアントにアドバタイズされるIPアドレスです。
keepalived
が初期構成に基づいてプライマリを指定し、仮想IPアドレスをプライマリに割り当てます。プライマリは一定間隔でVRRPのアドバタイズメッセージをバックアップに送信することでバックアップが正常であることを確認し、keepalived
とNGINX Plusの両方が動作していることを確認します。バックアップが3回連続でアドバタイズメントを受信しないと、バックアップが新しいプライマリになって仮想IPアドレスを引き継ぎます。
HAソリューションのインストールと構成
NGINX PlusのHAを有効にするのは非常に簡単です。nginx-ha-keepalivedパッケージに実装されており、NGINX Plusリポジトリからインストールできます。例えば、DebianやUbuntuのシステムでは、以下のコマンドを使用します。
$ apt-get install nginx-ha-keepalived
HAクラスター内のそれぞれのNGINX Plusサーバーにパッケージをインストールし、付属するnginx-ha-setupスクリプトを実行してHAソフトウェアを構成し、実行します。詳細な手順については、「NGINX Plus管理者ガイド」を参照してください。
ハードウェア障害、オペレーティングシステムのシャットダウン、またはNGINX Plusソフトウェアの終了などの致命的な条件でプライマリNGINX Plusサーバーが動作しなくなると、HAフェイルオーバーが実行されます。内部ヘルスチェックを必要に応じて拡張し、多くの障害状況を識別するようにできます。
HAクラスターでの構成の同期
クラスター内のNGINX Plusサーバー間で構成を同期することができるため、サーバーを個別に管理する必要はありません。「プライマリ」に指定されたサーバーを変更し、その変更をクラスター内の他のサーバーに送信するだけで同期が完了します。
これは、NGINX Plus R12で追加された機能で、NGINX Plusリポジトリから配布されるnginx-sync
パッケージで実装されています。DebianやUbuntuのシステムでは、以下のコマンドを使用します。
$ apt-get install nginx-sync
詳細については、「NGINX Plus管理者ガイド」を参照してください。
HAクラスターでの状態の共有
クラスター内のNGINX Plusサーバーは、ゾーン同期モジュール(NGINX Plus R15で発表)の実装により、状態の情報を共有することができます。これにより、状態の維持がクラスター環境で正しく動作するようになります。NGINX Plusの以下の機能はクラスター対応です。
- スティッキーラーニングのセッションパーシステンス
- レート制限
- key‑valueストア
詳細については、「NGINX Plus管理者ガイド」とzone_syncのドキュメントを参照してください。
クラウド環境でのNGINX PlusのHA
keepalived
ベースのHAソリューションはNGINX Plusのオンプレミスデプロイメントでのみ動作しますが、クラウド環境向けの以下のHAソリューションを利用することもます。
- NGINX Plus on AWSでAWSネットワークロードバランサーを使用する、アクティブ-アクティブのHA
- NGINX Plus on AWSでElastic IPアドレスを使用する、アクティブ-パッシブのHA
- NGINX Plus on the Google Cloud PlatformのオールアクティブのHA
- NGINX Plus on Microsoft AzureでAzure標準ロードバランサーを使用する、アクティブ-アクティブのHA
参考資料
- 「NGINX Plus管理者ガイド」のNGINX Plusの高可用性サポート – NGINX PlusのオンプレミスデプロイメントにおけるHAの構成の詳細な手順
- 仮想ルーター冗長化プロトコル(Virtual Router Redundancy Protocol)のWikipediaの説明 – VRRPの概要
keepalived
のホームページ –keepalived
の構成の拡張とカスタマイズの詳細