NGINX Open Source とアプリケーション配信プラットフォームであるNGINX Plus (UDP ロード バランシング) に、エキサイティングな新機能が追加されたことをお知らせします。 この新しい機能は、既存の TCP および HTTP 機能に基づいて構築されており、NGINX は、さらに幅広いインターネット アプリケーションやデバイスに対応する強力で使いやすく、一貫性のあるフロントエンドになります。 私たちは、世界で最も利用されているアプリケーションの半数以上を支える負荷分散機能を、モノのインターネット (IoT) を構築する新しいユーザー層にまで拡張できることを嬉しく思っています。
ほとんどのインターネット アプリケーションは、ネットワーク通信に HTTP に依存しています。 SOAP や REST などの高度なプロトコルは HTTP を基盤として構築されており、TLS を使用したセキュリティ、Gzip を使用した圧縮、 HTTP/2を使用したパフォーマンス強化など、豊富な拡張機能を活用できます。
ただし、多くのアプリケーションではさまざまな目的で複数のプロトコルを使用する必要があり、コア インターネット プロトコルの多くは HTTP より古いものです。 このため、負荷分散とリバース プロキシの完全なソリューションでは、TCP ベースと UDP ベースの両方の幅広いプロトコルをサポートする必要があります。
UDP は、DNS (ドメイン名をアドレスに解決するために使用)、syslog (軽量ログ記録に使用)、RADIUS (認証に使用) など、本質的にトランザクションではない軽量プロトコルによく使用されます。 これらのプロトコルには厳密な信頼性要件はありません。UDP メッセージ (データグラム) がドロップされた場合、クライアントはタイムアウト後にメッセージを安全に再送信できます。ただし、これらのプロトコルが提供するサービスは、インターネット サービスの正しい動作にとって重要です。 UDP は、帯域幅要件が低いため、新しい IoT アプリケーションに最適なプロトコルの 1 つとしても浮上しています。
1 年前、 NGINX はユーザー コミュニティと商用顧客向けに TCP ロード バランシングを導入しました。 UDP ロード バランシングを追加することで、ロード バランシング機能を拡張できるようになりました。 NGINX と NGINX Plus を使用すると、ユーザーは信頼性、スケーラビリティ、パフォーマンスを備えた UDP ベースのサービスを提供できるようになります。
NGINX は、管理者が定義した 1 つ以上のアドレス (IP アドレスとポート) で UDP ネットワーク トラフィック (DNS、syslog、RADIUS などのプロトコル) をリッスンします。 これらのアドレスは、クライアントが希望するサービスのリクエストをどこに送信するかを知ることができるように公開されます。
HTTP および TCP 負荷分散の場合と同様に、UDP 負荷分散の構成では、アップストリーム グループ(UDP ベースのサービスを提供するオリジン サーバーのセット) と、サーバー間でトラフィックを負荷分散するときに使用するアルゴリズム(ラウンドロビン、最小接続、送信元 IP アドレスに基づくハッシュなど) を定義します。 この設定では、各 UDP ポートの仮想サーバーも定義され、 proxy_pass
ディレクティブで、関連するサービスを提供するアップストリーム グループの名前が指定されます。
# 2 つのサーバー間で UDP ベースの DNS トラフィックを負荷分散しますstream {
upstream dns_upstreams {
server 192.168.136.130:53;
server 192.168.136.131:53;
}
server {
listen 53 udp;
proxy_pass dns_upstreams;
proxy_timeout 1s;
proxy_responses 1;
error_log logs/dns.log;
}
}
NGINX は、ポートで UDP データグラム (ここでは、ポート 53 の DNS クエリ) を受信すると、設定された負荷分散アルゴリズム (ここでは、デフォルトのラウンドロビン) を使用して、アップストリーム グループ内のどのサーバーがそれを処理するかを選択します。 適切な場合、NGINX はサーバーからの応答を待機し、その応答 (およびタイムアウト期間内に受信した後続のパケット) をクライアントに転送します。
サーバーがリクエストに応答できない場合、NGINX はそれを「失敗」としてマークし、一時的にデータグラムの送信を停止します。 NGINX は数秒ごとに少量のライブ トラフィックを送信して、サーバーの健全性をチェックし、回復したかどうかを確認します。
NGINX Plus R9 には、 HTTP および TCP トラフィックの場合と同様に、UDP サービス用のアプリケーション (「非同期」または「合成」とも呼ばれる) ヘルス チェックが含まれます。 NGINX Plus を設定して、アップストリーム サーバーに特別な UDP 要求を送信し、サーバーが正常であると判断するために返す必要がある応答のタイプを定義できるようになります。
UDP ロード バランシングでサポートされるその他の機能には、Web サーバー スタイルのアクセス ログへのトランザクションの記録、IP アドレス ベースのアクセス制御リスト、さまざまなレート制限機能などがあります。
NGINX Plus R9では、ステータス モジュールによって提供されるライブ アクティビティ監視統計に UDP メトリックが含まれるようになり、HTTP および TCP サーバーで現在実行できるのと同様に、HTTP ベースの API と DNS を使用してUDP アップストリーム グループをオンザフライで再構成できるようになります。
UDP ロード バランシングは、高可用性と水平スケーリングという 2 つの主要なユース ケースに対応します。 設計上、UDP はエンドツーエンドのデータ配信を保証しないため、クライアント ソフトウェアがネットワーク レベルのエラーと再送信を処理する必要があります。 UDP ベースのプロトコルは通常、サーバーのペアを定義します。クライアントが優先サーバーに接続できない場合、他のサーバーを試す前に定義されたタイムアウト期間を待つ必要があります。 これにより、UDP トランザクションに長時間の遅延が発生する可能性があります。
UDP サーバーの前に、可用性と信頼性に優れたロード バランサーとして NGINX または NGINX Plus を導入すると、このような遅延を排除または軽減できます。 クライアントは、UDP リクエストを NGINX または NGINX Plus ロード バランサーに送信します。ロード バランサーは、UDP サーバーの健全性と可用性を監視し、障害が発生したサーバーや過負荷のサーバーにはリクエストを送信しません。 クライアントは接続やリクエストの失敗を経験しないので、リクエストの再試行に関連するタイムアウトが発生しません。
NGINX または NGINX Plus をロードバランサーとして使用すると、大量のトラフィックを処理するために UDP アプリケーションを拡張することも可能になります。 一般的な UDP 展開では、クライアントは最大 2 つの UDP サーバーを認識しますが、高い需要を満たすためにスケールアップするには、さらに多くの UDP サーバーが必要になります。 このシナリオでは、クライアントは UDP リクエストを 1 つまたは 2 つの既知の NGINX または NGINX Plus インスタンスに送信し、これらのインスタンスは、負荷の処理に実際に必要な多数の UDP サーバー間でリクエストの負荷を分散します。
NGINX および NGINX Plus を使用した UDP ロード バランシングは、データを送信し、オプションで 1 つ以上の応答を期待する UDP ベースのアプリケーションに適しています。 NGINX は、IoT 環境に見られるような独自の UDP ベースのプロトコルの負荷分散も実行できます。
当社のリリースにおける UDP ロード バランシングの具体的な利用可能時期は次のとおりです。
NGINX とNGINX Plus は、幅広いインターネット プロトコルに対応した完全な負荷分散およびアプリケーション配信プラットフォームを提供します。 HTTP ベースのアプリケーション、低レベルの TCP アプリケーション、または UDP ベースのプロトコルを配信する場合でも、NGINX と NGINX Plus を利用すれば、単一の軽量アプリケーションで高可用性、信頼性、スケーラビリティ、パフォーマンスを実現できます。 私たちは、新しい UDP 負荷分散機能と、それがまったく新しい多数のデバイスに高性能な負荷分散と完璧なアプリケーション配信をもたらす可能性に非常に期待しています。
リリース 9 の UDP ロード バランシングのリリースに先立ち、NGINX Plus について詳しく知りたいですか? 今すぐ30 日間の無料トライアルを開始するか、使用事例についてご相談ください。
「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"