Statyczny adres IP dla ruchu wychodzącego z grupy automatycznego skalowania AWS

27

Będę miał kilka instancji EC2 w grupie automatycznego skalowania elastycznej fasoli w domyślnej podsieci w VPC. Aplikacja w tych instancjach EC2 musi połączyć się z usługą strony trzeciej, która umożliwia dostęp do białej listy adresów IP. Potrzebuję więc co najmniej jednego statycznego adresu IP, który mogę przekazać temu usługodawcy, aby można je było dodać do białej listy. Rozumiem, że jedynym sposobem na uzyskanie statycznego adresu IP jest uzyskanie elastycznego adresu IP. I mogę skojarzyć Elastyczny IP tylko z jedną instancją na raz EC2 - nie mogę skojarzyć go z całą moją podsiecią lub bramą internetową (czy to prawda?). Czy potrzebuję elastycznego adresu IP dla każdej instancji EC2, aby każda instancja mogła być osobno na białej liście? Jak by to działało, gdyby automatyczne skalowanie dodało kolejną instancję? Czy powinienem mieć jedną instancję EC2 z elastycznym adresem IP, i przekierować cały ruch wychodzący przez tę instancję? Jeśli tak, to czy ta instancja musi być przeznaczona wyłącznie do tego celu, czy może to być jedna z instancji, w których działa moja aplikacja?

davidwebster48
źródło

Odpowiedzi:

19

Potrzebujesz NAT. Konfiguracja ta jest powszechnie stosowana w celu wspierania prywatnych podsieci w VPC, jest dość szczegółowy przewodnik tutaj . Po skonfigurowaniu VPC do korzystania z instancji NAT cały ruch wychodzący zostanie przypisany do EIP instancji NAT.

Jeśli tak, to czy ta instancja musi być przeznaczona wyłącznie do tego celu, czy może to być jedna z instancji, w których działa moja aplikacja?

Technicznie prawdopodobnie mógłbyś, ale nie jest to dobry pomysł:

  • Bezpieczne jest izolowanie ról.
  • Chcesz, aby twoje serwery aplikacji miały podobne lub identyczne profile obciążenia. Jeśli jedno wystąpienie ma dodatkowe 10% obciążenia z powodu NAT, będziesz musiał przedwcześnie skalować, gdy osiągniesz granice tego wystąpienia. Sytuacja będzie się pogarszać, gdy translacja NAT będzie zajęta wraz z dodawaniem kolejnych instancji do klastra.
  • Chcesz, aby serwery aplikacji były identyczne i efemeryczne, abyś mógł je zburzyć i / lub wymienić, gdy wystąpi problem lub konieczne będzie skalowanie. Posiadanie jednego serwera aplikacji, który różni się od pozostałych, stanowiłoby poważny problem.

Państwo może być w stanie uciec z nim, jeśli instancje są w kontenerach, ale wciąż nie jest chyba dobrym pomysłem.

Pamiętaj również, że instancja NAT może być pojedynczym punktem awarii, więc możesz pomyśleć o redundancji.

thexacre
źródło
Czy użycie NAT zwiększy czas odpowiedzi na żądanie, dodając dodatkowy interfejs czarno-biały klient i serwer?
r.bhardwaj
1
Użyłem bramy NAT, aby osiągnąć cel ( docs.aws.amazon.com/elasticbeanstalk/latest/dg/vpc-rds.html ), ale mimo to, gdy robię nslookup na mój serwer, zwraca inny publiczny adres IP niż NAT bramka
r.bhardwaj
12

Rozumiem, że to stary wątek - dla kogoś, kto ma teraz podobny przypadek użycia, nat-gate AWS byłoby lepszym rozwiązaniem.

Władca Packet
źródło
4

Nie mam wystarczającej reputacji, aby skomentować powyższe odpowiedzi, ale chciałem dodać pewne informacje, które musisz wiedzieć, jeśli do osiągnięcia tego celu używasz bramy NAT. Tworząc bramę NAT, wybierasz podsieć i elastyczny adres IP.

Na początku właśnie dodałem bramę NAT do tej samej podsieci, w której znajdował się mój elastyczny moduł równoważenia obciążenia i instancje EC2. Następnie musisz dodać bramę NAT do tabeli tras. Dodałem bramę NAT jako cel adresu IP mojego zewnętrznego serwera bazy danych, z którym próbowałem się skontaktować. Spowodowało to przekroczenie limitu czasu aplikacji hostowanych w mojej elastycznej łodydze fasoli. Jest tak, ponieważ próbowali połączyć się z tą zewnętrzną bazą danych za pośrednictwem NAT. Dotarli do NAT, a następnie NAT próbował dotrzeć do mojego serwera przez Internet i przejrzał go w tabeli tras dla podsieci, na której był skierowany, tworząc z powrotem pętlę.

Rozwiązaniem jest, zanim utworzysz bramę NAT, utwórz nową podsieć tylko dla NAT, aby NAT miał własną podsieć i tablicę tras. W tabeli tras NAT skieruj cały ruch do bramy internetowej. W głównej tabeli tras wskaż swój zewnętrzny adres IP na NAT. Następnie, gdy instancje EC2 spróbują połączyć się z twoim zewnętrznym adresem IP, przejrzą je w głównej tabeli tras (lub dowolnej tabeli tras, którą zdefiniowałeś dla podsieci, w których znajdują się Twoje instancje) i znajdą NAT. Następnie Twój NAT wyszuka ten adres IP we własnej tabeli tras i znajdzie Internet.

użytkownik339568
źródło
Może chciałbym zobaczyć kilka zrzutów ekranu.
Wydaje
Myślę, że mam taką konfigurację, ale kiedy próbuję ssh do publicznego adresu IP mojej instancji, kończy się limit czasu. Czy instancja potrzebowałaby dwóch urządzeń sieciowych, aby móc przejść przez NAT i odbierać połączenia przychodzące z publicznego adresu IP?
justin.m. chase
Musisz dodać drugi interfejs sieciowy do instancji i do zewnętrznej podsieci, a następnie przypisać elastyczny interfejs ip do tego interfejsu sieciowego. Następnie możesz połączyć się z nim za pośrednictwem tego adresu IP, ale cały pozostały ruch będzie domyślnie przechodził przez nat.
justin.m. pościg