NGINX, Inc. は、アプリケーション配信プラットフォームの最新リリースであるNGINX Plus Release 9 (R9)の提供開始を発表いたします。 このアップデートでは、カスタム バイナリを必要とせずにNGINX Plus に豊富な拡張機能を動的にロードする機能と、既存の TCP および HTTP ロード バランシング機能に加えて商用でサポートされている UDP ロード バランシングという2 つの重要な新機能が提供されます。
NGINX Plus R9の魅力的な新機能に加えて、新しい価格設定とサポート オプションも導入します。 NGINX Plus は現在、「食べ放題」の価格モデルを通じて提供されており、固定価格でアプリケーションや企業のあらゆる場所で無制限に使用できます。 NGINX Plus は、次の3 つの異なるサポート レベルで購入できるようになりました。 非本番アプリケーション向けの基本的な 9 時間 5 日間のサポート、電話または電子メールによる 24 時間 365 日のプロフェッショナル サポート、および 30 分以内の応答が保証される 24 時間 365 日のエンタープライズ サポート。
エディター – NGINX Plus R9 の主な新機能の詳細については、これらの関連リソースを参照してください。
NGINX Plus R9の主な新機能は次のとおりです。
動的モジュール– NGINX Plus は、動的にロード可能なモジュールを使用して実行時に拡張できるようになりました。 つまり、必要な拡張機能だけを選択して、標準のapt
およびyum
コマンドでアクセスできる NGINX Plus リポジトリから直接インストールできます。 今後、当社のソフトウェア向けにテスト済みかつ完全に認定された拡張機能を継続的に配布していきます。
Lua プログラミング言語のサポートなど、最も人気のある NGINX 作成モジュールとサードパーティ モジュールは、すでに新しい動的にロード可能な形式に変換されています。 また、サードパーティのモジュール所有者がモジュールを新しい形式に変換するための手順も公開しました。この手順は、モジュールをリポジトリに追加する前に必要です。
UDP ロード バランシング- 既存の TCP および HTTP ロード バランシング機能に UDP ロード バランシングが追加されたため、NGINX Plus はほぼすべてのアプリケーションのロード バランシングが可能になりました。 先月、 NGINX Open Source に UDP ロード バランシングを追加しましたが、今回のリリースでは、高度な機能が追加された NGINX Plus のサポートを拡張しています。 NGINX Plus は、アクティブなヘルスチェックで UDP サービスを監視し、豊富な統計情報で重要な可視性を提供し、サーバーを動的に追加および削除できるようにします。
UDP は、DNS (ドメイン名をアドレスに解決)、syslog (軽量ログ)、RADIUS (認証プロトコル) など、本質的にトランザクションではない軽量プロトコルによく使用されます。 UDP は、帯域幅要件が低いため、IoT アプリケーションに適したプロトコルの 1 つとしても注目されています。 NGINX Plus を使用すると、既存のアプリケーションと新しいアプリケーションを簡単に配信し、負荷分散できます。
DNS SRV
レコードを使用したサービス検出- マイクロサービス ベースのアプリケーションは動的であり、サービスはオンデマンドでスケールアップ、スケールダウン、移動できます。 サービスの現在の状態を常に把握するための良い方法は、サービス ディスカバリを使用することです。 Consul や etcd (SkyDNS) などの多くのサービス検出プラットフォームは、検出されたサービスに関する情報を要求するためのクライアント (NGINX Plus など) 用の DNS インターフェースを提供します。
サービスで使用されるポート番号は、多くの場合、動的に割り当てられます。 その結果、サービス検出プラットフォームは、ポート番号情報を含むDNS SRV
レコードを利用します。 NGINX Plus は DNS SRV
レコードをサポートするようになり、DNS リクエストを使用して、動的に割り当てられたポート情報を含むサービスの場所をサービス レジストリに照会できるようになりました。
NGINX Plus アプリの価格設定– 急成長、季節性、または弾力性のあるトラフィック時に最大のパフォーマンスと稼働時間を確保するには、多くのアプリケーションで動的なインフラストラクチャが必要です。 これらのアプリは通常、マイクロサービスまたは分散アーキテクチャを活用し、実行時にコンテナまたは仮想マシンを使用します。 ソフトウェアのインスタンスまたはマシン時間ごとに料金を支払うと、最新のアプリに必要な柔軟性やコスト効率が得られません。 これらのユースケース向けに、NGINX Plus アプリ価格を導入しています。
NGINX Plus アプリの価格は、NGINX Plus の拡張機能と商用サポートバイナリを、アプリケーションごとに年間定額料金で無制限に「使い放題」で提供します。 VM、コンテナ、ノード、同時接続、ユーザーの数に関係なく、年間を通じて 1 つの低料金をお支払いいただきます。 NGINX Plus は、アプリケーション インフラストラクチャ内、開発、テスト、ステージング、災害復旧、本番環境など、必要なときに、必要な場所に、必要な方法で導入できます。予測できない消費ベースの請求を心配する必要はなく、突然容量をバーストする必要がある場合にライセンス キーを取得するために待つ必要もありません。
このセクションでは、NGINX Plus R9 のすべての新機能と機能の詳細な概要を説明します。
NGINX と NGINX Plus はどちらもモジュール型アーキテクチャを採用しています。 コア機能は、サードパーティの開発者とコア NGINX エンジニアリング チームの両方によって作成されたモジュールによって拡張できます。 これらのモジュールは、Lua スクリプトの埋め込みや IP アドレスに基づくユーザーの位置情報の特定など、重要な機能を追加します。 100 を超えるサードパーティ モジュールと 60 を超える公式 NGINX モジュールが利用可能です。 基本のnginx‑plusパッケージにはこれらのうち 56 個が含まれており、 nginx‑plus‑extrasパッケージにはさらに 10 個が含まれています (完全なリストはNGINX Plus 技術仕様で確認できます)。
このリリースでは、 nginx‑plus‑extrasパッケージ (サードパーティ製と公式 NGINX の両方) の追加モジュールも、基本 NGINX Plus パッケージであるnginx‑plusに動的にロードできるようになりました。 これにより、実際に必要な追加モジュールのみをロードできます。
これらのモジュールは NGINX Plus リポジトリで利用可能であり、今後数か月以内にリポジトリにモジュールを追加する予定です。 今後のリリースではnginx‑plus‑extrasパッケージが廃止される予定であるため、現在nginx‑plus‑ extras パッケージを使用しているすべてのユーザーには、コアnginx ‑plus パッケージへの移行を推奨します。
当社では、幅広いリリース テストを実行する前に、各動的モジュールを NGINX Plus コアにロードしてテストしています。そのため、(未構成の状態で) モジュールが NGINX Plus の正しい動作を妨げないことを確信できます。 モジュールの更新を追跡し、リリースごとに新しいビルドを発行します。また、リリース間で重大なセキュリティ問題が報告された場合にも追跡します。
動的モジュールを使用すると、誰もが使用する機能を備えた単一の NGINX Plus バイナリを配布できます。 管理者は、使用したい追加モジュールを選択できます。
モジュールをインストールして動的にロードするには、次の手順を実行します。 これらは、OS ベンダーのディストリビューションではなく、NGINX, Inc. からファイルを取得するようにパッケージ管理ツールを構成していることを前提としています。
オペレーティング システムの標準パッケージ管理ツール ( apt
やyum
など) を使用して、基本のnginx‑plusイメージと動的にロードするモジュールをインストールします (モジュールごとにインストール コマンドを繰り返します)。 次のコマンドは Debian ベースのシステムに適しています。
# apt-get update # apt-get install nginx-plus # apt-get installモジュール名
このリリースでmodule‑name
の代わりに使用できる名前は次のとおりです。
nginx-plus-モジュール-geoip
nginx-plus-モジュール ヘッダー-その他
nginx-plus-モジュール-イメージフィルター
nginx-plus-モジュール-lua
nginx-plus-モジュール-パッセンジャー
nginx-plus-モジュール-perl
nginx-plus-モジュール-rtmp
nginx-plus-モジュールセット-その他
nginx-plus-モジュール-xslt
選択したモジュールの.soファイルのインストール場所へのシンボリック リンクを含む/etc/nginx/modulesディレクトリが自動的に作成されます。
注:
以前のリリースの NGINX Plus でnginx‑plus‑extrasパッケージを使用している場合は、R9 nginx‑plusパッケージをインストールする前にそれを削除する必要があります。 Debian ベースのシステムの場合、適切なコマンドセットは次のとおりです。
# apt-get update # apt-get remove nginx-plus-extras # apt-get install nginx-plus # apt-get install module-name
一部のモジュールは、OS の制限により、特定の OS バージョンでは使用できません。 モジュールの詳細と説明については、 NGINX Plus 技術仕様を参照してください。
/etc/nginx/nginx.confのメイン(最上位)コンテキストで、動的にロード可能なモジュールごとにload_module
ディレクティブを追加します。
load_module modules/モジュール名.so;
新しい設定の構文の有効性を確認し、NGINX Plus をリロードします。
# nginx -t && nginx -s リロード
nginx.confにリストされているモジュールは、NGINX Plus に動的にロードされます。
先月、 NGINX Open Source で UDP ロードバランシングをリリースしました。NGINX Plus R9 では、ヘルスチェック、拡張ステータス監視、オンザフライ再構成によりその機能が拡張されています。
TCP ロード バランシングに関しては、UDP ロード バランシングの構成はストリーム
コンテキスト内にあります。 また、HTTP および TCP ロード バランシングと同様に、UDP ロード バランシングではアップストリーム グループを使用して、UDP ベースのサービスを提供するオリジン サーバーのセットと、サーバー間でトラフィックをロード バランシングするときに使用するアルゴリズムを定義します。
この設定では、各 UDP ポートの仮想サーバーも定義され、 proxy_pass
ディレクティブで、関連するサービスを提供するアップストリーム グループの名前が指定されます。
ストリーム { アップストリーム dns_upstreams { least_time; サーバーdns-server-1-ip :53; サーバーdns-server-2-ip :53; } サーバー { listen 53 udp ; listen 53; #tcp proxy_pass dns_upstreams; proxy_timeout 1s; proxy_responses 1; error_log logs/dns.log; } }
この構成例は、DNS サービスの負荷分散用です。 アップストリーム
ブロックでは、最小時間アルゴリズムを設定しているため、NGINX Plus は各リクエストを、現在「接続」が最も少なく、応答が最も速いサーバーに送信します。 サーバー ブロックでは、DNS は両方のプロトコルで実行できるため、UDP トラフィックと TCP トラフィックの両方をリッスンします。 proxy_responses
ディレクティブは、UDP「接続」に関連付けられたリソースを解放する前に、NGINX Plus がアップストリーム サーバーから受信する応答の数を制御します。 DNS は単純な要求応答プロトコルであるため、通常は 1 つの応答で十分です。
NGINX オープンソースには、UDP の基本的なヘルスチェックが含まれています。 アップストリーム UDP サーバーが定義されたタイムアウト期間内にリクエストに応答しない場合、または ICMP エラーを返す場合、NGINX と NGINX Plus は定義された時間の間、そのサーバーへのトラフィックの送信を停止します。
NGINX Plus R9 では、 HTTP および TCP トラフィックの場合と同様に、UDP サービスに対してもアクティブなヘルス チェックが追加されました。 NGINX Plus を設定して、アップストリーム サーバーに特別な UDP 要求を送信し、サーバーが正常であると判断するために返す必要がある応答のタイプを定義できます。 UDP には、TCP が HTTP に提供する信頼性の高い配信のメカニズムがないため、UDP アプリケーションでは、TCP や HTTP アプリケーションよりもアクティブなヘルス チェックがさらに重要になります。
NGINX Plus を使用すると、アップストリーム サーバーをオンザフライで追加または削除することもできます。 これにより、たとえば、メンテナンスのためにサーバーをオフラインにし、その後、負荷分散プールに再挿入することが容易になります。 NGINX Plusステータスモジュールとライブ アクティビティ監視ダッシュボードの新しい UDP 関連の統計により、サーバーのパフォーマンスに関する重要な可視性が提供されます。
NGINX Plus R9 は、最も一般的に使用されるシンプルな UDP ベースのアプリケーションの負荷を分散します。 DNS、RADIUS、syslog、NTP。 現時点では、Voice over IP やその他の SIP ベースのアプリケーションなどの長期 UDP プロトコルはサポートされていません。
SRV
レコードを使用したサービス検出最新の Web アプリケーションは、Web サーバー、アプリケーション サーバー、データベースなど、複数の小さなアプリケーション コンポーネントで構成されています。 NGINX Plus などのフロントエンド ロード バランサーは、着信トラフィックを検査し、アプリケーション コンポーネント間でリクエストをルーティングして負荷分散します。
アプリケーション コンポーネントが仮想またはコンテナベースのプラットフォームにデプロイされる場合、予測できない IP アドレスとポートを持つ可能性があります。 サービス検出は、ローカル クライアント (フロントエンドの NGINX Plus ロード バランサなど) がこれらのコンポーネントを見つけて、トラフィックを送信できるようにするプロセスです。 サービス検出は通常、 Consul 、 etcd 、 ZooKeeperなどの「サービス データベース」によって促進されます。
NGINX Plus R8 では、オンザフライ再構成 API の永続バージョンを発表し、サービスデータベースをチェックして構成変更を NGINX Plus にプッシュするConsul 、 etcd 、 ZooKeeperのデモソリューションを共有しました。 NGINX Plus R9 では、DNS SRV
クエリを使用する代替方法のサポートを発表いたします。 DNS SRV
クエリは、特定のタイプのアプリケーション サーバーの IP アドレス、ポート、優先度、および重みを返します。
Consulとetcd 用の SkyDNS はどちらも、クライアントがSRV
レコードを取得するために使用できる DNS インターフェースを提供します。 NGINX Plus は、サービスの DNS インターフェースを直接照会して、負荷分散構成を取得します。 NGINX Plus は定期的にサービスを再チェックするため、変更は迅速かつ自動的に伝播されます。
次の例では、DNS 経由でmy_serviceのアップストリーム サーバーのリストを取得するように NGINX Plus を設定します。 server
ディレクティブのservice=http
パラメータにより、DNS SRV
レコードのサポートが有効になります。 my_service をサポートするアプリケーション インスタンスが、NGINX Plus によって自動的に検出されるようになりました。
http { リゾルバdns-server-ip ; アップストリーム my_service { ゾーン バックエンド 64k; サーバーホスト名-for-my_service service=http解決; } サーバー { # ... 場所 /my_service { # ... プロキシパス http://my_service; } } }
インスタンスごとの価格設定は、NGINX Plus を使い始めるのに最適な方法であり、ハードウェア ロード バランサーに代わる非常にコスト効率の高い代替手段を提供しますが、NGINX Plus の潜在的な用途は、単純なハードウェアの交換をはるかに超えています。 NGINX Plus は軽量なソフトウェア アーキテクチャを備えているため、各アプリケーションの専用負荷分散に最適です。また、NGINX Plus は NGINX Open Source 上に構築されているため、アプリケーション内の Web サーバーやアプリケーション サーバーを置き換えることもできます。 これらのユースケースにより、インスタンスごとの価格設定ではコスト効率や柔軟性が十分でない NGINX Plus の導入がますます増加しています。
NGINX Plus R9 では、特定のアプリケーションに対して必要な数の NGINX Plus インスタンスを実行できる、新しい「食べ放題」アプリ価格モデルを導入しています。 アプリケーション インフラストラクチャ内、開発、テスト、ステージング、災害復旧、および本番環境全体で、必要なときに、必要な場所に、必要な方法で NGINX Plus をデプロイします。 VM、コンテナ、ノードの数に関係なく、年間を通じて 1 つの固定料金を支払います。
すべてのサブスクリプションには、NGINX Plus ソフトウェアの全機能と、受賞歴のあるサポートおよび構成支援が含まれています。 さらに、アプリ価格設定モデルを選択すると、次の特典が得られます。
アプリケーションごとに無制限に使用できます。 アプリケーションは、単一の Web アプリケーションまたは個別に名前が付けられたデスクトップ アプリケーションやモバイル アプリケーションをサポートするソフトウェア コンポーネントとチームとして定義されます。 マイクロサービス ベースおよびその他の分散アーキテクチャがモデル内で予測され、採用されています。
サイト ライセンス サブスクリプションも利用可能で、組織全体で NGINX Plus を無制限に使用できます。
NGINX Plus R9 では、次のような追加の改善が導入されています。
非べき等リクエストの再試行- エラーまたはタイムアウトのために HTTP リクエストが失敗すると、デフォルトでは NGINX Plus はアップストリーム グループ内の別のサーバーで自動的に再試行します。 proxy_next_upstream
ディレクティブを使用して、NGINX Plusがリクエストを繰り返すエラーの種類を定義できます。これには特定のエラーが含まれます。 4xx
または5xx
応答コード。
慣例により、 POST
リクエストは、本体のデータがサーバーにストリーミングされ、サーバーに障害が発生した場合に再生できないため、通常は再試行されません。 ただし、特定の障害状況下では、NGINX Plus の以前のバージョンではPOST
リクエストが再試行されていましたが、これは非べき等性であるため再試行されないという仮定と矛盾していました。
NGINX Plus は、失敗した非べき等 HTTP リクエスト ( POST
、 LOCK
、 PATCH
) を自動的に再試行しなくなりました。 以前の動作を復元し、NGINX Plus が失敗した非べき等リクエストを可能な限り再試行できるようにするには、 proxy_next_upstream
ディレクティブに新しいnon_idempotent
パラメータを含めます。
NGINX Plus を実行している場合は、できるだけ早くリリース 9 にアップグレードすることを強くお勧めします。 数多くの修正と改善が行われており、サポート チケットを発行する必要がある場合に、当社がサポートする際に役立ちます。
NGINX Plus をまだお試しいただいていない方は、Web アクセラレーション、負荷分散、アプリケーション配信のために、または強化された監視と動的再構成のための API を備えた完全にサポートされた Web サーバーとして、ぜひお試しください。 今すぐ30 日間の無料トライアルを開始して、NGINX Plus がアプリケーションの配信とスケールアウトにどのように役立つかを実際にご確認ください。
エディター – NGINX Plus R9 の主な新機能の詳細については、これらの関連リソースを参照してください。
「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"