Loadbalancers: Difference between revisions
Line 259: | Line 259: | ||
= server inschakelen = | = server inschakelen = | ||
Stel we willen server 12 inschakelen dan doe je dat met volgende commando enable server 12. Je zult zien als de status op vraagt dat inde kolom S nu een e staat bij server 12 | |||
<pre> | |||
LB1# enable server 12 | |||
LB1# show server | |||
no ipaddr ipaddr6 port prt net net6 sessions S targets backups | |||
-- -------------- --------------------------- ---- --- --- ---- -------- - ------- ------- | |||
1 212.72.227.80 2a02:968:1:7:212:72:227:80 80 tcp 1 0 2 e 1,2 | |||
2 172.31.1.100 - 3306 tcp 2 0 486 e 3 4 | |||
3 212.72.229.101 2a02:968:1:1:212:72:229:101 80 tcp 3 0 100 e 5,6 | |||
4 212.72.229.101 2a02:968:1:1:212:72:229:101 443 tcp 3 0 22 e 7,8 | |||
5 172.31.1.101 - 3306 tcp 2 0 9 e 9 10 | |||
6 212.72.227.82 2a02:968:1:7:212:72:227:82 80 tcp 1 0 2 e 11,12 | |||
7 212.72.227.82 2a02:968:1:7:212:72:227:82 443 tcp 1 0 0 e 13,14 | |||
8 212.72.227.80 2a02:968:1:7:212:72:227:80 443 tcp 1 0 0 e 15,16 | |||
9 212.72.229.102 2a02:968:1:1:212:72:229:102 80 tcp 3 0 128 e 5,6 | |||
10 212.72.229.102 2a02:968:1:1:212:72:229:102 443 tcp 3 0 40 e 7,8 | |||
11 212.72.229.103 2a02:968:1:1:212:72:229:103 80 tcp 3 0 3 e 5,6 | |||
12 212.72.229.103 2a02:968:1:1:212:72:229:103 443 tcp 3 0 0 e 7,8 | |||
</pre> | |||
= status van trages bekijken = | = status van trages bekijken = | ||
= target uitschakelen = | = target uitschakelen = |
Revision as of 20:42, 25 September 2011
doel
De loadbalancer zorgt er voor dat bij voorbeeld een webdienst redundant uitgevoerd kan worden. De loadbalancer zelf is ook redundant uitgevoerd.
opzet
We hebben 2 loadbalancers, ieder draait op een andere ESXi server voor redundantie. Als de ene loadbalancer faalt neemt de andere het over. Daarnaast zorgt de actieve loadbalancer er voor dat verkeer over de webservers wordt verspreid. Als er een webserver uitvalt wordt deze uit de pool gehaald, waardoor de webdienst zelf gewoon bereikbaar blijft, zij het op maar één server.
normale situatie
Dit geeft weer hoe in normale situaties het verkeer loopt.
webserver faalt
Dit geeft weer hoe het verkeer loopt wanneer een webserver faalt.
loadbalancer faalt
Dit geeft weer hoe het verkeer loopt wanneer een loadbalancer faalt.
IP plan
212.72.227.80 t/m 212.72.227.90 vip01 t/m vip11 (virtuele IP adressen voor diensten die gebalanced worden)
212.72.227.91 lb1-bip.hobby.nl (IP adres voor loadbalancer zelf)
212.72.227.92 lb2-bip.hobby.nl (IP adres voor loadbalancer zelf)
212.72.227.93 lb1.hobby.nl (IP adres voor het OS van de loadbalancer)
212.72.227.94 lb2.hobby.nl (IP adres voor het OS van de loadbalancer)
Voor alle genoemde IPv4 adressen, is er ook een IPv6 adres in de stijl die we bij Hobbynet hanteren: 212.72.227.80 wordt 2a02:968:1:7:212:72:227:80.
configuratie
termen
Hieronder een overzicht van termen die in de configuratie worden gebruikt en mogelijk verwarrend zijn.
- server
Dit is de kant waar, via virtuele IP adressen, de webserver draait en waar de client mee communiceert.
- target
Dit zijn bijvoorbeeld de webservers die in één balanced pool zitten
- VRRP
Dit is het protocol dat zorgt voor de master slave setup, ook wel hartbeat protocol genoemd
- network
Hier staat gedefinieerd met welk IP adres (en subnet) de loadbalancer in een bepaald subnet hangt.
Let op: de loadbalancer heeft zijn eigen IP adressen die los staan van het OS
config files
De configuratie bestanden mogen nooit met de hand ge-edit worden. Dit dient altijd te gebeuren door middel van de loadbalancer command prompt. Deze kan je benaderen door met ssh in te loggen op een loadbalancer en als root het commando te geven bng control
Elke configuratiewijziging moet op beide loadbalancers doorgevoerd worden. Dit wordt helaas niet vanzelf gerepliceerd.
Ook moet je elke wijziging, min of meer zoals bij Cisco, opslaan door het commando save all te gebruiken.
nieuwe server aanmaken/aanpassen/bekijken
Een server en een target moeten in het zelfde subnet zitten ivm routering
aanmaken
In dit voorbeeld gaan we de server configureren voor een webserver. Dit doen we als volgt via de loadbalancer command prompt:
bng control LB1# server 2 name vip2 LB1# server 2 ipaddr 212.72.227.81 LB1# server 2 ipaddr6 2a02:968:1:7:212:72:227:81 LB1# server 2 port 80 LB1# server 2 protocol tcp LB1# server 2 sessionid src+port LB1# server 2 method session LB1# server 2 targets 2,3
Hierna willen we deze configuratie doorvoeren en activeren. Dit doen we door het commando:
commit server 2
bekijken
Nu willen we kijken of de configuratie goed is. Dit kan je door het show server commando te geven.
LB1#show server (of sh server 2 als je alleen server 2 wil zien) no ipaddr ipaddr6 port prt net net6 sessions S targets backups -- ------------- -------------------------- ---- --- --- ---- -------- - ------- ------- 1 212.72.227.80 2a02:968:1:7:212:72:227:80 80 tcp 1 0 0 e 1,2 2 212.72.227.81 2a02:968:1:7:212:72:227:81 80 tcp 1 0 0 e 2,[3] LB1# show server 2 no ipaddr ipaddr6 port prt net net6 sessions S targets backups -- ------------- -------------------------- ---- --- --- ---- -------- - ------- ------- 2 212.72.227.81 2a02:968:1:7:212:72:227:81 80 tcp 1 0 0 e 2,[3]
aanpassen
In het vorige voorbeeld hebben we 2 foutjes gemaakt die willen we herstellen. Voordat we dat doen moeten we eerst de server disablen en de-registeren:
dat doe je als volgt:
LB1# dis server 2 LB1# unreg server 2
Wat we willen aanpassen is de naam van de server. Die is nu vip2 die moet zijn vip02. Ga als volgt te werk:
LB1# server 2 name vip02
Daarna willen we de target nog aanpassen naar 3 en 4 in plaats van 2 en 3:
LB1# server 2 target 3,4
Ook hier na moeten we weer een commit doen echter krijgen we nu wel een foutmelding:
LB1# commit server 2 ERROR: WARNING: server 2 references unregistered target 3 ERROR: WARNING: server 2 references unregistered target 4
dit komt om dat target 3 en 4 nog niet bestaan.
nieuwe target aanmaken/aanpassen/bekijken
Een server en een target moeten in het zelfde subnet zitten ivm routering
aanmaken
configuratie op de loadbalancer
Dit gaat vrijwel identiek aan het configureren van de server:
target 2 name www-test-lb2 target 2 ipaddr 212.72.227.69 target 2 ipaddr6 2a02:968:1:7:212:72:227:69 target 2 port 80 target 2 protocol tcp target 2 ping 3,10 target 2 ping6 3,10 target 2 agent6 10000,3,10 target 2 sessionid dst+port target 2 dsr enable
Hierna moet ook weer een commit gedaan worden:
commit target 2
configuratie op de target
Op de target in kwestie moeten een aantal wijzigingen worden doorgevoerd om alles goed te laten werken.
sysctl.conf
de volgende regels moeten aan sysctl.conf worden toegevoegd:
net.ipv4.conf.all.arp_ignore=1 net.ipv4.conf.all.arp_announce=2
Deze hierna activeren door middel van het commando sysctl -p
loopback interface
Om te zorgen dat de target naar het IP adres (vip) van de loadbalancer luistert, moet er een loopback interface worden aangemaakt met het vip van de loadbalancer:
iface lo inet6 static address 2a02:968:1:7:212:72:227:80 netmask 128 auto lo:0 iface lo:0 inet static address 212.72.227.80 netmask 255.255.255.255
Interface lo heeft geen auto erbij staan omdat die al default boven aan de interfaces config staat.
BNG agent
De bng agent wordt gebruikt om diverse controles uit te voeren en bij te houden hoe zwaar de server wordt belast. Dit wordt vervolgens uitgelezen door de loadbalancer. Deze agent kan je voor zowel 32 bit als 64 bit vinden in de /sbin directory op LB1 en natuurlijk LB2
- /sbin/bngagent-Linux-i386 is de 32 bit
- /sbin/bngagent-Linux-amd64 is de 64 bit
Eén van deze twee moet je naar de target kopiëren. Hierna moet je de volgende regel toevoegen onderaan de lo:0 interface:
up /sbin/bngagent-Linux-amd64 -6 10000
Dit zorgt er voor dat wanneer de interface up gaat, de agent wordt gestart en dat deze luistert op IPv6 op port 10000/udp. Dit verkeer moet dus ook doorgelaten worden door de firewall.
bekijken
door middel van het show commando kan je zien hoe een target erbij staat:
LB1# show target no ipaddr ipaddr6 port prt net net6 srv sessions status info name -- ------------- -------------------------- ---- --- --- ---- --- -------- ----------- --------------------------------------- ------------ 1 212.72.227.68 2a02:968:1:7:212:72:227:68 80 tcp 1 1 1 0 operational arp:up,nd6:up,ping:up,ping6:up,agent6:1 www-test-lb1 2 212.72.227.69 2a02:968:1:7:212:72:227:69 80 tcp 1 1 1 0 operational arp:up,nd6:up,ping:up,ping6:up,agent6:1 www-test-lb2
Zoals je hier kan zien is de gehele pool (alle targets) up en operationeel.
aanpassen
Het aanpassen gaat hetzelfde als bij de server. We gaan nu nog een extra monitoring script voor http toevoegen zodat we zeker weten dat webserver draait.
LB1# dis target 1 LB1# unreg target 1 LB1# target 1 script "/usr/lib/mon/mon.d/http.monitor -p $port$ -u /index.html $ipaddr$",2,7 LB1# commit target 1 LB1# dis tar 2 LB1# unreg tar 2 LB1# tar 2 script "/usr/lib/mon/mon.d/http.monitor -p $port$ -u /index.html $ipaddr$",2,7 LB1# com tar 2
Als we nu controle doen met show target zul je zien dat er een extra controle bij staat (onder script):
LB1# sh target no ipaddr ipaddr6 port prt net net6 srv sessions status info name -- ------------- -------------------------- ---- --- --- ---- --- -------- ----------- -------------------------------------------------- ------------ 1 212.72.227.68 2a02:968:1:7:212:72:227:68 80 tcp 1 1 1 0 operational arp:up,nd6:up,ping:up,ping6:up,agent6:14,script:up www-test-lb1 2 212.72.227.69 2a02:968:1:7:212:72:227:69 80 tcp 1 1 1 0 operational arp:up,nd6:up,ping:up,ping6:up,agent6:8,script:up www-test-lb2
configuratie opslaan
- Vergeet niet om de wijzigingen op te slaan:
LB1# save all
- Vergeet niet om de aanpassingen op beide loadbalancers aan te brengen
VRRP
VRRP is het protocol waarmee wordt geregeld welke loadbalancer de master is en welke de slave.
Met show vrrp kan je zien of de loadbalancer waar je op bent ingelogd master of slave is.
Door commando stop te geven zet je de loadbalancer uit en wordt de master taak overgedragen aan de andere loadbalancer.
Vanaf de ssh command prompt kan je weer starten met bng start of service bng start.
LB2# sh vrrp state BACKUP vrid 9 (0x09) priority 200 ipaddr0 ::ffff:212.72.227.80 ipaddr1 2a02:968:1:7:212:72:227:80
status van servers bekijken
dit doe je met commando show servers vanaf bng command prompt
LB1# show servers no ipaddr ipaddr6 port prt net net6 sessions S targets backups -- -------------- --------------------------- ---- --- --- ---- -------- - ------- ------- 1 212.72.227.80 2a02:968:1:7:212:72:227:80 80 tcp 1 0 2 e 1,2 2 172.31.1.100 - 3306 tcp 2 0 509 e 3 4 3 212.72.229.101 2a02:968:1:1:212:72:229:101 80 tcp 3 0 85 e 5,6 4 212.72.229.101 2a02:968:1:1:212:72:229:101 443 tcp 3 0 24 e 7,8 5 172.31.1.101 - 3306 tcp 2 0 9 e 9 10 6 212.72.227.82 2a02:968:1:7:212:72:227:82 80 tcp 1 0 2 e 11,12 7 212.72.227.82 2a02:968:1:7:212:72:227:82 443 tcp 1 0 0 e 13,14 8 212.72.227.80 2a02:968:1:7:212:72:227:80 443 tcp 1 0 0 e 15,16 9 212.72.229.102 2a02:968:1:1:212:72:229:102 80 tcp 3 0 134 e 5,6 10 212.72.229.102 2a02:968:1:1:212:72:229:102 443 tcp 3 0 39 e 7,8 11 212.72.229.103 2a02:968:1:1:212:72:229:103 80 tcp 3 0 2 e 5,6 12 212.72.229.103 2a02:968:1:1:212:72:229:103 443 tcp 3 0 0 e 7,8
server uitschakelen
Stel we willen server 12 uitschakelen dan doe je dat met volgende commando disable server 12. Je zult zien dat inde kolom S nu een D staat bij server 12
LB1# disable server 12 LB1# show server no ipaddr ipaddr6 port prt net net6 sessions S targets backups -- -------------- --------------------------- ---- --- --- ---- -------- - ------- ------- 1 212.72.227.80 2a02:968:1:7:212:72:227:80 80 tcp 1 0 2 e 1,2 2 172.31.1.100 - 3306 tcp 2 0 499 e 3 4 3 212.72.229.101 2a02:968:1:1:212:72:229:101 80 tcp 3 0 100 e 5,6 4 212.72.229.101 2a02:968:1:1:212:72:229:101 443 tcp 3 0 25 e 7,8 5 172.31.1.101 - 3306 tcp 2 0 9 e 9 10 6 212.72.227.82 2a02:968:1:7:212:72:227:82 80 tcp 1 0 2 e 11,12 7 212.72.227.82 2a02:968:1:7:212:72:227:82 443 tcp 1 0 0 e 13,14 8 212.72.227.80 2a02:968:1:7:212:72:227:80 443 tcp 1 0 0 e 15,16 9 212.72.229.102 2a02:968:1:1:212:72:229:102 80 tcp 3 0 133 e 5,6 10 212.72.229.102 2a02:968:1:1:212:72:229:102 443 tcp 3 0 39 e 7,8 11 212.72.229.103 2a02:968:1:1:212:72:229:103 80 tcp 3 0 3 e 5,6 12 212.72.229.103 2a02:968:1:1:212:72:229:103 443 tcp 3 0 0 D 7,8
server inschakelen
Stel we willen server 12 inschakelen dan doe je dat met volgende commando enable server 12. Je zult zien als de status op vraagt dat inde kolom S nu een e staat bij server 12
LB1# enable server 12 LB1# show server no ipaddr ipaddr6 port prt net net6 sessions S targets backups -- -------------- --------------------------- ---- --- --- ---- -------- - ------- ------- 1 212.72.227.80 2a02:968:1:7:212:72:227:80 80 tcp 1 0 2 e 1,2 2 172.31.1.100 - 3306 tcp 2 0 486 e 3 4 3 212.72.229.101 2a02:968:1:1:212:72:229:101 80 tcp 3 0 100 e 5,6 4 212.72.229.101 2a02:968:1:1:212:72:229:101 443 tcp 3 0 22 e 7,8 5 172.31.1.101 - 3306 tcp 2 0 9 e 9 10 6 212.72.227.82 2a02:968:1:7:212:72:227:82 80 tcp 1 0 2 e 11,12 7 212.72.227.82 2a02:968:1:7:212:72:227:82 443 tcp 1 0 0 e 13,14 8 212.72.227.80 2a02:968:1:7:212:72:227:80 443 tcp 1 0 0 e 15,16 9 212.72.229.102 2a02:968:1:1:212:72:229:102 80 tcp 3 0 128 e 5,6 10 212.72.229.102 2a02:968:1:1:212:72:229:102 443 tcp 3 0 40 e 7,8 11 212.72.229.103 2a02:968:1:1:212:72:229:103 80 tcp 3 0 3 e 5,6 12 212.72.229.103 2a02:968:1:1:212:72:229:103 443 tcp 3 0 0 e 7,8
status van trages bekijken
target uitschakelen
target inschakelen
handige links
De site van de maker van BalanceNG
handleiding
licentie
lb1
Serial Number: HCC1108311 Node-Id: 34:28:7b:55:d1:e0 License Key: 6dae39cb4cb4011378423870d571e675 Password: 3421773
lb2
Serial Number: HCC1108312 Node-Id: df:5f:93:c8:c9:43 License Key: 7cb771613679c5d634822c9b06068fe3 Password: 3421773