WEDOS Cloud – Router s vysokou dostupností

Tento komunitní návod je aktuální k 24. 11. 2020.

Služba WEDOS Cloud umožňuje vytvořit několik VPS, které mezi sebou budou sdílet jednu IP adresu. Díky této funkci je možné dosáhnout vysoké dostupnosti služeb umístěných na VPS. V případě, že by jeden z VPS serverů byl nedostupný, nebo by jej bylo potřeba dočasně vypnout z důvodů údržby, převzal by veškerý provoz druhý VPS server.

Bude potřeba minimálně jedna IP adresa pro každý z routerů a jedna IP adresa, která bude sdílená mezi routery. Celkem je tedy potřeba mít u služby WEDOS Cloud tři veřejné IP adresy. Ostatní parametry VPS vybíráme podle očekávané zátěže. Doporučujeme využít alespoň 1vCPU a 512MB paměti pro každý z routerů.

Každý router bude mít dvě síťová rozhraní. Jedno pro přístup k internetu a jedno pro připojení k ostatním VPS. Na obou rozhraních bude aktivní služba Keepalived využívající VRRP k předávání IP adresy mezi routery. Tato adresa bude vždy přidělena jednomu z routerů. Ten bude odbavovat veškerý provoz. V případě výpadku jednoho z routerů se adresa automaticky přenese na druhý router během pár vteřin a výpadek je tedy skoro nepoznatelný.

Před tím, než se pustíme do samotného vytváření a konfigurace routerů, je potřeba v rozhraní Open Nebuly přepnout režim zobrazení na advanced, aby se nám zobrazily pokročilé funkce, mezi něž patří i samotné routery. Toto nastavení lze změnit kliknutím na uživatelské jméno a následným zaškrtnutím kolonky advanced v sekci Views.

Ke správě routerů a vps budeme využívat SSH, abychom nemuseli při každém přihlášení zadávat heslo doporučujeme si v rozhraní OpenNebula přidat SSH klíč, návod naleznete zde. Klíč je automaticky přidán do každého nově vytvořeného serveru.

Vytvoření routerů

Routery je možné vytvořit v sekci Instances vybráním položky Virtual routers.

Po kliknutí na tlačítko pro přidání nového routeru se nám otevře stránka, kde vyplníme:

  • název, který slouží k identifikaci služby
  • Keepalive ID, toto číslo musí být v případě, že máme více virtuálních routerů unikátní
  • Keepalive password, heslo sloužící k tomu, aby nemohl nikdo jiný se stejně zadaným Keepalive ID převzít naše adres

V sekci network klikneme na tlačítko pro přidání nové síťové karty a zde vybereme síť, na které máme dostupné veřejné adresy. Je důležité zaškrtnout políčko Floating IP. Dále je doporučeno vyplnit IP adresu, kterou budeme chtít přiřadit oběma VPS do políčka Force IPv4, jelikož se poté adresa nemůže přiřadit jinému VPS, které bychom vytvořili.

Stejný postup opakujeme a přidáme druhou síť, která bude sloužit jako interní síť pro komunikaci mezi ostatními VPS, bez nutnosti je vystavovat přímo na internet. Veškerý provoz tedy bude muset nejdříve projít přes routery, kde mohou být povolené jenom některé protokoly nebo adresy. Vnitřní síť bude mít název ocXXXX-private.

V poslední části Template vybereme šablonu, podle které se budou routery vytvářet. Zde zvolíme Alpine Vrouter. Poslední věc, kterou je potřeba upravit, je počet VPS, které se vytvoří. Minimální počet, který je možné vytvořit a stále dosáhnout vysoké dostupnosti, jsou 2 VPS. Počet zadáme do políčka Number of VM instances. Následně naše nastavení potvrdíme kliknutím na tlačítko Create v horní části stránky.

Jakmile je virtuální router vytvořen, objeví se v sekci VMs dvě nové VPS. Každá z VPS by měla mít 4 IP adresy.

  • Veřejná adresa VPS, pomocí této adresy můžeme daný VPS server spravovat
  • Veřejná adresa, která je sdílená mezi VPS
  • Vnitřní IP Adresa VPS
  • Vnitřní adresa, která je sdílená mezi VPS

Ve výchozím nastavení je na routerech již nastavený NAT a můžeme je tedy využívat ihned po vytvoření, bez nastavování iptables pravidel.

Vytvoření VPS za routery

Postup vytvoření standardní VPS je podobný, jako kdyby byla VPS připojená přímo do internetu, s tím rozdílem, že při jejím vytvoření nebudeme nastavovat síťovou kartu, ale přidáme ji až po vytvoření VPS, abychom mohli upravit její nastavení (výchozí bránu a DNS servery).

Síťová nastavení můžeme upravit po rozkliknutí sekce Network tlačítkem Attach nic. Zde vybereme privátní síť. Jedná se o stejnou síť, kterou jsme využili při vytváření routerů. V sekci Override Network Values IPv4 upravíme hodnoty Gateway a DNS. Gateway nastavíme na stejnou adresu, jako je sdílená adresa mezi routery v privátní síti. Ve výchozím nastavení 192.168.1.1. DNS servery můžeme využít jakékoliv. Zde jsme využili servery Googlu s adresou 8.8.8.8

Abychom se mohli připojit na VPS umístěnou za routery, je potřeba vytvořit DNAT (port forwarding) na routerech. Na routery se připojíme pomocí SSH za uživatele root pomocí příkazu

ssh root@{adresa routeru1}

Tento příkaz je dostupný v linuxových distribucích, MacOS a nových verzích Windows 10. V případě, že by Váš systém nedisponoval integrovaným SSH klientem můžete využít aplikace Putty.

Po připojení na router pomocí následujícího příkazu vytvoříme pravidlo v iptables, které automaticky přesměruje veškeré požadavky směřující na router na portu 1111 na vps s adresou 192.168.1.4 a portem 22

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

Tento příkaz je nutné spustit na obou routerech, jelikož se jejich konfigurace nijak nesynchronizuje a v případě výpadku hlavního routeru by druhý neměl informace o tom, co má dělat a veškerý neznámý provoz by zahodil.

Port 1111 je port, pomocí kterého se budeme připojovat na adresu routerů (sdílená adresa) a adresa 192.168.1.4:22 určuje adresu a port VPS, na kterou bude připojení přesměrováno.

Na SSH VPS se poté připojíme pomocí adresy {sdílená adresa}:1111