Consulting / SI 高速・軽量WEBサーバー nginx

nginx は、トラフィックの多いウェブサイトで最も人気のあるオープンソース HTTP Web サーバーです。また、Web サーバの機能だけなくリバースプロキシの機能や、L4 および L7 ソフトウェアロードバランサー、HTTP キャッシュの機能も持っています。
今では1億8000万台以上の nginx サーバーが稼働していると言われています。

高速

C10K 問題に対応。nginx のイベント駆動型アーキテクチャは同時に数万のクライアント接続を処理することができ、高速なコンテンツサービスを提供可能です。
またインテリジェントなキャッシング機能を有し、リバースプロキシ、ソフトウェアロードバランサーとしてバックエンドのコンテンツを高速にクライアントに配送します。

軽量

小さなフットプリントで動作、導入が容易、設定方法も簡潔。
リバースプロキシやリライトルールの設定方法が複雑で難航した経験はありませんか? nginx では直感的でシンプルな記載方法で見通しの良い設定が可能です。

高機能

フルスペックの重量級 HTTP サーバーにも劣りません。nginx は基本的な HTTP サーバーの機能に加え、動画配送、ロードバランサー、各種プロキシとして動作可能。
また、モジュラーアーキテクチャの特性を活かし必要に応じて任意の機能を組み込む事も可能です。

機能

基本的な HTTP サーバーの機能
  • 静的ファイル、インデックスファイルの配送、及び自動インデックス生成
  • キャッシングによるリバースプロキシ、FastCGI, uwsgi, SCGI の高速化
  • SSL と TLS SNI, HTTP/2
  • WebSocket および HTTP/1.1 Upgradeヘッダサポート...etc
ロードバランサーの機能
  • L7, L4 の双方に対応
  • HTTP, HTTPS, HTTP/2, WebSocket, TCP, UDP 対応
メールプロキシの機能
  • SMTP, POP3, IMAPのプロキシ
  • STARTTLS 対応
その他
  • 動作中にコネクションロスなく実行ファイルの更新および設定の変更可能
  • モジュールベースのアーキテクチャによる機能の拡張

エンタープライズ向け 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に関するお問い合わせ

サイオステクノロジーがご提供する製品・サービスのお問い合わせはこちらからお送り下さい。