2016-07-25 33 views
2

Ich bin verwirrt, wie die AWS Load Balancer funktionieren. Ich habe eine ziemlich einfache Einrichtung ...Loadbalancer kann keinen guten Gesundheitscheck bekommen

Ich habe eine Rest-basierte API, die über meinen Load Balancer ins Internet (Port 80) ausgesetzt werden muss. Ich möchte nur, dass der Load Balancer dem Internetverkehr ausgesetzt ist. Ich habe ein Sicherheitsgruppen-Setup für meine Instanz, das den direkten Zugriff auf meine IP-Adresse zu Testzwecken einschränkt.

Der Load Balancer ist nicht IP-beschränkt auf http, es hat nur Port 80 offen (mit einem Listener zu meinem API-Dienst an Port 3001). Das Problem ist, dass der Load Balancer meine Instanz nicht sehen kann, wenn ich IP-Beschränkungen für die betreffenden Instanzen einstelle. Sobald ich diese Einschränkungen für meine Instanzen aufgehoben habe, funktionieren die Statusprüfungen und ich kann über den Lastenausgleich auf den Service zugreifen. Das Problem damit ist, dass meine Instanzen jetzt offene Ports zum Internet haben, die ich nicht will.

Gibt es noch etwas, das ich tun muss, damit der Load Balancer auf meine Instanzen zugreifen kann, wenn ich IP-Einschränkungen verwende?

Eine letzte Anmerkung, meine Gesundheitsprüfungen funktionieren gut, bis ich die Instanz-Level-IP-Einschränkungen hinzufügen, so dass ich weiß, die Gesundheitsprüfung ist nicht das Problem. Ich denke, wenn ich die IP-Adresse des Load Balancers zu meiner Whitelist hinzufügen würde, würde es funktionieren, aber diese IP ist dynamisch und für diesen Zweck nicht geeignet.

+0

Sie setzen IP-Einschränkung zu welchem ​​Anschluss an Ihrem Beispiel, wenn Ihr ELB die Instanz ungesund macht? – error2007s

+0

Ich habe den Port 3001 so eingeschränkt, dass er nur für meine IP-Adresse geöffnet ist. Wenn ich den Zugriff beschränke, nehme ich an, dass dies nur für den Verkehr im Internet gilt - aber ich denke, es könnte auch den Zugriff meines Load Balancers auf die Instanz einschränken. ELB macht die Instanz nicht per se ungesund, es versagt nur die Gesundheitsprüfung. – bstar

+0

Was haben Sie in Ihrem AWS ELB-Gesundheitscheck eingerichtet? – error2007s

Antwort

3

Verwenden Sie keine IP-Einschränkungen.

1) Wählen Sie Ihre LB, wählen Sie Security Registerkarte und notieren Sie die Sicherheitsgruppe ID (etwas wie sg-5555abb). Klicken Sie auf diese ID, um sie zu bearbeiten

2) Wenn Sie Ihre Load Balancer Sicherheitsgruppe bearbeiten, fügen Sie nur eine Zulassungsregel hinzu: HTTP TCP 80 0.0.0.0/0 (und/oder 443, wenn Sie es brauchen, aber Sie bekommen die Idee).

3) Als nächstes gehen Sie zur Sicherheitsgruppe Ihrer Instanz. Lassen Sie nur die Sicherheitsgruppe von Load Balancer auf Port 3001 auf Ihre Instanz zugreifen: Custom TCP Rule TCP 3001 sg-5555abb (my-load-balancer). Beachten Sie, dass in Source Feld, das Sie nicht eingeben IP-Adresse/Maske aber Security Group-ID aus Schritt 1) ​​

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#security-group-rules

+0

Meine Load Balancer-Sicherheitsgruppe beschränkt sich nicht auf IP, sondern nur auf die Sicherheitsgruppe meiner Instanz. Ich dachte, die LB wäre gegen die Sicherheitsgruppenregeln der Instanz immun ... Ich dachte mir, dass sie über das lokale Amazonas-Netzwerk auf die Instanz zugreift. – bstar

+0

Sorry, vielleicht war ich nicht klar genug, ich werde die Antwort erweitern. –

+0

@bstar Ich löschte meine Antwort nach dieser Antwort das ist was Sie suchen und wird genau so arbeiten, wie Sie es wollen. – error2007s