Consulting / SI 高速・軽量WEBサーバー nginx
nginx は、トラフィックの多いウェブサイトで最も人気のあるオープンソース HTTP Web サーバーです。また、Web サーバの機能だけなくリバースプロキシの機能や、L4 および L7 ソフトウェアロードバランサー、HTTP キャッシュの機能も持っています。
今では1億8000万台以上の nginx サーバーが稼働していると言われています。
機能
基本的な HTTP サーバーの機能 |
|
---|---|
ロードバランサーの機能 |
|
メールプロキシの機能 |
|
その他 |
|
エンタープライズ向け NGINX Plus
NGINX Plus は、オープンソース・ソフトウェアとして公開されている nginx にエンタープライズ向けの機能拡張を行ったハイパフォーマンス Web Server およびロードバランサー製品です。
NGINX Plusには、application load balancing, health checks, advanced cache control, streaming media delivery, activity monitoring and on-the-fly reconfiguration. などの拡張機能が含まれます。
クラウドでのユースケース
クラウド上で nginx を活用する場合押さえておきたいユースケース
HTTP Web サーバー、リバースプロクシサーバーとして利用するだけでなく、クラウドが提供するサービスとの組み合わせにより様々な応用が可能です。
※ 図の出典:https://www.nginx.com/blog/cloud-architectures/
Simple Cloud Bursting
クラウドへの移行を段階的に行う場合、ハイブリッドな展開を手助けするツールとして nginx を活用できます。このタイプの配置では、オンプレミスとクラウドサービスの両方でアプリケーションを提供し、nginx でロードバランスします。
nginx のロードバランシングアルゴリズムで、サーバの重み付けを考慮してもっともアクティブな接続の数が少ないサーバを選択できます。
オンプレミスのサーバーが混雑している場合、トラフィックをクラウド側に逃がす「クラウドバースト」の展開を作成することができます。また、運用しながら徐々に基盤をクラウド上に移行させる動作も安全に行う事が可能です。
Local Load Balancing
クラウド・アーキテクチャでは、クラウド・ベンダーのネイティブロードバランサ(Amazon Elastic Load Balancer, Azure Traffic Manager など)により異なるアベイラビリティゾーン間でトラフィックを分散します。
そして各アベイラビリティゾーン内では、アプリケーション・サーバーへのトラフィックを nginx でロードバランスすることができます。
クラウド・ベンダーのネイティブのロードバランサと nginx を組み合わせることにより、WebSocket, HTTP/2, TCP のバランシングや、URL リライト/リダイレクト、複数の URL へのリクエストルーティングなどより柔軟にロードバランスのシナリオを作り上げる事が可能です。
Global Load Balancing
複数のアベイラビリティゾーン間でアプリケーションをレプリケートすると、地域の中で大きな高可用性を提供します。次のステップは、複数のリージョンでアプリケーションをホストすることです。クラウド・ベンダーのネイティブ DNS サービスや CDN サービスは、GeoDNS を理解し振り分ける機能を持ったものがあります。
nginx とそれらを組み合わせるとグローバルに分散し、よりスケーラブルなアプリケーションを作成することができます。GeoDNS を利用した場合、ニューヨークのユーザーを米国東部のデータセンターに送り、カリフォルニアのユーザーを米国西部のデータセンターに振り分けることが可能です。そして各データセンター内では、nginx がアプリケーション・サーバー間で着信トラフィックを分散することが出来ます。
もちろん各リージョン内で更にクラウド・ベンダーのネイティブロードバランサを追加し Local Load Balancing と同様の構成を作ることも可能です。
Microservices Reference Architecture Controller
Microservices アーキテクチャの大きな特徴の 1つは、アプリケーションのコンポーネント間の通信にネットワークを使用することです。従来のモノリシックなアプリケーションでは、一つの大きなアプリケーション内にロジックが梱包されるため通信はメモリ内で行われていました。
Microservices アプリケーションでは、通信はネットワークを介して起こるのでネットワークの設計と実装が非常に重要になります。
nginx は Microservices アーキテクチャを実装する際のコントローラとして振る舞うことが出来ます。
※ 図の出典:https://www.nginx.com/blog/introduction-to-microservices/
コンサルティング&SIに関するお問い合わせ
サイオステクノロジーがご提供する製品・サービスのお問い合わせはこちらからお送り下さい。