CodeZine(コードジン)

特集ページ一覧

マルチクラウド環境でNGINXの動作環境や外部通信の設定・運用を共通化するノウハウ【デブサミ2020】

【14-D-5】マルチクラウドに向けてNGINX活用促進する為に知っておいてほしいこと

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2020/04/24 12:00

目次

さまざまな条件による外部通信の制御にはNGINX Ingress Controllerを活用

 NGINX Ingress ControllerではHTTP、gRPC、WebSocketのリバースプロキシを同時に設定可能で、HTMLヘッダーやコンテンツの中身をチェックする「Active Health Checks」機構も利用できる。加えて、アプリケーションごとにJWT・OpenIDベースの認証機能を持たせることも可能だ。

 また、アプリケーションの新しいバージョンがKubernetes環境に、旧バージョンがAWS環境にあり、それぞれを区別して振り分けたい場合など、NGINX Ingress ControllerのExternalNameという設定を利用して実現できる。

 「組織によってGCPを使う部署、AWSを使う部署、Azure環境を使う部署がそれぞれ存在する場合もあるでしょう。ExternalNameを使えばうまくルーティングの制御ができます。コンピューターパワーが必要な場面など、データセンターの物理環境にも振り分けが可能です。新しいバージョンをリリースする際、まずは1割の人だけに新バージョンにアクセスさせてエラー率やバグを見るようなweightの設定もできます」と鈴木氏。

バージョンによって異なる環境に振り分けるExternalName設定例
バージョンによって異なる環境に振り分けるExternalName設定例

 さらに、マルチクラウドやオンプレミス環境に設置したAPIもNGINX Controller 3.0を活用することで管理ができる。各環境にエージェントを設置してControllerからURLリライトやレート制限、端末ごとの認証・制限などの設定、管理を可能にする仕組みだ。

 続いて鈴木氏は、監視運用という視点でのNGINX活用についての説明に移った。NGINXはインフラ・サービス監視ツールの「Prometheus」のインテグレーションもあるので、そこでログを取得・監視することもできる。「F5/NGINX Community!」のイベントでは、NGINXにて処理中コネクション数のメトリクスを利用してPrometheusで監視したログを、Kubernetes環境にあるPodのオートスケーリングの指標にした、ウォンテッドリーの事例が発表された。

 「アプリケーションがどのように使われているか、レスポンスタイムはどれくらいか、といった状態を把握する際にも使えます。Datadogなどのエージェントにも対応しているので、簡単に2~3行の設定をすると、グラフィカルなダッシュボードで監視可能です。複数台の合計値や平均値なども見ることができ、NGINX Controllerから好みのパラメーターを取り出してオリジナルのダッシュボードに展開することも可能です」と鈴木氏は話す。

ダッシュボードの例
ダッシュボードの例

 NGINXの導入、活用方法、監視運用まで説明した鈴木氏はこのあと、先ほど紹介したExternalNameによる振り分けのデモンストレーションを実施した。

 デモンストレーションは、GKE上に用意したKubernetesクラスターと、Amazon EC2インスタンスに置いたWebページを振り分けるもの。ExternalNameにはAWSのURLを指定する。「https://gke-v2.example.com/」はGKEへ、「https://aws-v2.example.com/」はAmazon EC2インスタンスに向ける設定で、5分ほどで設定が完了した。

GKEとAWSに振り分けるデモンストレーション
GKEとAWSに振り分けるデモンストレーション

 さらにAzureのKubernetes環境における同様のデモンストレーションも行われた。

AzureとAWSに振り分けるデモンストレーション
AzureとAWSに振り分けるデモンストレーション

 デモンストレーションについて鈴木氏は「サービスの実態はGKEに、ちょっと作って試したいものはAWSに置いておく場合にも使えます。AzureにもKubernetesサービスがあるので同じように設定できます。このようにKubernetesなら、NGINXの設定をうまく使うことで、マルチクラウド環境が手軽に利用可能です。振り分けたあとにBasic認証や、JWT認証の処理を入れることもできますよ」と解説を加え、セッションを締めくくった。

お問い合わせ

 NGINX (Part of F5)



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:【デブサミ2020】セッションレポート

もっと読む

著者プロフィール

  • CodeZine編集部(コードジンヘンシュウブ)

    CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5