AWS自動スケーリンググループからの発信トラフィックの静的IPアドレス


27

VPCのデフォルトサブネットのElastic Beanstalk自動スケーリンググループに多数のEC2インスタンスを作成します。これらのEC2インスタンスのアプリは、IPアドレスホワイトリストを使用してアクセスを許可するサードパーティサービスに接続する必要があります。したがって、ホワイトリストに追加できるように、このサービスプロバイダーに提供できる1つ以上の静的IPアドレスが必要です。私の理解では、静的IPを取得する唯一の方法はElastic IPアドレスを取得することです。また、Elastic IPは一度に1つのEC2インスタンスにしか関連付けることができません。サブネット全体またはインターネットゲートウェイと関連付けることはできません(これは正しいですか?)。各EC2インスタンスにElastic IPが必要なので、各インスタンスを個別にホワイトリストに登録できますか?自動スケーリングによって別のインスタンスが追加された場合、どのように機能しますか?Elastic IPを持つEC2インスタンスが1つある場合、そのインスタンスを介してすべての発信トラフィックをルーティングしますか?その場合、そのインスタンスはこの目的のためだけである必要がありますか、それともアプリを実行しているインスタンスの1つにすることができますか?

回答:


19

NATが必要です。この設定は、一般にVPCでプライベートサブネットをサポートするために使用されます。詳細なガイドがここにあります。NATインスタンスを使用するようにVPCが設定されると、すべてのアウトバウンドトラフィックはNATインスタンスのEIPに起因します。

その場合、そのインスタンスはこの目的のためだけである必要がありますか、それともアプリを実行しているインスタンスの1つにすることができますか?

技術的にはおそらく可能ですが、それは良い考えではありません:

  • 役割を分離することは優れたセキュリティです。
  • アプリケーションサーバーに類似または同一の負荷プロファイルを持たせる必要があります。NATのために1つのインスタンスに余分な10%の負荷がある場合、そのインスタンスの制限に達したときに時期尚早にスケールアップする必要があります。これは、クラスターにインスタンスが追加されるにつれてNATがビジーになるにつれて悪化します。
  • アプリケーションサーバーを同一で短命にしたいので、問題が発生したり、拡張する必要がある場合はいつでも、それらを解体および/または交換できます。残りとは異なる1つのアプリケーションサーバーを持つことは、大きな頭痛の種です。

あなたは可能性があなたのインスタンスがコンテナにしている場合はそれを離れて得ることができるが、それはおそらくまだ素晴らしいアイデアではありません。

また、NATインスタンスが単一障害点になる可能性があるため、冗長性について検討することもできます。


NATを使用すると、追加のインターフェイスb / wクライアントとサーバーが追加されると、要求の応答時間が長くなりますか?
-r.bhardwaj

1
NATゲートウェイを使用して目的を達成しました(docs.aws.amazon.com/elasticbeanstalk/latest/dg/vpc-rds.html)ゲートウェイ
-r.bhardwaj

12

私はこれが古いスレッドであることを理解しています-現在同様のユースケースを持っている人にとっては、AWS nat-gatewayがより良い解決策でしょう。


4

上記の答えについてコメントするほどの評判はありませんが、これを達成するためにNATゲートウェイを使用する場合に知っておく必要のある情報を追加したかったのです。NATゲートウェイを作成するときに、サブネットとElastic IPアドレスを選択します。

最初に、NATゲートウェイを、エラスティックロードバランサーとEC2インスタンスが存在していた同じサブネットに追加しました。次に、NATゲートウェイをルートテーブルに追加する必要があります。NATゲートウェイを、接続しようとした外部データベースサーバーのIPのターゲットとして追加しました。その結果、私のElastic Beantalkでホストされているアプリケーションがタイムアウトになりました。これは、NATを介して外部データベースに接続しようとしたためです。彼らはNATに到達し、それからNATはインターネット経由で私のサーバーに手を伸ばそうとし、それが存在するサブネットのルートテーブルでそれを調べました。

解決策は、NATゲートウェイを作成する前に、NAT専用の新しいサブネットを作成して、NATが独自のサブネットとルートテーブルを持つようにすることです。NATのルートテーブルで、すべてのトラフィックをインターネットゲートウェイに向けます。メインルートテーブルで、外部IPがNATを指すようにします。次に、EC2インスタンスが外部IPに接続しようとすると、メインルートテーブル(またはインスタンスが存在するサブネットに対して定義したルートテーブル)でそれらを検索し、NATを見つけます。次に、NATは独自のルートテーブルでそのIPを検索し、インターネットを見つけます。


スクリーンショットをいくつか見たいです。私は、これは私の問題だと思うが、わずか50%程度、それを完全に理解することができます
justin.m.chase

このように設定していると思いますが、インスタンスのパブリックIPにsshしようとするとタイムアウトします。インスタンスがNATを通過し、パブリックIPからの着信接続を受信できるようにするには、2つのネットワークデバイスが必要ですか?
justin.m.chase

インスタンスと外部サブネットに2番目のネットワークインターフェイスを追加してから、そのネットワークインターフェイスにElastic IPを割り当てる必要があります。その後、そのIPを介して接続できますが、他のすべてのトラフィックはデフォルトでnatを通過します。
justin.m.chase
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.