WEDOS Cloud – Router z wysoką dostępnością

  WEDOS Cloud

Usługa WEDOS Cloud umożliwia utworzenie wielu VPS, które będą współdzielić jeden adres IP. Dzięki tej funkcji możliwe jest osiągnięcie wysokiej dostępności usług działających na VPS. W przypadku, gdy jeden z serwerów VPS jest niedostępny lub wymaga tymczasowego wyłączenia na potrzeby konserwacji, drugi serwer VPS przejmie cały ruch.

Do tego celu potrzebny będzie co najmniej jeden adres IP dla każdego z routerów i jeden adres IP, który będzie współdzielony między routerami. W sumie konieczne będzie posiadanie trzech publicznych adresów IP dla usługi WEDOS Cloud. Pozostałe parametry powinny odpowiadać oczekiwanemu obciążeniu. Zalecamy użycie co najmniej 1vCPU i 512 MB pamięci dla każdego z routerów.

Każdy router będzie miał dwa interfejsy sieciowe. Jeden zapewniający dostęp do Internetu i jeden do łączenia się z innym VPS. Na obu interfejsach będzie aktywna usługa Keepalived, wykorzystująca VRRP do przekazywania adresu IP pomiędzy routerami. Adres ten będzie przypisany do jednego z routerów, który będzie obsługiwał cały ruch. W razie awarii jednego z routerów adres w ciągu kilku sekund zostanie automatycznie przeniesiony na drugi router, dzięki czemu awaria będzie praktycznie niezauważalna.

Zanim zaczniesz tworzyć i konfigurować routery, konieczne jest przełączenie trybu wyświetlania na advanced w interfejsie Open Nebula. Jest to niezbędne, dla wyświetlenia zaawansowanych funkcji, w tym samych routerów. Zmiana ustawienia odbywa się przez kliknięcie nazwy użytkownika, a następnie wybór opcji advanced w sekcji Views.

Do zarządzania routerami i VPS będziemy używać SSH. Aby uniknąć każdorazowego wprowadzania hasła przy logowaniu, zalecamy dodanie klucza SSH w interfejsie Open Nebula (instrukcja dostępna tutaj). Klucz będzie automatycznie dodany do każdego nowo utworzonego serwera.  

Tworzenie routerów

Routery można tworzyć przez wybranie opcji Virtual routers, w sekcji Instances.

Po kliknięciu przycisku umożliwiającego dodanie nowego routera wyświetli się okno, w którym należy podać:

  • nazwę, która będzie służyła do identyfikacji usługi
  • Keepalive ID, musi być unikatowe, w przypadku, gdy mamy do dyspozycji więcej routerów wirtualnych
  • Keepalive password, hasło jest używane, aby zapobiec przejęciu naszych adresów, w przypadku podania identycznego Keepalive ID

W sekcji network kliknij przycisk dodawania nowej karty sieciowej i wybierz sieć, w której są dostępne adresy publiczne. Ważne jest, aby zaznaczyć pole Floating IP. Zaleca się również wpisanie w polu Force IPv4, adresu IP, który chcemy przypisać do obu VPSów. Dzięki temu adres ten nie będzie mógł być przypisany do innego nowo utworzonego VPS.

Ustawienia sieci publicznej

Powtórz tę procedurę i dodaj drugą sieć, która będzie służyć jako sieć wewnętrzna do komunikacji między pozostałymi VPS, a to bez konieczności ich bezpośredniego wystawiania w Internecie. Cały ruch będzie musiał przejść więc przez routery, gdzie dozwolone są tylko niektóre protokoły czy adresy. Sieć wewnętrzna będzie mieć nazwę ocXXXX-private.

Ustawienia sieci prywatnej

W ostatniej części – Template wybierz szablon, wg, którego zostaną utworzone routery. W tym przypadku wybierz Alpine Vrouter. Ostatnim parametrem, który należy określić, jest liczba VPS, które mają zostać utworzone. Minimalna liczba możliwa do utworzenia, a jednocześnie pozwalająca na osiągnięcie wysokiej dostępności to 2 VPS. Liczbę należy wpisać w polu Number of VM instances. Wprowadzone ustawienia należy potwierdzić kliknięciem przycisku Create dostępnego w górnej części okna.

Zaraz po utworzeniu routera wirtualnego, w sekcji VMs pojawią się dwa nowe VPS. Każdy z nich powinien mieć 4 adresy IP.  

  • Adres publiczny VPS, za pomocą tego adresu możemy zarządzać danym serwerem VPS
  • Adres publiczny współdzielony między VPS
  • Wewnętrzny adres IP VPS
  • Adres wewnętrzny współdzielony między VPS

W ustawieniach domyślnych NAT jest już skonfigurowany na routerach, w związku z czym możemy z nich korzystać bezpośrednio po utworzeniu, bez ustawiania reguł iptables.

Tworzenie VPS za routerami

Procedura tworzenia standardowego VPS jest podobna, jak gdyby VPS był podłączony bezpośrednio do Internetu, z tym że podczas jego tworzenia nie konfigurujemy karty sieciowej, ale dodajemy ją aż po utworzeniu VPS, dzięki czemu możemy zmienić jej ustawienia (serwery DNS i bramę domyślną).

Zmianę ustawień sieci umożliwia przycisk Attach nic dostępny w sekcji Network. W tym przypadku wybieramy sieć prywatną. Jest to ta sama sieć, której użyliśmy przy tworzeniu routerów. W sekcji Override Network Values IPv4 dostosujemy parametry GatewayDNS. Gateway ustawimy na ten sam adres, który jest współdzielony między routerami i siecią prywatną. Domyślnie 192.168.1.1. Jeśli chodzi o serwery DNS, możemy użyć dowolnych. W przedstawionym przykładzie użyliśmy serwerów Google o adresie 8.8.8.8.

Aby połączyć się z VPS znajdującym się za routerami, konieczne jest utworzenie DNAT (port forwarding) na routerach. Z routerami łączymy się przez SSH jako użytkownik root za pomocą polecenia

ssh root@{adres routera1}

Polecenie to jest dostępne w dystrybucjach systemu Linux, MacOS i nowych wersjach Windows 10. Jeśli Twój system nie dysponuje zintegrowanym klientem SSH, możesz skorzystać z aplikacji Putty.

Po połączeniu z routerem za pomocą poniższego polecenia utworzymy regułę w iptables, która automatycznie przekieruje wszystkie żądania kierowane do routera na porcie 1111, na VPS o adresie 192.168.1.4 i porcie 22

iptables -t nat -A PREROUTING -p tcp --dport 1111 -i eth0 -j DNAT --to 192.168.1.4:22

Polecenie to musi zostać uruchomione na obu routerach, ponieważ ich konfiguracja nie jest w żaden sposób synchronizowana, a w przypadku awarii routera głównego, drugi nie miałby informacji o tym, co robić, a tym samym odrzuciłby nieznany ruch.

Port 1111 to port, za pomocą którego łączymy się z adresem routerów (adres współdzielony), a adres 192.168.1.4:22 określa adres i port VPS, do którego nastąpi przekierowanie połączenia.  

Z SSH VPS połączymy się następnie za pomocą adresu {adres współdzielony}:1111