Amazon EC2を使用しており、プライベートサブネット上の2つのインスタンスにELB(ロードバランサー)を配置します。プライベートサブネットをELBに追加するだけでは接続は取得されません。両方のサブネットをELBに接続すると、インスタンスにアクセスできますが、多くの場合タイムアウトになります。誰かがVPCのプライベートサブネット内にELBを正常に実装しましたか?もしそうなら、おそらく手順を説明してもらえますか?
ありがとう
私のチームメイトと私は、異なる可用性ゾーンに2つのプライベートサブネットを持つVPCにELBを実装しました。タイムアウトが発生する理由は、ロードバランサーに追加するサブネットごとに、1つの外部IPアドレスを取得するためです。 (「Dig elb-dns-name-here」を試してください。いくつかのIPアドレスが表示されます)。これらのIPアドレスのいずれかがプライベートサブネットをマップすると、タイムアウトになります。パブリックサブネットにマップするIPが機能します。 DNSはいずれかのIPアドレスを提供する可能性があるため、機能する場合もあれば、タイムアウトする場合もあります。
Amazonと何度かやり取りした後、ELBは「パブリック」サブネット、つまりインターネットゲートウェイへのルートを持つサブネットにのみ配置する必要があることを発見しました。 Webサーバーをプライベートサブネットに保持し、ELBがそれらと通信できるようにしました。これを解決するには、プライベートサブネットがある各アベイラビリティゾーンに対応するパブリックサブネットを確保する必要がありました。次に、各アベイラビリティーゾーンのパブリックサブネットであるELBに追加しました。
最初は、これはうまくいかないようでしたが、すべてを試した後、ELBを再作成し、すべてが正常に機能しました。これはバグだと思うか、ELBが非常に多くの変更により奇妙な状態にあったと思います。
これが多かれ少なかれ私たちがやったことです:
それがお役に立てば幸いです!
ここで重要なのは、ELBに「サブネット/可用性ゾーンを追加する」のではなく、ELBインスタンスを配置するサブネットを指定するということです。
はい、ELBはソフトウェアロードバランサーであり、ELBオブジェクトを作成すると、カスタムロードバランシングEC2インスタンスが指定したすべてのサブネットに配置されます。そのため、ELB(そのインスタンス)にアクセスするには、IGWを介してデフォルトルートが設定されているサブネットに配置する必要があります(これらのサブネットをパブリックとして分類した可能性が高い)。
したがって、すでに上記で回答したように、ELBの「パブリック」ネットワークを指定する必要があり、それらのネットワークはEC2インスタンスが実行されているAZからのものでなければなりません。この場合、ELBインスタンスはEC2インスタンスに到達できます(セキュリティグループが正しく構成されている場合)
次の設定を追加する必要があります。
トリックはルーティングです:
ELBの詳細:
1.ゾーン:パブリックサブネットゾーンc 2.インスタンス:サーバーWeb 3.セキュリティグループ:ポートを有効にする
http://docs.amazonaws.cn/en_us/ElasticLoadBalancing/latest/DeveloperGuide/UserScenariosForVPC.html
ELBをプライベートサブネットに実装したため、すべてのELBをパブリックにする必要があるという声明は完全に真実ではありません。 NATが必要です。プライベートELBのプライベートサブネットを作成し、VPC DNSをオンにして、プライベートルーティングテーブルがNATを通過するように設定されていることを確認します。サブネットセキュリティグループは、ELBとApp、およびAppとDBサブネット間のトラフィックを許可するように設定する必要もあります。
Beanstalkのヘルスチェックはロードバランサーに到達できないため機能しませんが、パブリックリーチ外にある必要があるサービスの場合、これは良い妥協です。
VPCアーキテクチャを開始するための推奨読書: http://blog.controlgroup.com/2013/10/14/guided-creation-of-cloudformation-templates-for-vpc/ 。