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.
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.
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 Gateway i DNS. 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