AWS の柔軟なロード バランシングと弾力性のあるネットワーク アダプター
このセクションでは、AWS ELB と ENA の機能の概要と、これらの機能が vSRX 仮想ファイアウォール インスタンスにどのように導入されるかについても説明します。
AWS の弾力性のあるロード バランシングの概要
このセクションでは、AWS ELB に関する情報を提供します。
Elastic Load Balancing(ELB)は、Amazon Web Services(AWS)導入のためのロードバランシングサービスです。
ELBは、Amazon EC2インスタンス、コンテナ、IPアドレスなど、ntraのアベイラビリティゾーン全体に受信アプリケーションまたはネットワークトラフィックを分散します。ELB は、アプリケーションへのトラフィックの変化に合わせてロード バランサーを拡張し、ワークロードの大部分に自動的に拡張できます。
アプリケーションロードバランサーを使用するAWS ELBは、特定のAWSサービスを使用して自動化を可能にします。
Amazon Simple Notification Service—詳細については、「 https://docs.aws.amazon.com/sns/latest/dg/welcome.html」を参照してください。
AWS Lambda—詳細については、 https://docs.aws.amazon.com/lambda/latest/dg/welcome.html を参照してください。
AWS Auto Scale Group—詳細については、 https://docs.aws.amazon.com/autoscaling/ec2/userguide/AutoScalingGroup.html を参照してください。
AWS の弾力性のあるロード バランシングのメリット
受信トラフィックを自動的に分散することで、利用可能なゾーン内の弾力的なロードバランシングを保証します。
同じインスタンスでより多くのアプリケーションをホストしたり、トランスポートレイヤーセキュリティ(TLS)設定を一元管理したり、CPUを集中的に消費するワークロードをアプリケーションからオフロードしたりすることで、アプリケーションターゲットを仮想化する柔軟性を提供します。
統合証明書管理、ユーザー認証、SSL/TLS暗号化解除などの堅牢なセキュリティ機能を提供します。
十分な数のアプリケーションを自動スケーリングして、手動操作を必要とせずに、さまざまなレベルのアプリケーション負荷を満たすことができます。
Amazon CloudWatch のメトリック、ログ記録、リクエストトレーシングを使用して、アプリケーションとそのパフォーマンスをリアルタイムで監視できます。
同じロードバランサーを使用して、AWSとオンプレミスのリソース間でロードバランシングを提供します。
AWS の弾力性のあるロード バランシングコンポーネント
AWS Elastic Load Balancing(ELB)コンポーネントには、以下のものがあります。
Load balancers—クライアントの連絡先の 1 つとして、ロード バランサー(負荷分散装置)が機能します。ロードバランサーは、EC2インスタンスなどの複数のターゲット間で、複数のアベイラビリティゾーン(AZ)に受信アプリケーショントラフィックを分散することで、アプリケーションの可用性を向上させます。ロード バランサーに 1 つ以上のリスナーを追加します。
Listeners or vSRX instances—リスナーは、設定したプロトコルとポートを使用して、接続要求を確認するプロセスです。リスナーとしての vSRX 仮想ファイアウォール インスタンスは、設定したプロトコルとポートを使用してクライアントからの接続リクエストをチェックし、定義したルールに基づいて 1 つ以上のターゲット グループにリクエストを転送します。各ルールは、ターゲット グループ、条件、および優先度を指定します。条件が満たされると、トラフィックはターゲット グループに転送されます。各 vSRX 仮想ファイアウォール インスタンスのデフォルト ルールを定義する必要があり、リクエストの内容に基づいて異なるターゲット グループを指定するルールを追加できます(コンテンツベース ルーティングとも呼ばれます)。
Target groups or vSRX application workloads— 各 vSRX 仮想ファイアウォール アプリケーションをターゲット グループとして使用し、1 つ以上の登録済みターゲットにリクエストをルーティングします。各 vSRX 仮想ファイアウォール インスタンスをリスナー ルールとして作成する場合は、vSRX 仮想ファイアウォールのアプリケーションと条件を指定します。ルールの条件が満たされると、トラフィックは対応するvSRX仮想ファイアウォールアプリケーションに転送されます。リクエストの種類に応じて、異なるvSRX仮想ファイアウォールアプリケーションを作成できます。たとえば、一般的なリクエストに対して1つのvSRX仮想ファイアウォールアプリケーションを作成し、アプリケーションのマイクロサービスへのリクエストについては他のvSRX仮想ファイアウォールアプリケーションを作成します。
AWS ELB は、アプリケーション ロード バランサー、ネットワーク ロード バランサー、従来のロード バランサーの 3 種類のロード バランサーをサポートします。アプリケーションのニーズに応じてロード バランサーを選択できます。AWS ELB ロード バランサーのタイプの詳細については、「 AWS Elastic Load Balancing」を参照してください。
アプリケーション ロード バランサーの概要
Junos OS リリース 18.4R1 以降、vSRX 仮想ファイアウォール インスタンスは、アプリケーション ロード バランサーを使用して AWS Elastic Load Balancing(ELB)をサポートし、ネイティブ AWS サービスを使用してインターネットに接続するトラフィックに拡張性の高いセキュリティを提供します。アプリケーション ロード バランサーは、受信するアプリケーション トラフィックを自動的に分散し、リソースを拡張してトラフィック要求を満たします。
また、ロードバランサーが正常なターゲットにのみリクエストを送信できるように、登録済みターゲットの正常性を監視するヘルスチェックを設定することもできます。
アプリケーション ロード バランサーの主な機能は次のとおりです。
レイヤー 7 ロード バランシング
HTTPSサポート
高可用性
セキュリティ機能
コンテナ化されたアプリケーションのサポート
HTTP/2のサポート
WebSocketsのサポート
ネイティブ IPv6 のサポート
スティッキー セッション
運用監視、ログ記録、リクエストトレーシングによる正常性チェック
Web アプリケーション ファイアウォール(WAF)
アプリケーション ロード バランサーがリクエストを受信すると、vSRX 仮想ファイアウォール インスタンスのルールを優先度順に評価して適用するルールを決定し、そのルール アクションに対して vSRX 仮想ファイアウォール アプリケーションからターゲットを選択します。アプリケーション トラフィックの内容に基づいて異なるターゲット グループにリクエストをルーティングする vSRX 仮想ファイアウォール インスタンス ルールを設定できます。ルーティングは、ターゲットが複数のターゲット グループに登録されている場合でも、各ターゲット グループに対して独立して実行されます。
アプリケーションへのリクエストのフロー全体を中断することなく、ニーズの変化に合わせてロードバランサーのターゲットを追加および削除できます。ELB は、アプリケーションへのトラフィックの変化に合わせてロード バランサーを拡張します。ELBは、ワークロードの大部分を自動的に拡張できます。
アプリケーション ロード バランサーの起動シーケンスと現在の画面は、vSRX 仮想ファイアウォール インスタンスのプロパティを使用して表示できます。vSRX仮想ファイアウォールをAWSインスタンスとして実行する場合、SSH経由でインスタンスにログインすると、Junos OSでセッションが開始されます。標準Junos OS CLIを使用して、vSRX仮想ファイアウォールインスタンスの正常性と統計を監視できます。ユーザー データに #load_balancer=true タグが送信された場合、ブートアップ メッセージに、ELB および自動スケーリングサポート用に vSRX 仮想ファイアウォール インターフェイスが設定されていることを示します。その後、インターフェイス eth0 と eth1 がスワップされます。
サポートされていないJunos OS設定がユーザーデータのvSRX仮想ファイアウォールインスタンスに送信された場合、vSRX仮想ファイアウォールインスタンスは工場出荷時のデフォルト設定に戻ります。#load_balancer=true タグがない場合、インターフェイスはスワップされません。
AWS アプリケーション ロード バランサーの導入
AWS ELB アプリケーション ロード バランサーは、次の 2 つの方法で導入できます。
AWS ELBアプリケーションロードバランサーの背後にあるvSRX仮想ファイアウォール
ELBサンドウィッチ
AWS ELBアプリケーションロードバランサー導入の背後にあるvSRX仮想ファイアウォール
このタイプの導入では、vSRX仮想ファイアウォールインスタンスは、1つ以上のアベイラビリティゾーン(AZ)にあるアプリケーションロードバランサーに接続され、アプリケーションワークロードはvSRX仮想ファイアウォールインスタンスの背後にあります。アプリケーション ロードバランサーは、インスタンスのプライマリ インターフェイスにのみトラフィックを送信します。vSRX 仮想ファイアウォール インスタンスの場合、プライマリ インターフェイスは管理インターフェイス fxp0 です。
この導入で ELB を有効にするには、管理と最初の収益インターフェイスを交換する必要があります。
図 1 は、AWS ELB アプリケーション ロード バランサーの導入を支える vSRX 仮想ファイアウォールを示しています。
AWS ELBアプリケーションロードバランサーの導入の背後でvSRX仮想ファイアウォールを使用したAWS ELBの有効化
AWS ELB アプリケーションロード バランサー(負荷分散装置)の導入の背後で AWS ELB が vSRX 仮想ファイアウォールを使用できるようにする場合の前提条件を次に示します。
ELB への送受信トラフィックはすべて、vSRX 仮想ファイアウォール インスタンスに関連付けられた ge-0/0/0 インターフェイスから監視されます。
起動時のvSRX仮想ファイアウォールインスタンスには、インターフェイスを含むサブネットがインターネットゲートウェイ(IGW)に接続された2つのインターフェイスがあります。2 つのインターフェイス制限は、AWS 自動スケーリンググループのデプロイによって設定されます。AWS ELB と同じサブネット内に少なくとも 1 つのインターフェイスを定義する必要があります。追加のインターフェイスは、ラムダ関数でアタッチできます。
vSRX 仮想ファイアウォール インスタンスの eth1 インターフェイスでは、送信元または宛先のチェックは無効になっています。
AWS ELB アプリケーション ロード バランサーの方法の背後に vSRX 仮想ファイアウォールを使用して AWS ELB アプリケーション ロード バランサーを導入する場合:
vSRX仮想ファイアウォールインスタンスには以下が含まれます。
ELBタグを#load_balancer=trueとしたクラウド初期化(cloud-init)ユーザーデータ。
#junos-config タグ、fxp0(dhcp)、ge-0/0/0(dhcp)を使用したユーザー データ設定(定義が必要なセキュリティ グループは DHCP である必要があります)
Cloud-Watch はシンプル通知サービス(SNS)をトリガーします。この関数は Lambda 関数をトリガーし、Elastic IP アドレス(EIP)を使用して弾力性のあるネットワーク インターフェイス(ENI)を vSRX 仮想ファイアウォール インスタンスに作成してアタッチします。複数の新しい ENI(最大 8)をこのインスタンスにアタッチできます。
vSRX 仮想ファイアウォール インスタンスを再起動する必要があります。再起動は、vSRX 仮想ファイアウォール インスタンスがスワップされたインターフェイスを使用して、それ以降のすべての起動に対して実行する必要があります。
メモ:ENI をインスタンスと IP 監視間で交換しようとすると、シャーシ クラスタはサポートされません。
自動スケーリンググループ(ASG)でvSRX仮想ファイアウォールインスタンスを起動することもできます。このリリースは、クラウドフォーメーションテンプレート(CFT)を使用して自動化できます。
Sandwich による AWS ELB アプリケーション ロード バランサーの導入
この導入モデルでは、セキュリティとアプリケーションの両方を拡張できます。vSRX仮想ファイアウォールインスタンスとアプリケーションは異なるASG内に存在し、これらのASGはそれぞれ異なるアプリケーションロードバランサーに接続されています。このタイプのELB導入は、vSRX仮想ファイアウォールの導入を手動で拡張して、計画トラフィックや予想トラフィックの増加に対処し、マルチ AZ の高可用性も実現する簡単でシンプルな方法です。この導入により、インバウンドの高可用性と AWS 導入の拡張性が確保されます。
ロード バランサーは動的に拡張するため、仮想 IP アドレス(VIP)は完全修飾ドメイン名(FQDN)です。この FQDN は、アベイラビリティ ゾーンに応じて複数の IP アドレスに解決されます。この解決を有効にするには、vSRX 仮想ファイアウォール インスタンスが FQDN(または解決先の複数のアドレス)からのトラフィックを送受信できる必要があります。
この FQDN を設定するには、 コマンドを set security zones security-zone ELB-TRAFFIC address-book address ELB dns-name FQDN_OF_ELB 使用します。
図 2 は、vSRX 仮想ファイアウォール向けの AWS ELB アプリケーション ロード バランサー サンドウィッチの導入を示しています。
vSRX仮想ファイアウォール向けAWSアプリケーションロードバランサーのサンドイッチ導入の実現
AWS ELB アプリケーション ロード バランサーサンドウィッチの vSRX 仮想ファイアウォールの導入の場合:
vSRX 仮想ファイアウォールは、クラウド init ユーザー データで #load_balancer=true タグを受信します。
Junos OS では、初期ブート プロセスがマウントされたディスクをスキャンし、 setup_vsrx ファイル内にフラグ ファイルが存在するかを確認します。ファイルが存在する場合、2つの異なる仮想参照にDHCPを持つ2つのインターフェイスを設定する必要があることを示しています。このスキャンと設定の更新は、デフォルト設定で、フラグファイルが存在する場合はユーザーデータの最上位で実行されます。
メモ:ユーザー データが存在する場合、2 番目または 3 番目の mgd プロセス コミット後のブート時間が増加します。
vSRX 仮想ファイアウォール インスタンスを再起動する必要があります。その後、vSRX仮想ファイアウォールインスタンスがスワップされたインターフェイスで起動したすべての回で、再起動を実行します。
メモ:インスタンスとIP監視の間で弾力性のあるネットワークインターフェイス(NI)を交換するためのシャーシクラスターサポートは機能しません。
ASGでvSRX仮想ファイアウォールインスタンスを起動し、クラウドフォーメーションテンプレート(CFT)を使用して導入を自動化することもできます。
AWSアプリケーションロードバランサー導入の背後でvSRX仮想ファイアウォールのクラウドフォーメーションテンプレート(CFT)スタック作成を呼び出す
このトピックでは、1 つのロード バランサーのみを含む非サンドウィッチ型導入(vSRX 仮想ファイアウォールを使用)のクラウド フォーメーション テンプレート(CFT)スタック作成を呼び出す方法について詳しく説明します。
CFT スタック作成を呼び出す前に、AWS 環境内で次の機能が既に利用されていることを確認します。
VPC を作成してすぐに使用できます。
管理サブネット
外部サブネット(ELBからトラフィックを受信するvSRX仮想ファイアウォールインターフェイスのサブネット)。
内部サブネット(ワークロードにトラフィックを送信する vSRX 仮想ファイアウォール インターフェイスのサブネット)。
起動する vSRX 仮想ファイアウォール インスタンスの AMI ID。
ユーザーデータ(トラフィックがワークロードに転送される前にコミットする必要があるvSRX仮想ファイアウォール設定。これは、4096 文字以下の長さの基本 64 エンコード・データです。1つのフィールドデータが4096文字を超える場合、最大3つのユーザーデータフィールドを使用できます)。
EC2キーファイル。
Juniper vSRX 仮想ファイアウォール GitHub リポジトリからラムダ関数ファイル add_eni.zip を取得し、インスタンス S3 バケットにアップロードします。テンプレートの [Lambda S3 の場所] フィールドでこの情報を使用します。
AWS アカウントには、リージョンのさまざまなリソースで Lambda 関数を作成する権限が必要です。
次の手順に従って、AWS ELB アプリケーション ロードバランサーの導入の背後で、vSRX 仮想ファイアウォールを使用して AWS ELB の CFT スタック作成を呼び出します。
HTTP トラフィックの vSRX 仮想ファイアウォール インスタンスを使用した AWS エラスティック ロード バランサーの設定例
DNS サーバー IP と Web サーバー IP が必要です(または、Web サーバーがロード バランサーの背後にある場合は、Web サーバー IP ではなく、以下のロード バランサーの IP アドレスを使用します)。
以下の設定で IP アドレスを使用した後、この設定を Base 64 形式(https://www.base64encode.org/ を参照)に変換し、変換された設定を UserData フィールドに貼り付けます。これにより、スタック作成プロセスで AWS で起動された vSRX 仮想ファイアウォール上の既存のデフォルト設定に以下の設定が適用されます。
#load_balancer=true
#junos-config
system {
name-server {
<Your DNS Server IP>
}
syslog {
file messages {
any any;
}
}
}
security {
address-book {
global {
address websrv <Your Web Server IP>/32>;
}
}
nat {
source {
rule-set src-nat {
from interface ge-0/0/0.0;
to zone trust;
rule rule1 {
match {
source-address 0.0.0.0/0;
destination-port {
80;
}
}
then {
source-nat {
interface;
}
}
}
}
}
destination {
pool pool1 {
address <Your Web Server IP>/32>;
}
rule-set dst-nat {
from interface ge-0/0/0.0;
rule rule1 {
match {
destination-address 0.0.0.0/0;
destination-port {
80;
}
}
then {
destination-nat {
pool {
pool1;
}
}
}
}
}
}
}
policies {
from-zone untrust to-zone trust {
policy mypol {
match {
source-address any;
destination-address any;
application any;
}
then {
permit;
}
}
}
}
zones {
security-zone trust {
host-inbound-traffic {
system-services {
any-service;
}
protocols {
all;
}
}
interfaces {
ge-0/0/1.0;
}
}
security-zone untrust {
host-inbound-traffic {
system-services {
any-service;
}
protocols {
all;
}
}
interfaces {
ge-0/0/0.0;
}
}
}
}
interfaces {
ge-0/0/0 {
unit 0 {
family inet {
dhcp;
}
}
}
ge-0/0/1 {
unit 0 {
family inet {
dhcp;
}
}
}
}
routing-instances {
ELB_RI {
instance-type virtual-router;
interface ge-0/0/0.0;
interface ge-0/0/1.0;
}
}
vSRX 仮想ファイアウォール インスタンス向け AWS エラスティック ネットワーク アダプター(ENA)の概要
Amazon Elastic Compute Cloud(EC2)は、次世代ネットワーク インターフェイスである Elastic Network Adapter(ENA)を提供し、EC2 vSRX 仮想ファイアウォール インスタンスで高度なネットワークを実現するドライバーを提供します。
Amazon EC2 は、ENA(Elastic Network Adapter)を通じて強化されたネットワーク機能を提供します。
利点
マルチキュー デバイス インターフェイスをサポートします。ENA は、内部オーバーヘッドを削減し、拡張性を高めるために、複数の送受信キューを使用します。複数のキューが存在することで、受信パケットと送信パケットを特定のvCPUにマッピングするプロセスが簡素化され、高速化されます。
ENA ドライバーは、チェックサム オフロードや TCP 送信セグメンテーション オフロード(TSO)などの業界標準の TCP/IP オフロード機能をサポートしています。
マルチプロセッサー システムの複数の CPU 間でネットワーク受信処理を効率的に配信してマルチコアのスケーリングを可能にする RSS(受信側拡張)ネットワーク ドライバー技術をサポートします。一部のENAデバイスは、LLQ(低レイテンシキュー)と呼ばれる動作モードをサポートしており、数マイクロ秒の節約になります。
AWS 弾力性のあるネットワーク アダプターについて
拡張ネットワークでは、シングルルート I/O 仮想化(SR-IOV)を使用して、サポートされるインスタンス タイプにハイパフォーマンスなネットワーク機能を提供します。SR-IOV は、デバイスを仮想化する方法で、従来の仮想ネットワーク インターフェイスと比較して I/O パフォーマンスが向上し、CPU 使用率が低くなります。強化されたネットワークは、より高い帯域幅、より高いパケット/秒(pps)パフォーマンスを提供し、インスタンス間のレイテンシを一貫して低くします。拡張ネットワークの使用には追加料金は発生しません。
ENAは、高スループットと1秒あたりのパケット数(pps)パフォーマンスと、EC2 vSRX仮想ファイアウォールインスタンスのレイテンシを一貫して低く抑えるために最適化されたカスタムネットワークインターフェイスです。vSRX 仮想ファイアウォール C5.large インスタンス(2 個の vCPU と 4 GB メモリを使用)に ENA を使用することで、最大 20 Gbps のネットワーク帯域幅を利用できます。vSRX 仮想ファイアウォール インスタンスでは、ENA ベースの拡張ネットワークがサポートされています。
ENA ドライバーは、メモリ にマッピングされた最小限のレジスタと、管理キューを通じて拡張可能なコマンドセットを使用して、軽量管理インターフェイスを公開します。このドライバーは、幅広い ENA アダプターをサポートし、リンク速度に依存しません(つまり、同じドライバを 10 Gbps、25 Gbps、40 Gbps など)に使用し、さまざまな機能をネゴシエートしてサポートします。ENA は、CPU コアごとに専用の Tx/Rx キュー ペアを提供することで、高速でオーバーヘッドの少ないイーサネット トラフィック処理を可能にします。
ENA の DPDK ドライバーは 、https://github.com/amzn/amzn-drivers/tree/master/userspace/dpdk で利用できます。
AWS ELB アプリケーション ロード バランサーを使用すると、eth0(最初)と eth1(2 番目)のインターフェイスが vSRX 仮想ファイアウォール インスタンスにスワップされます。AWS ENA は、対応するカーネル ドライバーでインターフェイスを検出し、再バインドします。






