ページの先頭です

ページ内を移動するためのリンク
本文へ (c)

ここから本文です。

NGINX Plusの監視機能を試してみた

ライター:植谷 昌博
2017年にネットワンシステムズ株式会社に入社し、CiscoのWireless製品担当として技術調査、検証評価、提案および導入支援に従事。
現在は、セキュリティ分野の担当領域拡大のため、F5製品を対応中。

目次

はじめに

”NGINX” ときくと、WebサーバシェアNo.1のOSS(オープンソースソフトウエア)というイメージを持つ方も多くいるかと思いますが、少ないリソースで安定かつ高速な負荷分散機能を提供できることでも注目されています。
本記事では、NGINXの有償版である ”NGINX Plus” を使用して負荷分散機能や監視機能について着目して検証してみましたのでご紹介します。

検証例

使用したコンポーネント一覧、構成イメージは下記となります。Webサーバ(負荷分散対象)としてもNGINX(OSS)およびNGINX Plusを使用しています。

動作確認

今回の動作確認では、大きく分けて下記3点を紹介します。

監視機能:
ライブアクティビティモニタリング(NGINX Plusのみ)
アクティブヘルスチェック(NGINX Plusのみ)

負荷分散:
最小コネクション+重み付け方式


■ライブアクティビティモニタリング

NGINX Plusには、リアルタイムにアクティビティ監視できる機能があり、負荷分散対象サーバのステータスやNGINX Plusのステータスを確認することが可能です。ライブアクティビティモニタリングのデータは、NGINX PlusAPIで生成されています。
設定としては下記となりますが、ライブアクティビティモニタリングへステータス情報を表示させるためには、項目ごとに別途設定が必要となります。

上記にてapi write=onとなっていますが、APIを用いてUpstream(サーバグループ)の変更やステータス情報をクリアする際に必要となるためです。ステータス情報の取得のみの場合は、不要となります。
また、検証環境ためAPIへのアクセス制御は実施しておりませんが、本番環境などの場合はAPIのアクセス制御をお勧めします。ここでは、負荷分散機能で用いるUpstream(サーバグループ)項目やヘルスチェック項目に着目して設定を紹介します。

・Upstream(サーバグループ)項目
 ステータス情報を表示させるには、Upstream(サーバグループ)内で共有メモリーゾーン(zone)を設定する必要があります。

・ヘルスチェック項目
 ステータス情報を表示させるには、ヘルスチェックが有効となっていること、かつ対象のUpstream(サーバグループ)で共有メモリーゾーンが設定されていることとなります。

設定例としては下記となります。
※IPアドレスについては一部、マスクしております。

上記を設定した上でブラウザより下記へアクセスするとモニタリングの画面が表示されます。
http://<IPアドレス>/dashboard.html
GUIトップ画面>HTTP Upstreamsを選択するとUpstreamのステータスが表示されます。
その中にヘルスチェック項目も含まれています。
■アクティブヘルスチェック
Upstreamの各サーバに対してデフォルト5秒間隔で、ヘルスチェックを実施します。
location内、proxy_pass下で定義します。
設定例では、ポート指定するパラメータを使用しています。
CLIにてUpstreamのサーバログからもヘルスチェック実施されていることが確認できます。
※IPアドレスについては一部、マスクしております。
■最小コネクション+重み付け方式
最小コネクションの場合は、Upstream内にて下記のように定義します。
重み付けをプラスすることで、負荷分散対象サーバのパフォーマンスが異なる場合なども効率よく分散可能となります。
※NGINX(OSS)、NGNIX Plusともにデフォルトの負荷分散方式はラウンドロビンとなるため、ラウンドロビンの場合、定義は不要となります。

設定例としては下記となります。
※IPアドレスについては一部、マスクしております。

ライブアクティビティモニタリングのHTTP Upstreamsからも最小コネクション+重み付け方式にて負荷分散されていることが確認できます。

まとめ

今回は、NGINX Plusの監視機能であるライブアクティビティモニタリング、アクティブヘルスチェック、またNGINX(OSS)、NGINX Plus共通で利用可能な負荷分散機能である最小コネクション+重み付け方式に着目してご紹介しました。
また、今回はご紹介できておりませんが、NGINX Controllerと組み合わせることによってNGINX Plusを統合管理することも可能となります。
これからNGINX Plusを勉強しようと思われている方、導入予定・検討している方の参考となれば幸いです。

※本記事の内容は執筆者個人の見解であり、所属する組織の見解を代表するものではありません。

RECOMMEND