EC2に複数のネットワークインターフェースをアタッチして構築するケースについて。
AWSドキュメントでは下記に複数のネットワークインターフェースのアタッチについて説明があるのでメモ
同じサブネットから複数のネットワークインターフェイスをインスタンスにアタッチするケースでは
ネットワークインターフェイスの設定に関するベストプラクティス
以下ベストプラクティスより引用
同じサブネットから複数のネットワークインターフェイスをインスタンスにアタッチすると、非対称ルーティングなどのネットワーク問題が発生する場合があります。可能であれば、代わりにプライマリネットワークインターフェイス上でセカンダリプライベート IPv4 アドレスを使用します。
AWSのベストプラクティスでは同じサブネットから複数のネットワークインターフェスをアタッチするのでは、可能であればネットワークインターフェース1つでセカンダリIPアドレスを設定する方を推奨していました。
理由としては行きと帰るで通信経路が変わる非対称ルーティングなどが上げられていました。
用途ごとにIPアドレスを分けるために、EC2インスタンスに複数ネットワークインターフェースをアタッチしているのを見たことがありますが、AWSのベストプラクティスとしては、可能ならばネットワークインターフェース1つにセカンダリIPがよさそうです。
どんなケースで複数のネットワークインターフェースを利用するのか
ドキュメントで紹介されているのは下記4つのケース
それぞれ読み込んで自分の解釈をメモ。
- 管理用ネットワークを作成する。
- 仮想プライベートクラウド (VPC) 内でネットワークアプライアンスやセキュリティアプライアンスを使用します。
- 別個のサブネット上のワークロード/ロールを使用するデュアルホーム接続インスタンスを作成する。
- 低予算で可用性の高いソリューションを作成する。
管理用ネットワークを作成する。
WebサーバーにPublicサブネット側に1つ、Privateサブネット側に1つの計2つのネットワークインターフェースを割り当てていて。
Publicサブネット側のネットワークインターフェースにはEIPを割り当ててインターネット側との通信を担いSGで80と443の通信を許可する。
Privateサブネット側のネットワークインターフェースにはバックエンドの通信を担い、SGで爆エンドからの管理通信(ssh)を許可する。
上記のようなPublic側とPrivate側でセキュリティグループの設定を分けた構成が紹介されています。
VPC 内でネットワークアプライアンスとセキュリティアプライアンスを使用する
アプライアンスによっては、複数のネットワークインターフェースを使用した構成が優先される旨が記載。
別個のサブネット上のワークロード/ロールを使用するデュアルホーム接続インスタンスを作成する。
Webサーバーとバックエンド(データーベースサーバー)が異なるサブネットで稼働しており、アプリケーションサーバーがWebサーバーとバックエンド(データベースサーバー)が稼働しているサブネットにデュアルホーム接続して間を取り持つケースについて記載されていました。
同一アカウント内の個別の VPC にあるワークロード/ロールを使用するデュアルホームインスタンスを作成する
同一アカウントで異なるVPCかつ同一AZの場合、異なるサブネットに作成したネットワークインターフェースをインスタンスにアタッチできる。
ユースケースとしては下記となる。以下引用
VPC にまたがるデュアルホームインスタンスは、次のユースケースで使用できます。
相互にピアリングできない 2 つの VPC 間における CIDR の重複を克服: VPC のセカンダリ CIDR を活用して、重複しない 2 つの IP 範囲でインスタンスが通信できるようにします。
単一アカウント内で複数の VPC を接続: 通常は VPC の境界で区切られている個々のリソース間における通信を可能にします。
低予算で可用性の高いソリューションを構築する
重要なインスタンスについては、ネットワークインターフェースを2つ挿して、また障害対策用のインスタンスを用意しておく。
セカンダリネットワークインターフェースはデタッチする事ができるので、障害発生時にはセカンダリネットワークインターフェースを障害対策用のインスタンスに割り当てることでプライベートIPアドレス(EIPがあればEIPも)、MACアドレスが維持される。
また障害対策用インスタンスにアタッチされた時点でネットワークトラフィックはそちらに流れ始める。
総評
-
サブネット間の通信をネットワークACLですべて遮断しネットワーク分割して、利用するサブネットごとにネットワークインターフェース作成してデュアルホーム接続する
-
用途ごとにIPアドレスを切り分けたいのでネットワークインターフェースを複数アタッチする
といったケースは見かけたことありますが、それ以外のケースについても色々と記載がありました。
ただ管理がなかなか大変になってくるので、特殊要件がない場合、ネットワークインターフェースを複数枚といった構成はなるべく避けたいですね。