CodeZine(コードジン)

特集ページ一覧

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

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

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

 高速軽量なWebサーバーとして活用が進んでいるNGINXは、Webサーバーだけでなく、ロードバランサー、セキュリティコントロールなど、さまざまな機能を備えている。また、Amazon Web Services(AWS)、Microsoft Azure(Azure)、Google Cloud Platform(GCP)といったパブリッククラウドや、Kubernetes、OpenShiftなどのコンテナにも対応する柔軟性を持つ。本セッションでは、マルチクラウドの利用やリバースプロキシ、複数アプリケーション、APIの管理といった、NGINXでできることや具体的な活用方法について、事例の紹介やデモンストレーションを交えながら解説が行われた。

目次
F5 Networks, NGINXテクニカルソリューションズアーキテクト 鈴木孝彰氏
F5 Networks, 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
さまざまな用途・環境で活用されるNGINX

 さらに鈴木氏は、NGINXが広く採用される理由として、競合サービスと比較すると同時接続処理やメモリ使用量が優れていることや、商用版は帯域幅やvCPUによるライセンスや制限がないことを説明。加えて、AWS環境やAzure環境でのオートスケールにも対応したツールも公開されており、これを使ってリバースプロキシのバックエンドを自動的に追加する仕組みを構築できるとした。

 最近のアプリケーション提供環境として、パブリッククラウドやベアメタルサーバーでのバーチャルマシン以外に、Kubernetesなどのコンテナプラットフォームの利用が進んでいる。Kubernetesの環境においても、「NGINX Ingress Controller」を使うことでNGINXにて外部からのアクセスを制御できるようになる。GCPには、Google Kubernetes Engine(GKE)でのNGINX Ingress Controllerのコミュニティドキュメントが公開されている。

GKEでのNGINX Ingress Controller利用イメージ
GKEでのNGINX Ingress Controller利用イメージ

 鈴木氏は「GKEの標準ではL7のロードバランサーが起動しますが、NGINXのパラメーターをつけると、L4のロードバランサーが設定され、L7が担う処理はNGINXにおまかせする仕組みを構築できます。TCPとUDPはクラクラウド側のL4、そのあとのドメインやパスの制御についてはNGINX Ingress Controllerを通して設定できるようになります」と説明した。

 AzureでもKubernetesの環境を作ると同様にロードバランサーが作られ、その後の処理はNGINXに任せられるようになる。

 このように、URLやホストなどによって、本番やテスト環境、異なるバージョンのアプリケーションなど、Kubernetes内のPodにあるサービスへのルーティングを設定できる。

 鈴木氏はユーザーコミュニティのイベント「F5/NGINX Community!」で披露されたカカクコムの利用例について触れ「オンプレミスのKubernetes環境でドメインやパスの振り分けに利用されています。アノテーションの中に『server-snippets, location-snippets』というものがあり、これにすでにお持ちのNGINXの設定をserver/locationブロックに適用して利用されています」と説明した。


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

著者プロフィール

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

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

バックナンバー

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

もっと読む

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