VRRP op uw OpenStack VPS configureren

Wanneer u probeert om VRRP te gebruiken op een OpenStack VPS zult u merken dat een floating IP alleen attached kan worden aan een enkele VPS. De VPS zal ook alleen luisteren op het IP wat toegekend is door OpenStack. Dit is by design, maar het voorkomt wel dat VRRP software zoals Keepalived goed werkt. In dit artikel zullen we uitleggen hoe u eenvoudig, met behulp van 3 metadata- opties, VRRP kunt gebruiken.

Floating IP's kunnen op zich ook gebruikt worden als een alternatief voor het wisselen van een IP tussen twee VPS'en. Dit ligt echter buiten de scope van dit artikel. Meer informatie hierover en het script hiervoor kunt u vinden op ons Github-account.
Als u VRRP alleen wilt gebruiken voor een intern IP, heeft u deze tutorial niet persé nodig. Het volstaat dan om het interne IP dat u wenst te gebruiken in Keepalived, te configureren in de "allowed address pairs" van uw instance. Dit doet u via de commandline client.
VRRP direct op net-public wordt niet ondersteund.

VRRP gebruiken op een OpenStack VPS

Om VRRP te kunnen gebruiken op OpenStack moet u 5 stappen doorlopen.
Enkelen stappen zijn wellicht niet nodig in uw situatie of spreken voor zich, maar we benoemen ze allemaal voor de duidelijkheid:

 

Reserveer een extra port in het interne netwerk (optioneel)

Om er zeker van te zijn dat het geconfigureerde IP niet opnieuw wordt uitgegeven is het verstandig om een extra poort te registreren welke dit IP heeft. De poort hoeft niet gekoppeld te worden aan een instance, maar dient alleen als een reservering. Het registeren van een poort met een IP is alleen mogelijk via de commandline tools.

Via de commandline client

openstack port create --network <<your-net-private>> keepalived_port_1 --fixed-ip ip-address=<<preferred-keepalived-ip>>

 

Sta VRRP verkeer toe in securitygroups (optioneel)

We hebben nu de instances geconfigureerd met behulp van de allow-all security group, maar dit staat al het verkeer toe, inclusief dat vanaf internet. Onder "Access & Security" vindt u de "Security Groups" tab waar u extra security groups met regels die aansluiten op uw applicatie kunt maken. Voor meer informatie over het aanmaken van security groups en rules verwijzen wij graag naar onze getting started.

 

Configureer 2 of meer instances in uw interne netwerk

Om VRRP te kunnen gebruiken heeft u 2 of meer VPS-en nodig, gekoppeld aan uw interne netwerk. Hierop zal later Keepalived geïnstalleerd worden. We gaan in deze stap deze VPS-en aanmaken. We gaan ervan uit dat u reeds een intern netwerk heeft.

VRRP direct op een publiek netwerk wordt niet ondersteund. Floating IP's kunnen ook alleen aan een intern IP gekoppeld worden. De gebruikte methode functioneert alleen op een intern netwerk. Wellicht nog belangrijker, VRRP is van oorsprong een unencrypted protocol welke niet geschikt is voor publieke netwerken.

Via de Horizon interface

Klik nog niet op "Launch", maar ga in plaats daarvan naar de metadata opties.

Via de commandline client

openstack server create --image "Ubuntu 16.04 (LTS)" --flavor 1001 --security-group "allow-all" --key-name "<<your-ssh-key>>" --nic net-id=<<your-net-private>> vrrp-LB-name

U kunt bij het aanmaken via de commandline client eventueel ook direct de metadata opties uit de volgende stap mee geven;

openstack server create --image "Ubuntu 16.04 (LTS)" \
 --flavor 1001 \
 --security-group "allow-all" \
 --key-name "<<your-ssh-key>>" \
 --nic net-id=<<your-net-private>> \
 --property ha_vip_address=10.0.0.18 \
 --property ha_execution=true \
 --property ha_floatingips= \
 --min 2 --max 2 \
vrrp-LB-name

Stel de metadata keys in

De metadata keys zorgen er voor dat er in de achtergrond een proces gaat lopen die alle netwerkinstelling automatisch goed zet voor uw setup.
Om dit te kunnen doen hebben wij wat informatie nodig, deze gaan we nu invullen.

In de dropdown naast uw instance, of in de linker sidebar wanneer u een nieuwe instance aan maakt, is het mogelijk op metadata opties in te stellen. Metadata is een extra eigenschap die u met een VPS mee kunt geven. In dit geval gebruiken wij een door ons voorgedefinieerde waarde waardoor het OpenStack platform weet dat u gebruik wilt maken van VRRP.

Klik op de + om "HA Floating IP" metadata keys toe te voegen;

Onder "Provider platform options" => "HA Floating IP" staan drie opties;

  • "Internal VIP" (ha_vip_address)
  • "Floating IP adressess" (ha_floatingips)
  • "Trigger platform confdeiguration" (ha_execution)

De eerste metadata key, ha_vip_address, moet het interne IP bevatten dat keepalived zal gebruiken. Dit IP heeft u gereserveerd in de tweede stap om te voorkomen dat het ergens anders aan uitgedeeld wordt.

De tweede metadata key, ha_floatingips, kan gebruikt worden om specifieke Floating IP's te koppelen die u eerder gealloceerd heeft.
Let op, als u een floating IP invult wat al in gebruik is wordt deze assigned aan deze instances.
Als u het veld leeg laat wordt een ongebruikt floating IP gebruikt.
Wanneer u geen vrij floating IP heeft in uw project wordt een nieuw floating IP geregistreerd.
U kunt meerdere floating IP's configureren door ze met komma's te scheiden. In de interface komt bij een van de instances het floating ip te staan. Dit staat los van welke instance op dat moment de MASTER status in keepalived heeft, deze informatie haalt u uit uw vm, en niet uit de interface.

De derde metadata key, ha_execution, zal een herconfiguratie triggeren wanneer deze op true staat.
Deze key wordt iedere minuut gecontroleerd. Als ha_execution true is wordt de configuratie bijgewerkt op basis van de eerste twee metadata keys, en deze key wordt bijgewerkt;
- met de timestamp indien de update goed is gegaan
- of met feedback over de foutmelding wanneer de update niet goed is gegaan.

 

Configureer keepalived

Keepalived moet geïnstalleerd worden en het interne IP wat u geconfigureerd heeft in de metedata moet ingesteld worden als virtueel IP van Keepalived. voor meer informatie over het configureren van Keepalived verwijzen wij naar de documentatie van keepalived zelf.

Als u alles goed heeft ingesteld moet u intern een failover kunnen doen en het interne IP kunnen pingen. Daar naast moet het floating IP bij een failover nu ook gekoppeld blijven aan de instance die de master is en het interne IP heeft.

 

Klaar

U moet nu een werkende Keepalived setup hebben. Het geconfigureerde floating IP zal mee switchen met de actieve master in keepalived zodat uw appllicatie een nog hogere beschikbaarheid heeft. Let op dat in horizon niet getoond wordt welke instance het floating IP heeft, omdat deze onder water aan een ip hangt wat kan wisselen tussen de instances.

Handmatig wijzigingen maken zoals het toevoegen van poorten en wisselen van het floating ip breekt deze setup. Mocht u problemen ondervinden of bijvoorbeeld toch per-ongeluk een floating IP aan een andere VPS toekennen kunt u eenvoudig opnieuw de ha_execution key op true zetten waarna binnen 1 minuut de setup opnieuw geconfigureerd zal worden aan de OpenStack kant.