AWS EC2におけるネットワークインターフェース構成を考える

今回は EC2 におけるネットワークインターフェース構成について考えてみます。
2019.08.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。 ご機嫌いかがでしょうか。 "No human labor is no human error" が大好きな吉井 亮です。

今回は EC2 におけるネットワークインターフェース構成について考えてみます。

オンプレミス

オンプレミスではネットワークインターフェース (NIC) を分割して構成することが多いと思います。 ”業務LAN”、”運用LAN”、”バックアップLAN” などの目的別にセグメンテーションしています。

主な理由は以下だと思います。

  • ネットワーク帯域の確保、トラフィックの分離
  • セキュリティ境界
  • ハードウェア冗長化
  • アプリケーション、ミドルウェアの要件

当たり前のように複数 NIC をアタッチしてサーバーを構成していました。 SIer の皆さんも構成図を書く際には、色違いの線をごく自然に書いていたことでしょう。(私もそうでした)

AWS

EC2 ではどうなるでしょうか。 考え方が変わっているのでサーバー構成も AWS に合わせることが大切です。

ネットワーク帯域

EC2 インスタンスタイプごとにネットワーク帯域幅が定義されています。

例えば、汎用的な m5 ファミリーで拡張ネットワーキングを有効にした場合、 ネットワーク帯域幅は以下の通りです。(執筆日時点)

モデル ネットワーク帯域幅
m5.large
m5.xlarge
m5.2xlarge
m5.4xlarge
最大 10 Gbps
m5.8xlarge
m5.12xlarge
10 Gbps
m5.16xlarge 20 Gbps
m5.24xlarge 25 Gbps

※ 最新情報は Amazon EC2 インスタンスタイプ をご確認ください。

同一リージョンにある EC2 間のシングルフロー通信 (ポイントツーポイント) は最大 5Gbps になります。 ※ クラスタープレイスメントグループで構成した場合のシングルフローは 10Gbps になります。

簡単に言うと、1対1 の通信は 5Gbps、1対多 の通信はインスタンスごとの帯域幅になります。

EC2 には充分なネットワーク帯域幅が定義されています。 拡張ネットワーキングが有効になっていれば、 一つのネットワークインターフェースでもインスタンスの帯域幅を活用する性能は有しています。

トラフィックの分離

オンプレミスでは、NIC を分けて L3 スイッチを使用し論理的に分割、または、 物理的な結線で文字通り分離することで トラフィックを分離することは可能でした。

EC2 では複数ネットワークインターフェースをアタッチしたからといって 物理的・結線的に分離することはできません。

トラフィック分離という観点でネットワークインターフェースを構成する必要はありません。

セキュリティ境界

セキュリティ境界は主にセキュリティグループと Network ACL を組み合わせて実現します。 どの送信元からどの宛先へ通信を許可/拒否すべきかは セキュリティグループと Network ACL で制御する考え方になります。

AWS での複数ネットワークインターフェース

少々遠回しにネットワークインターフェースの複数アタッチは不要のように書いてきましたが 複数インターフェースが必要な場面もあるはずです。

アプライアンス製品

VPN、NAT サーバー、プロキシサーバーなどのアプライアンス製品では 複数インターフェースが必要になるかもしれません。 インターネットに接するサブネットと内部サブネットを分けていたほうが 製品としての構成がしやすくなるからと考えれます。

簡易なフェイルオーバー構成

セカンダリにアタッチしたネットワークインターフェースは デタッチや再アタッチがオンラインでも可能です。 これを活かして、簡易な Active/Standby 構成を組むことが可能です。 (同一 AZ、同一サブネットに限ります)

正直なところ、マネージドサービス使って欲しいところですが のっぴきならない事情がある場合の最終手段にはなるかもしれません。

注意点

複数のネットワークインターフェースをアタッチした場合は VPC のルートテーブルに加えて OS 上のルーティング設定が必須です。 ここは二重管理になるのでご注意ください。

同一サブネットに複数ネットワークインターフェースをアタッチすると 非対称ルーティングが発生しないようスタティックルートを設定する必要があります。 神経を使う設定になるのでご注意ください。

OS 上でスタティックルートを書いてしまうと 別サブネットへの移行、AMI コピーでの AZ 間移動を行う際に 一手間かかりますのでご注意ください。

まとめ

EC2 に複数ネットワークインターフェースをアタッチすることは メリットが無いわりには手間がかかる構成となっています。

オンプレミスでは合理的な理由によってネットワークインターフェースを分割していましたが AWS では一つのネットワークインターフェースという前提で構成するのが良いと考えています。

AWS の特性を活かした素晴らしい EC2 ライフをお楽しみください。

参考

Amazon EC2 インスタンスタイプ 水門は開いた – EC2 インスタンスのネットワーク帯域幅が増大 ネットワークインターフェイスのシナリオ Optimizing Network Performance for Amazon EC2 Instances (CMP308-R1) - AWS re:Invent 2018

以上、吉井 亮 がお届けしました。