Frage Statische IP-Adresse für ausgehenden Datenverkehr von der AWS-Autoscaling-Gruppe


Ich werde eine Anzahl von EC2-Instanzen in einer Elastic Beanstalk-Autoscaling-Gruppe in einem Standard-Subnetz in einer VPC haben. Die App auf diesen EC2-Instanzen muss eine Verbindung zu einem Drittanbieter-Dienst herstellen, der eine IP-Adressen-Whitelist verwendet, um den Zugriff zuzulassen. Daher benötige ich eine oder mehrere statische IP-Adressen, die ich diesem Dienstanbieter geben kann, damit sie zur Whitelist hinzugefügt werden können. Mein Verständnis ist, dass die einzige Möglichkeit, eine statische IP zu erhalten, eine elastische IP-Adresse ist. Und ich kann die Elastic IP immer nur einer EC2 Instanz zuordnen - ich kann sie nicht mit meinem gesamten Subnetz oder Internet Gateway verbinden (ist das korrekt?). Benötige ich also eine Elastic IP für jede EC2 Instanz, so dass jede Instanz separat auf die Whitelist gesetzt werden kann? Wie würde das funktionieren, wenn das Autoscaling eine weitere Instanz hinzufügt? Sollte ich eine EC2-Instanz mit einer Elastic IP haben und den gesamten ausgehenden Verkehr über diese Instanz routen? Wenn ja, muss diese Instanz ausschließlich für diesen Zweck verwendet werden, oder kann es eine der Instanzen sein, auf denen meine App ausgeführt wird?


19
2017-08-30 11:39


Ursprung




Antworten:


Du brauchst ein NAT. Diese Konfiguration wird normalerweise zur Unterstützung privater Subnetze in VPC verwendet, es gibt eine recht detaillierte Anleitung Hier. Sobald Ihr VPC für die Verwendung der NAT-Instanz konfiguriert ist, wird der gesamte ausgehende Datenverkehr dem EIP der NAT-Instanz zugewiesen.

Wenn ja, muss diese Instanz nur für diesen Zweck sein oder kann es   eine der Instanzen sein, auf denen meine App läuft?

Technisch könnte man das wahrscheinlich, aber es ist keine gute Idee:

  • Es ist eine gute Sicherheit, Rollen isoliert zu haben.
  • Sie möchten, dass Ihre Anwendungsserver ähnliche oder identische Lastprofile haben. Wenn eine Instanz aufgrund des NAT eine zusätzliche Auslastung von 10% aufweist, müssen Sie die Größe der Instanz vorzeitig erhöhen. Dies wird umso schlimmer, je mehr Instanzen zu Ihrem Cluster hinzugefügt werden.
  • Sie möchten, dass Ihre Anwendungsserver identisch und kurzlebig sind, sodass Sie sie abreißen und / oder ersetzen können, wenn ein Problem auftritt oder Sie skalieren müssen. Einen anderen Anwendungsserver zu haben wäre ein großer Nachteil.

Sie könnte in der Lage sein, damit durchzukommen, wenn Ihre Instanzen Container sind, aber es ist immer noch wahrscheinlich keine gute Idee.

Bedenken Sie auch, dass Ihre NAT-Instanz ein einzelner Fehlerpunkt sein könnte. Sie sollten daher über Redundanz nachdenken.


15
2017-08-31 01:47



Will die Verwendung von NAT die Reaktionszeit einer Anfrage erhöhen, fügt sie eine zusätzliche Schnittstelle b / w Client und Server hinzu? - r.bhardwaj
Ich habe NAT-Gateway verwendet, um den Zweck zu erreichen ( docs.aws.amazon.com/elasticbeanstalk/latest/dg/vpc-rd.html) aber immer noch, wenn ich das nslookup zu meinem Server mache, gibt es unterschiedliche öffentliche IP-Adresse dann von NAT-Gateway zurück - r.bhardwaj


Ich verstehe, dass dies ein alter Thread ist - für jemanden, der jetzt einen ähnlichen Anwendungsfall hat, AWS Nat-Gateway wäre eine bessere Lösung.


6
2018-04-05 07:56





Ich habe nicht genug Reputation, um die obigen Antworten zu kommentieren, aber ich wollte einige Informationen hinzufügen, die Sie wissen müssen, wenn Sie ein NAT-Gateway verwenden, um dies zu erreichen. Wenn Sie ein NAT-Gateway erstellen, wählen Sie ein Subnetz und eine elastische IP-Adresse aus.

Zuerst habe ich das NAT-Gateway zu demselben Subnetz hinzugefügt, in dem sich mein Elastic Load Balancer und die EC2-Instanzen befanden. Dann müssen Sie das NAT-Gateway zu Ihrer Routentabelle hinzufügen. Ich habe das NAT-Gateway als Ziel für die IP meines externen Datenbankservers hinzugefügt, mit dem ich Kontakt aufnehmen wollte. Dies führte dazu, dass die Anwendungen, die in meinem Elastic Beanstalk-Timing enthalten waren. Dies liegt daran, dass sie versuchten, über NAT eine Verbindung zu dieser externen Datenbank herzustellen. Sie erreichten das NAT, und dann versuchte das NAT, über das Internet zu meinem Server zu gelangen, und suchte in der Routentabelle nach dem Subnetz, in dem es sich befand, das auf sich selbst gerichtet war und eine Schleife erzeugte.

Die Lösung besteht darin, vor dem Erstellen des NAT-Gateways ein neues Subnetz nur für das NAT zu erstellen, sodass das NAT über eine eigene Subnetz- und Routentabelle verfügt. Zeigen Sie in der Routentabelle der NAT den gesamten Datenverkehr auf das Internet-Gateway. Richten Sie Ihre externe IP-Adresse in der Hauptroutentabelle auf das NAT. Wenn Ihre EC2-Instanzen dann versuchen, eine Verbindung zu Ihrer externen IP-Adresse herzustellen, werden sie in der Hauptroutentabelle (oder in der Routentabelle, die Sie für die Subnetze definiert haben, in denen sich Ihre Instanzen befinden) nach dem NAT gesucht. Dann wird Ihr NAT diese IP in seiner eigenen Routentabelle nachschlagen und das Internet finden.


2
2018-02-26 04:38