Peering w AWS umożliwia połączenie 2 sieci. Sieci mogą być w różnych regionach, a nawet na różnych kontach. Dzięki temu zasoby, które znajdują się w różnych sieciach, mogą bez problemu się ze sobą komunikować.
Jeśli posiadasz kilka sieci VPC w AWS i chciałbyś je połączyć, to peering jest świetnym rozwiązaniem. Funkcje Lambda, bazy RDS czy zwykłe EC2 w różnych regionach mogą komunikować się ze sobą w bezpieczny sposób za pomocą prywatnych adresów IP. Najlepsze jest to, że nie wymaga to tworzenia żadnych bram i połączeń VPN. Ruch odbywa się w bezpiecznej i szybkiej sieci szkieletowej AWS i nie musi jej opuszczać. Jeszcze raz zaznaczę, że używając peeringu, ruch pozostaje w wewnętrznej sieci AWS i nie przechodzi przez internet.
Peering daje nam także brak pojedynczego punktu awarii czy wąskiego gardła dla przepustowości.
Do połączenia ze sobą 2 sieci za pomocą peeringu wystarczą tylko skonfigurować 2 rzeczy:
- połączenie peering
- tablicę routingu
Jak włączyć połączenie peering w AWS?
Włączenie peeringu jest naprawdę proste. Jego konfiguracja w tablicy routingu też nie przysparza wielu problemów. Jeśli chcesz skomplikować sobie życie, to możesz dodać dodatkowe reguły w NACL i Security Group. Zalecam to jednak tylko, jeśli chcesz ograniczyć ruch w sieci i naprawdę wiesz, co robisz.
Połączenie peering
Wystarczy otworzyć AWS VPC, przejść do zakładki Peering Connections w Virtual Private Cloud i kliknąć Create Peering Connection.
Teraz wystarczy nadać nazwę naszemu połączeniu oraz wybrać sieci VPC, które chcemy połączyć.
Jeśli chcemy się połączyć z siecią na innym koncie, to po prostu musimy podać ID tego konta i ID sieci VCP, z którą chcemy się połączyć, a potem zalogować się na to konto i zaakceptować to połączenie.
Dokładnie to samo należy zrobić, jeśli łączymy sieci na tym samym koncie AWS. Musimy zaznaczyć połączenie peering, które dodaliśmy kliknąć „Actions” i „Accept request”.
Po tym, jak zaakceptujemy połączenie, jego Status powinien się zmienić na „Active”.
Tablica Routingu
Teraz obie sieci VPC są połączone peeringiem, ale maszyny EC2 które w nich są jeszcze nie mogą się ze sobą komunikować.
Żeby mogły nawiązać połączenie, trzeba jeszcze dodać odpowiedni wpis w tablicy routingu. Żeby to zrobić, należy wybrać z menu po lewej „Route Tables”.
Następnie wybierz tabelę routingu, która jest przypisana do pierwszej sieci i z menu „Actions” wybierz „Edit routes”
Teraz najtrudniejsza część. Kliknij „Add route”. W polu Destination wpisz adres drugiej sieci VPC. W moim przypadku jest to „10.1.0.0/16”. W polu Target wybierz Peering Connection i nazwę tego połączenia. Teraz możesz kliknąć Save changes.
Dla drugiej sieci zrób dokładnie to samo. Edytuj tablicę routingu do niej przypisaną i dodaj podobny wpis. Tym razem tylko w polu Destination użyj adresu pierwszej sieci, w moim przypadku będzie to „10.0.0.0/16”. W polu Target wybierz Peering Connection i nazwę tego połączenia. Teraz możesz kliknąć Save changes.
Jeśli wszystko zrobiłeś dobrze, to bez problemu maszyny z obu sieci powinny móc się ze sobą komunikować.
Teraz jest czas, żeby zawęzić trochę możliwość komunikacji sieci ze sobą sieci za pomocą NACL i Security grup jeśli tego potrzebujesz. Pamiętaj, na początku zawsze sprawdź, czy połączenie działa, a dopiero potem konfiguruj NACL i Security Group.
Problemy z połączeniem peering w AWS
Uwaga jeśli dopiero co stworzyłeś sieć to tablica routingu powinna być przypisana do sieci i podsieci z którą chcesz się połączyć, a domyślnie tak nie jest. Wejdź na swoją tablicę routingu dla VPC i sprawdź czy ma przypisane podsieci.
Jeśli wszystko zrobiłeś poprawnie ale wciąż nie możesz połączyć ze sobą maszyn EC2, to może problem leży w Security Group. Te grupy w przeciwieństwie do NACL mają dość restrykcyjne ustawienia domyślne (np. zabraniają pingów). Warto do nich zajrzeć. Sprawdź, jakie masz przypisane grupy do EC2. Wybierz interesującą cię instancję, przejdź do zakładki Security i kliknij Security groups.
Jeśli chcesz zezwolić na pingi, otwórz swoją Security Group i kliknij Edit inbound rules. Następnie dodaj regułę. Wybierz typ Custom ICMP, protocol Echo Request i zdefiniuj source. Jeśli chcesz zezwolić każdemu na wysyłanie zapytań ze wszystkich adresów, to w source wybierz Anywhere i kliknij Save rules. Ja jednak zachęcam, żebyś zawęził trochę ten zakres,. Chociaż do sieci, z której chcesz wysyłać takie zapytania.
Teraz bez problemu powinieneś nawiązać połączenie i dostać Echo Request.
Przykładowe scenariusze użycia
Poniżej znajdziesz kilka przykladowych scenariuszy użycia peeringu.
Połączenie 2 sieci
Najprostszy scenariusz, w którym łączymy ze sobą tylko 2 sieci, można było zobaczyć podczas czytania tego artykułu i wykonywania krok po kroku poleceń w nim zawartych. Teraz chciałbym zwrócić jeszcze uwagę na inne często spotykane scenariusze.
Połączenie 3 sieci
Połączenie peering jest równorzędne i nie jest, jak by to określić przechodnie. Oznacza, że jeśli połączymy peeringiem sieć 1 z 2 oraz 2 z 3, to będziemy mogli się komunikować tylko z sieciami, z którymi bezpośrednio zestawiliśmy połączenie.
Sieć VPC-1 będzie mogła się połączyć z VPC-2, ale z VPC-3 już nie.
Tao samo dotyczy sieci VPC-3, która będzie mogła się połączyć tylko z siecią VPC-2.
Natomiast sieć VPC-2 będzie mogła się połączyć zarówno z siecią VPC-1 jak i VPC-3.
Dzięki temu scenariuszowi zachowujemy izolację sieci VPC-1 i VPC-3. Nie pozwalamy im się ze sobą komunikować, a jednocześnie zezwalamy im na komunikację z siecią VPC-2. Żeby tego dokonać, musimy zestawić drugie połączenie peernig. Robimy to dokładnie w taki sposób, jak został opisany w artykule, tylko tym razem, zamiast łączyć sieci VPC-1 i VPC-2 musimy dodatkowo połączyć sieci VPC-2 i VPC-3. Oznacza to, że wszystkie kroki musimy wykonać ponownie dla nowego połączenia.
Połączenie z wieloma sieciami
W tym scenariuszu sieć będąca w centrum może połączyć się z każdą siecią. Pozostałe sieci mogą się połączyć tylko z jedną główną siecią będącą w centrum.
Tutaj powtarzamy kroki potrzebne do stworzenia działającego połączenia peering tyle razy, ile sieci chcemy połączyć z siecią będącą w centrum VPC-MAIN.
Jest to bardzo często spotykane rozwiązanie, które w głównej sieci może posiadać np. serwer do monitoringu. Sieć VPC-MAIN ma połączenie z każdą inną, więc bez problemu możemy wszystko monitorować. W takiej centralnej sieci spotyka się często serwer plików, główne repozytorium dokumentów, albo rejestr obrazów używanych do budowania, testowania i deploymentu. Jedno centralne miejsce wspólne dla wszystkich sieci. Mamy z niego dostęp do każdej sieci, a każda sieć ma dostęp do niego i nigdzie dalej. Oczywiście dobrom praktyką jest ograniczenie trochę tego ruchu sieciowego za pomocą NACL i Security Group.
Podsumowanie
Przedstawione scenariusze są trochę wyidealizowane, bo często sieć wygląda jak ta pod spodem i to w mocno uproszczonej wersji. Mamy dużo lokalizacji, jeszcze więcej sieci, a do tego chmury od kilku vendorów co nie ułatwia sprawy.
Tak czy inaczej, warto wiedzieć co to peering i jak można go używać, bo często się przydaje.
Pod tym linkiem znajdziesz dokumentację AWS na temat połączenia peering.
Zajrzyj jeszcze do artykułu Jak kontrolować koszty w chmurze AWS. Wejdź do świata chmury pogłębiaj swoją wiedzę i zwiększaj swoje zarobki.