Jaka jest najlepsza praktyka komunikacji między instancjami Amazon EC2?

41

Konfigurowałem instancje Amazon EC2 dla nadchodzącego projektu. Wszystkie są mikro instancjami, działającymi na Ubuntu Server 64bit. Oto co skonfigurowałem do tej pory:

  • Serwer WWW - Apache
  • Serwer bazy danych - MySQL
  • Serwer deweloperski - Apache i MySQL
  • Serwer plików - SVN i Bacula (kopie zapasowe są tworzone dla segmentów S3)

Obecnie istnieje tylko jeden serwer WWW, ale ostatecznie będzie ich więcej.

Moje pierwsze pytanie brzmi: jaki jest najlepszy, najbezpieczniejszy sposób komunikacji między instancjami Amazon EC2? Obecnie używam SSH, czy to najlepsza metoda?

Według Amazon za instancje komunikujące się między sobą za pomocą elastycznych adresów IP naliczane będą opłaty za transfer danych. Jednak instancje komunikujące się przy użyciu swoich prywatnych adresów IP mogą to zrobić za darmo. Niestety wydaje się, że prywatne adresy IP zmieniają się, jeśli instancja zostanie zatrzymana i ponownie uruchomiona.

To moje drugie pytanie: jak wykorzystać prywatne adresy IP instancji Amazon, jeśli nie są statyczne?

Wiem, że instancje prawdopodobnie nie będą zatrzymywane i uruchamiane bardzo często, ale jeśli adres IP znajduje się w różnych plikach konfiguracyjnych, trudno byłoby przejrzeć je wszystkie i zmienić.

Przede wszystkim martwię się o serwery WWW, które będą potrzebowały dostępu do serwera bazy danych i serwera plików, które będą potrzebowały dostępu do wszystkich instancji podczas wykonywania kopii zapasowych.

Uwaga: Nigdy wcześniej nie korzystałem z Baculi i nie mam jeszcze konfiguracji, ale zakładam, że będzie potrzebował adresów IP klientów, aby utworzyć ich kopię zapasową.

ks78
źródło
2
+1 - Chciałbym elastyczne prywatne adresy IP. Pamiętaj też, że myślę, że nie możesz komunikować się między regionami za pośrednictwem prywatnych adresów IP.
Joel K
Myślę, że przekonasz się, że pojedynczy m1.small zapewni znacznie lepszą wydajność niż wiele t1.micro. Następnie uaktualnij do c1.medium. Następnie rozpocznij uruchamianie wielu plików c1.medium lub użyj jeszcze większego typu instancji. Należy jednak pamiętać, że m1.small i c1.medium obsługują tylko wersje 32-bitowe, a nie 64-bitowe.
Eric Hammond,

Odpowiedzi:

29

Sprawdź artykuł Erica Hammonda wyjaśniający, jak używać elastycznych adresów IP nawet z poziomu EC2. Ta metoda NIE powoduje żadnych opłat za przepustowość, ponieważ rozwiązywanie elastycznego adresu IP (według nazwy) z poziomu EC2 zwraca prywatny adres IP.

http://alestic.com/2009/06/ec2-elastic-ip-internal

Aby uzyskać więcej opcji, mam artykuł analizujący kilka alternatyw:

http://shlomoswidler.com/2010/06/track-changes-to-your-dynamic-cloud-services-automatically.html

Szlomo Swidler
źródło
Dzięki za twoją odpowiedź. Coraz bardziej myślę, że dynamiczny DNS jest właściwą drogą, chociaż nigdy wcześniej nie konfigurowałem DNS. Czy znasz jakieś strony, które oferują szczegółowy opis tego, jak to zrobić?
ks78
6

Wdróż instancję EC2 w AWS Virtual Private Cloud (VPC). Podczas konfigurowania VPC przypiszesz CIDR do wszystkich instancji EC2 w VPC, a wewnętrzny adres IP będzie statyczny.

użytkownik188724
źródło
To zdecydowanie najlepsze podejście.
ceejayoz
2
  • Najbezpieczniejsza metoda komunikacji

SSH to bardzo dobra metoda przesyłania danych między różnymi serwerami, ale jeśli szukasz czegoś takiego jak stałe połączenie (na przykład z bazą danych), możesz użyć dowolnego rodzaju zaszyfrowanego oprogramowania tunelującego, takiego jak stunnel

  • Niestatyczne prywatne adresy IP

Ponieważ nie ma możliwości posiadania statycznych prywatnych adresów IP, możesz użyć do tego pewnego rodzaju automatycznego wdrożenia serwera, istnieje kilka narzędzi, takich jak mcollective, capistrano lub func, które pozwolą ci zarejestrować nową instancję na centralnym wyznaczonym serwerze i generować działania na wielu oparte na tym maszyny

Lynxman
źródło
Pierwotnie zamieściłem to samo pytanie na StackOverflow. Ktoś zasugerował użycie serwera DNS, więc jeśli prywatne adresy IP zmienią się, nie będzie to miało znaczenia, ponieważ będą używać nazw dostarczonych przez DNS do komunikacji. Jakie jest twoje zdanie na temat tego rozwiązania?
ks78
1
Nie jest to złe rozwiązanie, jeśli jesteś w stanie aktualizować dynamiczną strefę DNS, chociaż ponieważ musiałbyś używać tego, jak również podstawowego serwera DNS dla wszystkich swoich instancji, dałoby to również jeden punkt awarii, Dlatego zasugerowałem mcollective lub CAPISTRANO zamiast od które również daje przewagę wykonywania skomplikowanych operacji na Twoich węzłów
lynxman
Dzięki. Zastanawiałem się tylko, jakie będzie twoje zdanie na temat tego rozwiązania. Zajmę się kolektywem i kapistrano.
ks78
przepraszam, aby ożywić stary wątek, ale czy prywatne adresy IP nadal są niestatyczne na ec2? To nie jest to, czego byłem świadkiem w nowej konfiguracji ec2 - interfejsy sieciowe zostają po tym, jak zatrzymam serwery, a prywatne adresy IP nie zmieniły się jeszcze na mnie. Wydaje mi się również, że mogę w razie potrzeby wybrać dodatkowe prywatne adresy IP.
icyitscold