Mein Teamkollege und ich haben gerade ELB in einer VPC mit 2 privaten Subnetzen in verschiedenen Verfügbarkeitszonen implementiert. Der Grund für das Timeout ist, dass für jedes Subnetz, das Sie dem Load Balancer hinzufügen, eine externe IP-Adresse abgerufen wird. (Versuchen Sie 'dig elb-dns-name-here' und Sie werden mehrere IP-Adressen sehen). Wenn eine dieser IP-Adressen einem privaten Subnetz zugeordnet ist, tritt eine Zeitüberschreitung auf. Die IP, die Ihrem öffentlichen Subnetz zugeordnet ist, funktioniert. Da DNS Ihnen möglicherweise eine der IP-Adressen gibt, funktioniert dies manchmal, manchmal tritt eine Zeitüberschreitung auf.
Nach einigem Hin und Her mit Amazon stellten wir fest, dass die ELB nur in "öffentlichen" Subnetzen platziert werden sollte, dh in Subnetzen, die eine Route zum Internet Gateway haben. Wir wollten unsere Webserver in unseren privaten Subnetzen behalten, aber der ELB erlauben, mit ihnen zu sprechen. Um dies zu lösen, mussten wir sicherstellen, dass wir für jede Verfügbarkeitszone, in der wir private Subnetze hatten, ein entsprechendes öffentliches Subnetz hatten. Anschließend haben wir der ELB die öffentlichen Subnetze für jede Verfügbarkeitszone hinzugefügt.
Zuerst schien dies nicht zu funktionieren, aber nachdem wir alles ausprobiert hatten, haben wir die ELB neu erstellt und alles hat so funktioniert, wie es sollte. Ich denke, das ist ein Fehler, oder die ELB war aufgrund so vieler Änderungen nur in einem merkwürdigen Zustand.
Hier ist mehr oder weniger das, was wir getan haben:
- WebServer-1 wird in PrivateSubnet-1 in der Verfügbarkeitszone us-east-1b mit der Sicherheitsgruppe Webserver ausgeführt.
- WebServer-2 wird in PrivateSubnet-2 in der Verfügbarkeitszone us-east-1c mit der Sicherheitsgruppe Webserver ausgeführt.
- Erstellt ein öffentliches Subnetz in der Zone us-east-1b, nennen wir es PublicSubnet-1. Wir haben sichergestellt, dass wir die Routing-Tabelle, die die Route zum Internet-Gateway (ig-xxxxx) enthält, diesem neuen Subnetz zugeordnet haben. (Wenn Sie mit dem Assistenten eine öffentliche / private VPC erstellt haben, ist diese Route bereits vorhanden.)
- Erstellt ein öffentliches Subnetz in der Zone us-east-1c, nennen wir es PublicSubnet-2. Wir haben sichergestellt, dass wir die Routing-Tabelle, die die Route zum Internet-Gateway (ig-xxxxx) enthält, diesem neuen Subnetz zugeordnet haben. (Wenn Sie mit dem Assistenten eine öffentliche / private VPC erstellt haben, ist diese Route bereits vorhanden.)
- Erstellt eine neue ELB und fügt ihr PublicSubnet-1 und PublicSubnet-2 hinzu (nicht das PrivateSubnet-X). Wählen Sie außerdem die Instanzen aus, die in der ELB ausgeführt werden sollen, in diesem Fall WebServer-1 und WebServer-2. Stellen Sie sicher, dass Sie eine Sicherheitsgruppe zuweisen, die eingehende Ports 80 und 443 zulässt. Rufen Sie diese Gruppe elb-group auf.
- Lassen Sie in der Webservergruppe den Datenverkehr von Port 80 und 443 von der Elb-Gruppe zu.
Ich hoffe das hilft!
OutOfService
da ich keine Instanz im öffentlichen Subnetz habe. Die Anzahl der Instanzen zeigt 0. Wenn ich beide hinzufüge, funktioniert die Instanz normal, aber dann stehe ich vor dem Timeout-Problem. Vermisse ich etwas Kann mir bitte jemand helfen?Der Schlüssel hier ist das Verständnis, dass Sie ELB nicht "Subnetze / Verfügbarkeitszonen hinzufügen", sondern angeben, in welche Subnetze ELB-Instanzen eingefügt werden sollen.
Ja, ELB ist ein Software-Load-Balancer. Wenn Sie ein ELB-Objekt erstellen, wird eine benutzerdefinierte EC2-Instanz für den Load-Balancing in alle von Ihnen angegebenen Subnetze eingefügt. Damit auf die ELB (ihre Instanzen) zugegriffen werden kann, müssen sie in die Subnetze eingefügt werden, deren Standardroute über IGW konfiguriert wurde (höchstwahrscheinlich haben Sie diese Subnetze als öffentlich klassifiziert).
Wie oben bereits beantwortet, müssen Sie "öffentliche" Netzwerke für ELB angeben, und diese Netzwerke sollten von den AZs stammen, in denen Ihre EC2-Instanzen ausgeführt werden. In diesem Fall können ELB-Instanzen Ihre EC2-Instanzen erreichen (sofern die Sicherheitsgruppen korrekt konfiguriert sind).
quelle
Wir haben ELB in einem privaten Subnetz implementiert, sodass die Aussage, dass alle ELBs öffentlich sein müssen, nicht vollständig wahr ist. Du brauchst ein NAT. Erstellen Sie ein privates Subnetz für die privaten ELBs, aktivieren Sie VPC-DNS und stellen Sie sicher, dass die private Routing-Tabelle für die NAT-Konfiguration konfiguriert ist. Die Subnetz-Sicherheitsgruppen müssen auch eingerichtet werden, um Datenverkehr zwischen ELB und App sowie App-zu-DB-Subnetzen zu ermöglichen.
Beanstalk-Integritätsprüfungen funktionieren nicht, da sie den Load Balancer nicht erreichen können. Für Dienste, die außerhalb der Reichweite der Öffentlichkeit liegen müssen, ist dies jedoch ein guter Kompromiss.
Empfohlene Lektüre für den Start Ihrer VPC-Architektur: http://blog.controlgroup.com/2013/10/14/guided-creation-of-cloudformation-templates-for-vpc/ .
quelle
Sie müssen die folgenden Einstellungen hinzufügen.
Der Trick ist das Routing:
ELB Details:
1.Zone: Öffentliche Subnetzzone c 2.Instanz: Server Web 3.Sicherheitsgruppen: Ports aktivieren
http://docs.amazonaws.cn/en_us/ElasticLoadBalancing/latest/DeveloperGuide/UserScenariosForVPC.html
quelle