インターネットトラフィックが急増すると、インターネットNATゲートウェイが容量と帯域幅の制限に追いやられ、応答が長引いたり、ビジネスオペレーションが中断したりする可能性があります。 インターネットNATゲートウェイのSNAT (Source Network Address Translation) ルールを使用してElastic Compute Service (ECS) インスタンスのトラフィックを分析し、帯域幅の割り当てを強化し、ネットワークのボトルネックに対処できます。
概要
インターネットNATゲートウェイは、企業にSNATおよびDNAT機能を提供し、インターネットに頻繁にアクセスするインスタンスの詳細なサービス監視および管理を可能にするセキュリティゲートウェイです。 また、インターネットNAT Gatewayは、トップトラフィックを表示し、バーストトラフィックを持つECSインスタンスを識別し、さまざまなトラフィックモニタリングメトリクスを提供します。 インターネットNATゲートウェイの詳細については、インターネットNATゲートウェイとはをご参照ください。
仮想プライベートクラウド (VPC) のフローログは、特定のElastic Network Interface (ENI) 、VPC、またはvSwitch内のすべてのENIからトラフィックをキャプチャできます。
SNATまたはDNAT機能を使用してインターネットNATゲートウェイのECSインスタンストラフィックを診断するには、NATゲートウェイをホストするvSwitchですべてのENIのフローログを作成します。 フローログを有効にして分析することで、NAT GatewayのECSインスタンストラフィックを体系的に調べ、トラフィックの多いインスタンスを最適化し、安定したネットワークパフォーマンスを確保できます。
機能
フローログを有効にすると、ECSインスタンスのインバウンドトラフィックとアウトバウンドトラフィックが保存と分析のためにログに記録されます。 これにより、ECSインスタンスのトラフィックパターンの包括的な概要が提供されます。
内部ネットワークとパブリックネットワーク間のトラフィックは、インターネットNATゲートウェイを介してルーティングする必要があります。 ENIを介してインバウンドトラフィックとアウトバウンドトラフィックを監視し、トラフィック使用量と帯域幅消費量を評価できます。
次の図に示すように、ENIをトランジットとして使用すると、ECSインスタンスとインターネット間の双方向トラフィック経路は、2つの入口と2つの出口の4つのルートに分割できます。
フローログセンターにログインして、in方向とOUT方向のトラフィックを監視および分析し、ENIに記録されたデータを追跡できます。
シナリオ
フローログを使用して、インターネットNAT Gatewayで大量のトラフィックを持つECSインスタンスを監視することは、次のシナリオに適用できます。
ネットワークパフォーマンスの向上: 同時実行性とトラフィックが高いシナリオでは、フローログを使用して、インターネットNAT GatewayのECSインスタンスのインバウンドトラフィックとアウトバウンドトラフィックを分析できます。 これにより、トラフィックスループットが大きいインスタンスを特定し、送信元IPアドレスとインスタンスのどの組み合わせが帯域幅のボトルネックを引き起こすかを特定できます。 その後、帯域幅の割り当てを強化して、インスタンスの過負荷によるネットワークのボトルネックを防ぐことができます。
コスト管理と削減のために: トラフィック量が増加したECSインスタンスは、かなりの帯域幅料金が発生する可能性があります。 フローログを注意深く調べることで、この大量のトラフィックを引き起こしているインスタンスとソースIPアドレスを特定できます。 ネットワークアクセスパスを変更して、過剰なトラフィックを削減し、コストを削減できます。
例:
企業には、インターネットNATゲートウェイのSNAT機能を介してインターネット内のリソースにアクセスする複数の内部サーバーがあります。 最近、これらのサーバーのロード時間は、外部リソースにアクセスするときに延長され、ユーザーエクスペリエンスに影響を与えます。 ユーザーエクスペリエンスを向上させるために、同社はトラフィック量の多いサーバーを特定し、帯域幅計画を改善することで読み込み時間を短縮したいと考えています。
次の図に示すように、会社はvSwitch1に3つのECSインスタンスを持つVPCを中国 (杭州) リージョンにデプロイしました。 これらのインスタンスは、vSwitch2のSNAT機能を介してインターネットにアクセスします。 インターネットにアクセスする内部サーバーからのトラフィックの急増は、サーバーの応答を遅くします。 会社はフローログを使用して、3つのECSインスタンスの中からトラフィックが大きいインスタンスを特定できます。 ログを分析することで、帯域幅を再割り当てし、ネットワークのボトルネックを緩和できます。
前提条件
VPCは、vSwitch1とvSwitch2の2つのvSwtichsを持つ中国 (杭州) リージョンにデプロイされています。 詳細については、「VPC の作成と管理」をご参照ください。
vSwitch1には、ECS01、ECS02、およびECS03の3つのECSインスタンスが作成されています。 詳細については、「カスタム起動タブでインスタンスを作成する」をご参照ください。
vSwitch1をポイントするSNATエントリを使用して、vSwitch2にインターネットNATゲートウェイが作成されました。 詳細については、「インターネットNATゲートウェイのSNAT機能を使用したインターネットへのアクセス」をご参照ください。
手順
手順1: フローログの作成
フローログを作成する前に、前提条件が満たされていることを確認してください。 詳細は、「前提条件 (Prerequisites)」をご参照ください。
VPCコンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、VPCが存在するリージョンを選択します。 この例では、中国 (杭州) が選択されています。
フローログ ページで、フローログの作成 をクリックします。
フローログの作成 ダイアログボックスで、次の情報に従ってフローログを設定し、OK をクリックします。
設定
説明
リソースタイプ
トラフィックをキャプチャするリソースタイプを選択します。 この例では、vSwitchが選択されています。
リソースインスタンス
トラフィックをキャプチャするリソースインスタンスを選択します。 ここでは、vSwitch1のインスタンスIDが選択されています。
データ転送タイプ
キャプチャするトラフィックのタイプを選択します。 すべてのトラフィックがここで選択されます。
プロジェクト
キャプチャしたトラフィックを保存するプロジェクトを選択します。 [プロジェクトの作成] を選択し、新しいプロジェクトの名前を入力します。
ログストア
キャプチャしたトラフィックを保存するLogstoreを選択します。 [Logstoreの作成] を選択し、新しいLogstoreの名前を入力します。
ログ分析レポートの有効化
この例では、この機能が有効になっています。
ステップ2: wrkでユーザートラフィックをシミュレートする
ECS01、ECS02、およびECS03インスタンスにログインします。
次のコマンドを実行して、ECS01、ECS02、およびECS03インスタンスにwrkツールをインストールします。
yum -y install git make gcc git clone https://github.com/wg/wrk.git yum install unzip cd wrk make
ECS01、ECS02、およびECS03インスタンスでそれぞれ次のコマンドを実行して、ユーザートラフィックテストを実行します。
ECS01で次のコマンドを実行します。
./wrk -c 1000 -d 60s -t 3 http://101.XX.XX.200:80/ # 101.XX.XX.200 is a public IP
ECS02で次のコマンドを実行します。
./wrk -c 2000 -d 60s -t 3 http://101.XX.XX.200:80/ # 101.XX.XX.200 is a public IP
ECS03で次のコマンドを実行します。
./wrk -c 3000 -d 60s -t 3 http://101.XX.XX.200:80/ # 101.XX.XX.200 is a public IP
コマンドラインのパラメータは次のとおりです。
-c: 接続のための短い。 各スレッドによって維持される同時接続の数。
-d: 期間が短い。 テスト期間は秒単位で測定されます。 たとえば、-d60sは60秒のテスト期間を示します。
-t: スレッドのための短い。 スレッドの数は、環境でシミュレートする同時ユーザーの数を示します。
ステップ3: フローログの表示
VPCコンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、VPCが属するリージョンを選択します。 この例では、中国 (杭州) が選択されています。
[フローログ] ページで、表示するフローログを見つけ、[Simple Log Service] 列のLogstoreのリンクをクリックします。 Simple Log Serviceコンソールで、トラフィック情報を表示できます。
次の図に示す手順に従います。 SNATエントリを介してインターネットにアクセスするECSインスタンスのトラフィックは、グラフで視覚化されます。
次の表に示すように、プライベートIP
172.16.1.46
を持つECS03インスタンスは、3つのインスタンスの中で最も高いトラフィックを持っています。番号
説明
①
次のSQL文を例として使用して、フローログを集計およびソートします。 パブリックIPアドレスへのトラフィックが多いECSインスタンスがグラフに表示されます。
dstaddr: "101.XX.XX.200" and action: ACCEPT and srcaddr: 172.16.1.* | select date_format(from_unixtime(__time__ - __time__% 60), '%H:%i:%S') as time, srcaddr,sum(bytes*8/(case WHEN "end"-start=0 THEN 1 else "end"-start end)) as bandwidth group by time,srcaddr order by time asc limit 1000
SQLステートメントは、時間、帯域幅 (ビット /秒、またはbps) 、およびsrcaddr (ソースアドレス) の3つのフィールドを指定します。 Timeとsrcaddrは集計され、時間の昇順でソートされます。 この場合、1,000のログエントリが照会されます。 フィールドの詳細については、「VPCフローログのフィールドの詳細」をご参照ください。
コマンドのその他のフィールドは次のとおりです。
dstadr
: パブリックIPアドレスである宛先アドレス。 このステートメントには、101.XX. X.XX.200
を入力します。srcaddr
: 送信元アドレス。ECSインスタンスのIPアドレスです。 このステートメントには、172.16.1.*
が入力されます。残りのフィールドを例に示す値に設定します。
説明次のSQL文を入力して、特定のパブリックIPアドレスからECSインスタンスへのトラフィックをフィルタリングします。
srcaddr: "101.XX.XX.200" and action: ACCEPT and dstaddr: 172.16.1.* | select date_format(from_unixtime(__time__ - __time__% 60), '%H:%i:%S') as time, dstaddr,sum(bytes*8/(case WHEN "end"-start=0 THEN 1 else "end"-start end)) as bandwidth group by time,dstaddr order by time asc limit 1000
コマンドのフィールドは次のとおりです。
srcaddr
: 送信元アドレス。パブリックIPアドレスです。 このステートメントには、101.XX. XX.200
が入力されます。dstadr
: 送信先アドレス。ECSインスタンスのIPアドレスです。 このステートメントには、172.16.1.*
が入力されます。グラフを生成するときに、[集計列] を
[dstaddr]
に設定します。
次のSQL文を入力して、ECSインスタンスからすべてのパブリックIPアドレスへのトラフィックをフィルタリングします。
srcaddr: 172.16.1.* and action: ACCEPT | select date_format(from_unixtime(__time__ - __time__% 60), '%H:%i:%S') as time, srcaddr,sum(bytes*8/(case WHEN "end"-start=0 THEN 1 else "end"-start end)) as bandwidth from log where ip_to_domain(dstaddr)!='intranet' group by time,srcaddr order by time asc limit 1000
コマンドのパラメーターを次の表に示します。
srcaddr
: 送信元アドレス。プライベートIPアドレスです。 このステートメントには、172.16.1.*
が入力されます。dstadr
: パブリックIPアドレスである宛先アドレス。チャートを生成するときに、集計列を
srcaddr
に設定します。
②
クエリする期間を選択します。 この例では、最後の5分が選択されています。
③
[一般設定] タブをクリックします。 [チャートタイプ] で [] をクリックします。
④
[クエリと分析の設定] セクションで、次のパラメーターを設定します。
X軸フィールド: 値をtimeに設定します。
Y軸フィールド: 値をbandwidthに設定します。
集計列: 値をsrcaddrに設定します。
[標準設定] で、[フォーマット] を [bps, Kbps, Mbps (SI)] に設定します。
他のパラメータはデフォルト値のままにします。
⑤
[新しいダッシュボードに追加] をクリックし、表示されるダイアログボックスで次のパラメーターを設定します。
操作: この例では、[新しいダッシュボードの作成] を使用します。
レイアウトモード: この例では、グリッドレイアウトが使用されています。
ダッシュボード名: ダッシュボードの名前を入力します。 ECS_outbound_traffic_through_NAT_gatewayが使用されています。
ダッシュボードにアクセスして、フローログの詳細を表示します。
⑥
[検索と分析] をクリックして、各ECSインスタンスのインターネットへのアウトバウンドトラフィックを表示し、トラフィック量の多いインスタンスを特定します。
関連ドキュメント
VPCフローログによってキャプチャされたフィールドの詳細については、「フローログの概要」をご参照ください。
フローログクエリのエラーメッセージの詳細については、トラブルシューティングのための「ログのクエリと分析の一般的なエラー」をご参照ください。
ログのクエリと分析の詳細については、「ログのクエリと分析」をご参照ください。