Amazon Web Services ブログ
新機能 – Network Load Balancer のための UDP ロードバランシング
Network Load Balancer は、ユーザーが労力を費さなくても、極めて低いレイテンシーで高いスループットを維持しながら 1 秒あたり何千万件ものリクエストを処理するように設計されています (詳細については、私の記事、New Network Load Balancer – Effortless Scaling to Millions of Requests per Second をお読みください)。
2017 年後半のローンチ以来、AWS では お客様のご要望にお応えして新しい機能をいくつか追加してきました。これには、クロスゾーンロードバランシング、リソースベースおよびタグベースのアクセス許可のサポート、AWS マネージド VPN トンネルでの使用のサポート、AWS Elastic Beanstalk コンソールを使用して Network Load Balancer を作成する機能、リージョン間での VPC ピアリングのサポート、そして TLS 終端が含まれます。
UDP ロードバランシング
AWS は本日、お客様からのご要望が多いもうひとつの機能、UDP トラフィックのロードバランシングに対するサポートを追加します。これにより、オンラインゲーミング、IoT、ストリーミング、メディア転送、およびネイティブな UDP アプリケーション向けのコネクションレスサービスのデプロイメントのために Network Load Balancer を使用できるようになりました。独自のデータセンターで DNS、SIP、SNMP、Syslog、RADIUS、およびその他の UDP サービスをホストしている場合は、AWS にサービスを移動させることが可能です。AAA として知られている場合が多い Authentication (認証)、Authorization (許可) および Accounting (課金) を処理するためのサービスをデプロイすることもできます。
また、UDP トラフィックを取り込むためにプロキシサーバーを何台も維持する必要がなくなり、TCP と UDP 両方のトラフィックに同じロードバランサーを使用できるようになります。アーキテクチャをシンプル化し、コストを削減して、スケーラビリティを向上させることができます。
UDP Network Load Balancer の作成
UDP をサポートする Network Load Balancer は、いつものようにコンソール、CLI (create-load-balancer
)、API (CreateLoadBalancer
)、または CloudFormation テンプレート(AWS::ElasticLoadBalancing::LoadBalancer
) を使って作成できます。コンソールでは、希望するロードバランサーを選択できます。今回は、Network Load Balancer の下にある [作成] ボタンをクリックします。
ロードバランサーに名前を付けて、プロトコルメニューから [UDP] を選択し、ポートを選択します (514 が Syslog 用です)。
すでに us-east-1b と us-east-1c に適切な EC2 インスタンスがあるので、これらの AZ を使用します。
その後、ポート 514 に UDP プロトコルのターゲットグループをセットアップします。
インスタンスを選択して、[登録済みに追加] をクリックします。
次のページで設定を確認したら、新しい UDP ロードバランサーは 1 分程度でトラフィックを受け取ることができるようになります (状態は最初 provisioning ですが、準備が整うと active に変わります)。
EC2 インスタンスを一元化された Syslogd サーバーとして設定することで、これをテストしてみます。ポート 514 でリッスンするようにインスタンスの設定ファイル (/etc/rsyslog.conf
) を編集して、サービスを再起動するだけです。
次に、別の EC2 インスタンスを立ち上げて、NLB エンドポイントを使用するようにインスタンスを設定します。
すると、サーバーでログエントリを確認できるようになります (ip-172-31-29-40 がテストインスタンスです)。
これを機能させるために、小さな設定変更をひとつ行わなければなりませんでした! サービスの正常性をチェックするために UDP を使用することはあまり意味がないので、[上書き] をクリックして、ポート 80 のヘルスチェックを代わりに指定しました。
実際のシナリオではもちろん、サービスに TCP スタイルのヘルスチェックを構築するとよいでしょう。そして、言うまでもありませんが、ログメッセージを一元的に保存する Syslog のカスタム実装を、耐久性に優れた形態で実行します。
知っておくべきこと
この重要な新しい NLB 機能については、知っておくべき事柄がいくつかあります。
サポートされるターゲット – Network Load Balancer 上の UDP は、インスタンスターゲットタイプ向けにサポートされます (IP ターゲットタイプと PrivateLink は現在サポートされていません)。
ヘルスチェック – 前述のとおり、ヘルスチェックは TCP、HTTP、または HTTPS を使って実行する必要があります。
複数のプロトコル – 単一の Network Load Balancer は、TCP および UDP 両方のトラフィックを処理できます。個別のポートさえ使用すれば、既存のロードバランサーに別のリスナーを追加して UDP サポートを実現させることができます。同じポートで TCP と UDP の両方のサポートが必要となる DNS などの状況では、マルチプロトコルのターゲットグループとマルチプロトコルのリスナーをセットアップできます (TargetGroup とリスナータイプに TCP_UDP を使用します)。
新しい CloudWatch メトリクス – 既存の CloudWatch メトリクス (ProcessedBytes、ActiveFlowCount、および NewFlowCount) は、所定の Network Load Balancer で TCP、UDP、および TLS リスナーによって処理される集約トラフィックを表すようになりました。
今すぐご利用いただけます
この機能は今すぐ利用可能で、今日からすべての商用 AWS リージョンで使用を開始していただけます。料金については、Elastic Load Balancing 料金ページを参照してください。
— Jeff;