マルチクラウド環境でNGINXの動作環境や外部通信の設定・運用を共通化するノウハウ【デブサミ2020】
【14-D-5】マルチクラウドに向けてNGINX活用促進する為に知っておいてほしいこと
高速軽量なWebサーバーとして活用が進んでいるNGINXは、Webサーバーだけでなく、ロードバランサー、セキュリティコントロールなど、さまざまな機能を備えている。また、Amazon Web Services(AWS)、Microsoft Azure(Azure)、Google Cloud Platform(GCP)といったパブリッククラウドや、Kubernetes、OpenShiftなどのコンテナにも対応する柔軟性を持つ。本セッションでは、マルチクラウドの利用やリバースプロキシ、複数アプリケーション、APIの管理といった、NGINXでできることや具体的な活用方法について、事例の紹介やデモンストレーションを交えながら解説が行われた。
さまざまな用途・環境で使われるNGINX――マルチクラウドにはKubernetesで環境を共通化
NGINXはさまざまなLinuxサーバーにインストール可能で、オープンソースの構成管理ツールAnsibleを使ったインストールの自動化にも対応。また、GitHubにはそのロールが公開されている。
NGINXの環境をDocker化して、自分のPCをはじめ、クラウドのテスト環境、本番環境などさまざまな場所に展開できる。Docker向けに作成したコンテナを公開するDocker Hubにも公式イメージがアップされており、公式のDockerfileも公開されている。
また、開発において、コードをコミットして、JenkinsやGitLabなどでテストをしたあと、ステージングや本番に反映していくといった、一連のCI/CDの局面でも何らかの形でNGINXは関わってくる。
「NGINXをアプリケーションサーバー側で使う場合もあれば、その手前にNGINXを置いてリバースプロキシとして使う場合もあるでしょう。商用版ならセキュリティを高める認証やWebアプリケーションファイアウォールなど高度な機能やサポートも提供可能です。キャッシュの機能もあるので、CSSやjsファイル、写真や動画をキャッシュして、一番近いところからアクセスしてもらうことも可能です」と鈴木氏は述べ、身近な例として、Netflixの動画配信ワークロードについて触れた。
さらに鈴木氏は、NGINXが広く採用される理由として、競合サービスと比較すると同時接続処理やメモリ使用量が優れていることや、商用版は帯域幅やvCPUによるライセンスや制限がないことを説明。加えて、AWS環境やAzure環境でのオートスケールにも対応したツールも公開されており、これを使ってリバースプロキシのバックエンドを自動的に追加する仕組みを構築できるとした。
最近のアプリケーション提供環境として、パブリッククラウドやベアメタルサーバーでのバーチャルマシン以外に、Kubernetesなどのコンテナプラットフォームの利用が進んでいる。Kubernetesの環境においても、「NGINX Ingress Controller」を使うことでNGINXにて外部からのアクセスを制御できるようになる。GCPには、Google Kubernetes Engine(GKE)でのNGINX Ingress Controllerのコミュニティドキュメントが公開されている。
鈴木氏は「GKEの標準ではL7のロードバランサーが起動しますが、NGINXのパラメーターをつけると、L4のロードバランサーが設定され、L7が担う処理はNGINXにおまかせする仕組みを構築できます。TCPとUDPはクラクラウド側のL4、そのあとのドメインやパスの制御についてはNGINX Ingress Controllerを通して設定できるようになります」と説明した。
AzureでもKubernetesの環境を作ると同様にロードバランサーが作られ、その後の処理はNGINXに任せられるようになる。
- Azure Kubernetes Service (AKS) でイングレス コントローラーを作成する
- How Kubernetes Ingress and LoadBalancer resources work together
このように、URLやホストなどによって、本番やテスト環境、異なるバージョンのアプリケーションなど、Kubernetes内のPodにあるサービスへのルーティングを設定できる。
鈴木氏はユーザーコミュニティのイベント「F5/NGINX Community!」で披露されたカカクコムの利用例について触れ「オンプレミスのKubernetes環境でドメインやパスの振り分けに利用されています。アノテーションの中に『server-snippets, location-snippets』というものがあり、これにすでにお持ちのNGINXの設定をserver/locationブロックに適用して利用されています」と説明した。
この記事は参考になりましたか?
- この記事の著者
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営する開発者のための情報メディアです。日々の開発に取り組むエンジニアやテクノロジーを学びたい方に向けて、プログラミングやAI活用、開発ツール、エンジニアの学びとキャリアに関する記事をお届けしています。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社
この記事は参考になりましたか?
この記事をシェア
