アプリケーションの可用性を確実なものにするため、NGINX Plus をアクティブ/パッシブまたはアクティブ/アクティブの高可用性(HA)クラスタに設定できます。以下に示すアクティブ/パッシブHAクラスタでは、2つのNGINX Plusサーバがあります。プライマリ(primary)はトラフィックをアクティブに処理し、バックアップ(backup)はプライマリ サーバの健全性を監視し、プライマリ サーバで障害が発生すると自動的にプライマリの役割を引き継ぎます。アクティブ/アクティブHAクラスタでは、両方のサーバがトラフィックを処理します。アクティブ/アクティブ/アクティブ構成やその他のN+1構成もサポートされています。
クラスタでのHAの自動フェイルオーバーの他に、NGINX Plusでは設定同期がサポートされています。このため、クラスタ内の1つのNGINX Plusサーバで作成された設定がその他のサーバに伝搬されます。状態共有もサポートされているため、状態情報を使用する機能(スティッキーラーン セッション パーシステンス、レート制限、キー値ストアなど)がクラスタ環境で適切に機能します。
NGINX Plusの高度なロード バランシング機能とアプリケーション健全性監視機能により、アップストリーム アプリケーション サーバで耐障害性とスケーラビリティが実現します。NGINX PlusをHAクラスタに設定すると、アプリケーションの耐障害性がさらに向上し、アプリケーションスタックの単一障害点が解消されます。NGINX Plusサーバでトラフィックを処理できなくなると、別のサーバが引き継ぎます。
さらに高いレベルの耐障害性や、1つのアクティブ/パッシブ ペアで提供できるスループットを超えるスループットが必要な場合には、この構成を拡張して複数のアクティブ/パッシブNGINX Plusインスタンスをサポートできます。
NGINX Plusアクティブ/パッシブHAソリューションは、Virtual Router Redundancy Protocol (VRRP)の実装を使用するkeepalived
に基づいています。nginx-ha-keepalivedパッケージをインストールしてkeepalived
を設定すると、keepalivedはクラスタ内の各NGINX Plusサーバで個別のプロセスとして動作し、共有仮想IPアドレスを管理します。この仮想IPアドレスは、サービスまたはアプリケーションのDNSレコードなどを介してダウンストリーム クライアントにアドバタイズされるIPアドレスです。
keepalived
は、最初の設定に基づいてプライマリを指定し、仮想IPアドレスをプライマリに割り当てます。プライマリからバックアップにVRRPアドバタイズメント メッセージが定期的に送信され、プライマリが正常に稼働しており、keepalived
とNGINX Plusの両方が実行されていることを検証済みであることが確認されます。バックアップがアドバタイズメントを連続して3回受信しないと、バックアップが新しいプライマリとなり、仮想IPアドレスを引き継ぎます。
NGINX Plus 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 Admin Guideをご覧ください。
ハードウェア障害、オペレーティング システムのシャットダウン、NGINX Plusソフトウェアの終了など、致命的な状況によってプライマリNGINX Plusサーバが機能停止すると、HAフェイルオーバーが行われます。必要に応じて、より多くの障害発生状況を特定できるように内部ヘルス チェックを拡張できます。
クラスタ内のNGINX Plusサーバ間で設定を同期できます。これにより、サーバを個別に管理する必要がなくなります。指定されている「プライマリ」サーバに対して変更を行ったら、この変更をクラスタ内の他のサーバにプッシュするだけです。
この機能はNGINX Plus R12で導入され、NGINX Plusリポジトリから配布されているnginx-sync
パッケージに実装されています。DebianシステムとUbuntuシステムのコマンドは次のとおりです。
$ apt-get install nginx-sync
詳しくは、NGINX Plus Admin Guideを参照してください。
クラスタ内のNGINX Plusサーバ間で状態情報を共有できます。これはZone Synchronizationモジュール(NGINX Plus R15で導入されたモジュール)で実装されています。これにより、状態を維持する機能がクラスタ環境で適切に機能できるようになります。NGINX Plusのクラスタ対応の機能を次に示します。
詳しくは、NGINX Plus Admin Guideとzone_syncモジュールの参照ドキュメントをご覧ください。
keepalived
ベースのHAソリューションは、NGINX Plusのオンプレミス導入でのみ機能しますが、クラウド環境向けのHAソリューションもあります。
keepalived
ホームページ – keepalived
の設定の拡張およびカスタマイズの詳細