web-dev-qa-db-ja.com

内部向けとインターネット向けの両方のElastic Load Balancing

AWSでElastic Load Balancingを自動スケーリングで使用して、必要に応じてスケールインおよびスケールアウトできるようにしています。

私たちのアプリケーションはいくつかの小さなアプリケーションで構成され、それらはすべて同じサブネットと同じVPCにあります。

ELBをアプリの1つと残りのアプリの間に配置したいと考えています。

問題は、ロードバランサーがAPIを使用して異なるアプリ間で内部で動作することと、アプリケーションがinternet-facingで動作することです。 APIを介さずに外部で行う必要のある使用法がまだあります。

私はこれを読んだ question だが、そこからそれを行う方法を正確に理解できなかった、それは実際にはステップを特定していないか、多分私はそれをよく理解していた。

内部と外部の両方のELBを使用できますか?

記録のために、私はVPNを介してのみこのネットワークにアクセスできます。

15
engma

Elastic Load BalancerがパブリックIPアドレスとプライベートIPアドレスの両方を持つことはできません。それはどちらか一方ですが、両方ではありません。

ELBにプライベートIPアドレスを持たせたい場合は、ELBはインターネットからのリクエストをリッスンできません。

ELBがパブリックに面している場合でも、パブリックエンドポイントを使用して内部EC2インスタンスからELBを呼び出すことができます。ただし、これにはいくつかの注意事項があります。

  • トラフィックはVPCを出て、再び入ります。プライベートIPアドレスが提供するのは、インスタンスからELBへの直接接続ではありません。
  • セキュリティグループルールでセキュリティグループを使用することもできません。

3つの代替シナリオがあります。

  1. ELBおよびEC2インスタンスを複製します。1つはプライベートトラフィック専用、もう1つはパブリックトラフィック専用です。
  2. 同じバックエンドEC2インスタンスを共有する2つのELB(1つはパブリック、1つはプライベート)があります。
  3. プライベートトラフィックまたはパブリックトラフィックにELBを使用しないでください。代わりに、単一のEC2インスタンスでElastic IPアドレス(パブリックの場合)またはプライベートIPアドレス(プライベートの場合)を使用します。
22
Matt Houser

@MattHouserの回答に同意しません。実際、VPCでは、ELBのすべての内部インターフェイスが、パブリックIPおよびプライマリプライベートIPを使用するネットワークインターフェイスにリストされています。私は自分のパブリックELBのプライベートIPをテストしましたが、外部IPとまったく同じように機能します。

問題は、これらのIPがプライベートELB DNSのような最新の方法でリストされていないことです。だから自分でやらなければならない。

内部にRoute53ホストゾーンを使用して、これに小さなPOCスクリプトを作成しました: https://Gist.github.com/darylounet/3c6253c60b7dc52da927b80a0ae8d428

10
DaryL

ロードバランサーに設定されているプラ​​イベートIPを確認し、変更時にRoute53レコードを更新するLambda関数を作成しました: https://github.com/Bramzor/lambda-sync-private-elb-ips

この機能を使用すると、ELBを簡単にプライベートトラフィックに使用できます。私は個人的には、追加のELBを必要とせずに、VPCリージョン間ピアリングを介して複数のリージョンを相互に接続するために使用しています。

2
spa900

標準のAWSソリューションは、このために追加の内部ELBを用意することです。 @DaryLには興味深い回避策があるようですが、DNSが更新されていないと5分間失敗する可能性があります。また、ELBの外部IPのENIとセキュリティを共有するため、内部IPに個別のセキュリティグループを設定する方法はありません。

1
AstroTom

私は同じ課題に直面しましたが、これまでのところ最良の解決策は、2つの異なるALB、1つはインターネット向け、もう1つは内部向けであることを確認できます。同じクラスターにアクセスできるように、両方のALBを単一のAutoScalingグループにアタッチできます。

両方が同じクラスターインスタンスにアクセスするためには、両方のALBのネットワークオプション(サブネット、セキュリティグループ)が同じであることを確認してください。自動スケーリングと起動構成は、同じAutoSaclingグループに接続された両方のALBでシームレスに機能します。これは、ElasticBeanstalk環境から作成されたALBでも機能します。

0