Een loadbalancer maken met CentOS en Linux Virtual Server

Als je nieuw bent in de Red Hat terminology, kan het best wel moeilijk zijn om te begrijpen hoe je een simpele loadbalancer kunt maken met Linux. Hier staat wat informatie om je op weg te helpen.

Lees meer op the CentOS Virtual Server Administration paginas.

Terminologie:

  • piranha This is het pakket dat je helpt met opzetten van LVS.
  • ipvs De Linux module die het mogelijk maakt te load balancen.
  • ipvsadm Een pakket en commando om de loadbalancer te beheren. Let op dat je of piranha-gui of /etc/sysconfig/ipvsadm gebruikt om de loadbalancer te configuren, niet beide..
  • LVS Linux Virtual Server - de projectnaam die hier steeds genoemd wordt.
  • pulse Een service (/etc/init.d/pulse) die op de actieve en backup machine draait en een poort opent om het mogelijk te maken checks te doen. Piranha-gui configureert alles, pulse voert alle configuraties door naar andere machines.
  • nanny Een proces gestart door pulse om de echte servers (en services) the checken.
  • nat Network Address Translation. Een gebruikelijke combinatie met LVS. Als NAT gebruikt wordt, accepteert de loadbalancer/director/LVS verkeer op een VIP en stuurt het door naar de echte servers. Let op dat de huidige implementatie van ipvsadm niet goed kan Source NATten, het source adres wordt niet goed herschreven.
  • direct routing Een methode van LVS om te routeren. Verkeer wordt ontvangen op de VIP en doorgestuurd naar de echte server, alsof het verstuurd is naar de VIP van de echte server. Hierdoor moeten de echte servers wel reageren op het VIP adres. Om dit te laten werken, moeten er een aantal "trucs" gedaan worden zodat de arp-cache gezond blijft werken.
  • wlc Weighted Least Connections, een algoritme om verkeer naar de echte servers te balancere.
  • VIP Virtual IP. Het IP-address waarop de service geconfigureerd is.
  • RIP Real (Echte) server IP. Het IP-address van de echte server.
  • realserver/echte server De server die de uiteindelijke dienst draait. Dit kan een Windows, Linux of elk soort machine zijn.

Hier is een overzicht van een mogelijke setup:

Stappen die je moet volgen voor eeuwige glorie:

Installeer piranha-gui

# yum install piranha-gui

(Verander 172.16.0.0/24 naar het netwerk dat gebruikt wordt om de echte server te bereiken.)

Configureer services

# chkconfig httpd on
# chkconfig piranha-gui on
# chkconfig pulse on
# sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/sysctl.conf
# echo "*nat
:PREROUTING ACCEPT [46:3346]
:POSTROUTING ACCEPT [431:32444]
:OUTPUT ACCEPT [431:32534]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [4186:1094786]
:FORWARD ACCEPT [729:111992]
:OUTPUT ACCEPT [4266:388099]
-A FORWARD -i eth1 -j ACCEPT
COMMIT" > /etc/sysconfig/iptables
# chkconfig iptables on
# sed -i 's/SELINUX=enabled/SELINUX=disabled/' /etc/sysconfig/selinux

Configureer via webinterface

Voor deze stappen uit in de piranha-gui web interface:

# service httpd start
# piranha-passwd
# service piranha-gui start

Open een browser en ga naar het IP adres van 1 van de loadbalancers, de URL ziet er ongeveer zo uit: http://192.168.202.50:3636

Synchroniseer /etc/sysconfig/ha/lvs.cf

Je zult de configuratie die piranha maakt in sync moeten houden op beide machines, dit is een suggestie om dat te doen:

# ssh-keygen
# scp .ssh/id_rsa* 192.168.202.110:./.ssh/
# cp .ssh/id_rsa.pub .ssh/authorized_keys

Nu moet je kunnen verbinden met beide machines zonder het opgeven van een wachtwoord.

# cat update-lvs.cf
#!/bin/sh

copiedserialno=$(grep serial_no /tmp/lvs.cf | awk '{ print $NF }')
runningserialno=$(grep serial_no /etc/sysconfig/ha/lvs.cf | awk '{ print $NF }')

if [ "$copiedserialno" -gt "$runningserialno" ] ; then
mv /tmp/lvs.cf /etc/sysconfig/ha/lvs.cf
fi
# crontab -l
* * * * * /usr/bin/scp /etc/sysconfig/ha/lvs.cf 192.168.1.46:/tmp > /dev/null
* * * * * /root/update-lvs.cf

Reboot de server.

Om alle veranderingen te testen kun je de load-balancer rebooten.