BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース NGINXがマイクロサービスプラットフォーム, OpenShift Ingressコントローラ、Service Meshプレビュー版をリリース

NGINXがマイクロサービスプラットフォーム, OpenShift Ingressコントローラ、Service Meshプレビュー版をリリース

原文(投稿日:2017/09/12)へのリンク

米国ポートランドで開催されたnginx.confで、NGINX IncがNGINX Application Platformをリリースした。開発者によるマイクロサービスのデプロイ、管理、監視のための“ワンストップショップ”を目的とした、オープンソース技術をベースとする4製品のスイートだ。追加リリースとして、Red Hat OpenShift Container Platformでロードバランシングを実現するためのKubernetes Ingress Controllerソリューションと、Istioメッシュコントロールプレーン用サービスプロキシのNGINX版も発表された。

新しいNGINX Application Platformは、次のコンポーネントで構成されている。

NGINX PlusはWebサーバ、コンテントキャッシュ、ロードバランサを組み合わせたものだ。NGINX Web Application Firewall (WAF)はオープンソースのModSecurity WAF上に構築された商用ツールで、SQLインジェクションやクロスサイトスクリプティングといったレイヤ7攻撃からの保護を提供すると同時に、IPアドレスやヘッダなどによるルールに基づいたトラフィックのブロックあるいは許可を可能にする。NGINX WAFはNGINX Plusにプラグインされるダイナミックモジュールとして動作し、ネットワークの先端にデプロイされることによって、DDoS攻撃や悪意のある攻撃者から内部のWebサービスおよびアプリケーションを保護する。

NGINX UnitはIgor Sysoev氏が設計し、コアNGINXソフトウェア開発チームが実装した、新しいオープンソースアプリケーションサーバである。Unitは“完全に動的”であるため、プロセスを再起動しなくても、アプリケーションの新バージョンをblue/green形式でシームレスにデプロイ(スイッチ)できる。Unitのコンフィギュレーションはすべて、内蔵するREST API経由で、JSONコンフィギュレーション構文を使って行われる。コンフィギュレーションファイルは存在しない。現時点では、最新バージョンのPHP, Python, Goで記述されたコードが実行可能である。サポート対象の異なる言語や違うバージョンを混在させて、同一サーバ内で動作させることも可能だ。Additional support for more languages, including Java and Node.JS, is coming soon.

NGINX Controller is a centralised monitoring and management platform for NGINX Plus. Controllerはコントロールプレーンとして動作し、グラフィカルなユーザインターフェースを使って、“数百のNGINXサーバをひとつの場所から管理”可能にする。インターフェースではNGINX Plusサーバのインスタンスの新規作成、ロードバランシングやURLルーティング、SSLターミネーションの集中設定が可能である。アプリケーションの健全性とパフォーマンスを監視するためのモニタリング機能も備えている。

NGINX Application Platform

図1. NGINX Applicaiton Platform (画像はNGINX Blogより)

新たにリリースされたNGINX Plus (Kubernetes) Ingress Controllerソリューションは、オープンソースのNGINX kubernetes-ingressプロイジェクトをベースとして、Red Hat OpenShift Container Platform用にロードバランシングを提供するためにテストされ、認証され、サポートされるもので、NGINX Plusの高度な機能をサポートするために、高度なロードバランシングアルゴリズム、レイヤ7ルーティング、エンドツーエンド認証、要求/レート制限、コンテントキャッシュとWebサーバなどが追加されている。

NGINXはさらに、lstioサービスメッシュプラットフォーム内のレイヤ7ロードバランシング用サービスプロキシとして、NGINXのオープンソース版プレビューバージョンであるnginmeshもリリースした。サイドカーコンテナとしてデプロイされた場合に主な機能とlstioとの統合を提供し、サービス間のコミュニケーションを、“標準的で信頼性が高く、セキュアな方法で”促進することを目的としたものだ。さらにNGINXは、lstioネットワーキングのスペシャル・インタレスト・メンバとして、lstioコミュニティの一員として協力する予定である。

サービスメッシュ”は最近一般的になった概念で、サービス間のトラフィックフローを管理し、アクセスポリシを適用し、テレメトリデータを集約するために、その基盤となるメッシュ(あるいは通信バス)と疎結合されたマイクロサービスベースのアプリケーションを実装可能にするものだ。IstioはGoogle、IBM、Lyftが中心となって進められているプロジェクトで、サービスプロキシのデータプレーンにコントロールプレーンを提供することを目標としている。現行のIstioはKubernetesに強く結び付いているが、仮想マシンや、Cloud Foundry、 潜在的にはFaaS“サーバ”のような“サーバレス”サービスのようなプラットフォームをサポートする計画もある。

IstioはデフォルトでEnvoyサービスプロキシを使用する。これはMatt Klein氏とLyftのチームが開発したもので、数年間にわたってLyftで実際に運用されている。マイクロサービスメッシュ内でサービスプロキシコンポーネントを提供する(そして所有する)ことの潜在的メリットに気付いた企業はNGINXだけではない。Buoyantもまた、自社のJVMベースのサービスプロキシであるLinkerd(Twitter Finagleスタックから派生したもの)をistioと統合すべく、修正作業を行なっている。

NGINX nginmesh Istioプロキシモジュール – NGINX Webサーバそれ自体とは異なり、Go言語で記述されている – は、サイドカーとして動作するオープンソースNGINXと統合されて(図2に示す)、“高度なロードバランシングアルゴリズムやキャッシュ、SSLターミネーション、LuaとnginScriptによるスケーラビリティ、詳細なアクセス管理とさまざまなセキュリティ機能を備えた、フットプリントの小さなハイパフォーマンス・プロキシである”。

NGINX nginmesh

図2. NGINXのnginmeshアーキテクチャ(画像はnginmesh GitHub repoのみ)

NGINXの全リリースとnginx.confでの発表の詳細については、NGINXブログに掲載されている。

 
 

この記事を評価

採用ステージ
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

BT