web-dev-qa-db-ja.com

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

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

28
davidwebster48

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

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

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

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

インスタンスがコンテナ化されている場合、mightでそれを回避できる可能性がありますが、それでもおそらく素晴らしいアイデアではありません。

また、NATインスタンスが単一障害点になる可能性があるため、冗長性について検討する必要があるかもしれないことにも注意してください。

19
thexacre

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

13
packetlord

上記の回答についてコメントする十分な評判はありませんが、NATゲート​​ウェイを使用してこれを実現する場合に知っておく必要がある情報をいくつか追加したいと思います。 NATゲート​​ウェイを作成するときに、サブネットとエラスティックIPアドレスを選択します。

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

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

4
user339568