Loadbalancers: Difference between revisions
(→vrrp) |
|||
Line 165: | Line 165: | ||
Door commando stop te geven zet je de loadbalancer uit en wordt de master taak overgedragen aan de andere loadbalancer.<br> | Door commando stop te geven zet je de loadbalancer uit en wordt de master taak overgedragen aan de andere loadbalancer.<br> | ||
Vanaf de ssh command prompt kan je weer start met bng start of service bng start | Vanaf de ssh command prompt kan je weer start met bng start of service bng start | ||
<pre> | |||
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 | |||
</pre> | |||
=handige links= | =handige links= |
Revision as of 14:25, 3 September 2011
doel
De loadbalancer zorgen er voor dat bij voorbeeld een webdienst redundant uitgevoerd kan worden. De loadbalancer zelf is ook redundant uitgevoerd.
opzet
We hebben 2 loadbalancer ieder draait op een andere ESXi server in kader van de redundantie. Als de ene faalt neemt de andere het over. Daarnaast zorgt de loadbalancer dat verkeer over de webservers wordt verspreid en als er webserver uitvalt wordt deze uit de pool gehaald waar door de webdienst gewoon bereikbaar blijft.
ip plan
212.72.227.80 t/m 212.72.227.90 vip01 t/m vip11 (virtuele ips voor diensten die geloadblanced worden)
212.72.227.91 lb1-bip.hobby.nl (ip voor loadbalancer zelf)
212.72.227.92 lb2-bip.hobby.nl (ip voor loadbalancer zelf)
212.72.227.93 lb1.hobby.nl (ip voor het os van de loadbalancer)
212.72.227.94 lb2.hobby.nl (ip voor het os van de loadbalancer)
Voor alle IPv4 addressen is soort gelijk IPv6 adres bijvoorbeeld 212.72.227.80 wordt 2a02:968:1:7:212:72:227:80
configuratie
termen
Hier onder een overzicht van termen die in de configuratie worden gebruikt en mogelijk verwarend zijn.
- server (Dit is kant waar op virtuele ip draait en waar de client naar toe communiseerd.)
- target (Dit zijn bijvoorbeeld de webserver die in een pool zitten voor loadbalansing)
- vrrp ( Dit is het protocol dat zorgt voor de master slave setup)
- network ( Hier staat gedefineerd met welk ip en subnet de loadbalancer in bepaald subnet hangt de loadbalancer heeft zijn eigen ips die los staan van het os)
config files
De configuratie bestanden mogen nooit met de hand worden geedit worden, dit dient altijd te gebeuren door middel van loadbalncer command prompt deze kan je benader door met ssh in te loggen op een loadbalancer en als root het commando te geven bng control
Elke configuratie wijziging moet op alle 2 loadbalancer door gevoerd worden dit wordt helaas niet gerepliseerd
Ook moet je elke door gevoerde wijzigen net als bij cisco op slaan dit doe je door commando save all
nieuwe server aanmaken/editen/bekijken
aanmaken
In dit voorbeeld gaan we server configureren voor een webserver dit doen we als volgt als we een maal op loadbalancer command prompt zitten:
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
Hier naar willen we deze configuratie door voeren en activeren dit doen we door het commando commit server 2
bekijken
Nu willen we kijken of de configuratie goed is door gevoerd. dit kan je door volgende commando te geven show server of sh server 2 (als je alleen server 2 wil zien):
LB1# sh 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 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# sh 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]
editen
In het vorige voorbeeld hebben we 2 foutjes gemaakt die willen we herstelen voor dat we dat doen moet we eerst de server disablen en de registeren: dat doe je als volgt:
LB1# dis server 2 LB1# unreg server 2
Wat willen aan passen is de naam van server die is nu vip2 die moet zijn vip02 datdoe je als volgt:
LB1# server 2 name vip02
Daarna willen we target nog aanpassen 3 en 4 inplaats van 2 en 3 dat gaat als volgt:
LB1# server 2 target 3,4
Ook hier na moeten we weer een commit doen echter krijgen we nu wel melding
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/editen/bekijken
aanmaken
configuratie op de loadbalancer
Dit gaat vrijwel indentiek configureren van server maar gaat als volgt:
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
Hier na moet ook weer een commit gedaan worden door middel van commit target 2
configuratie op de server
Op de target in kwestie moeten een aantal wijzigen worden door gevoerd om alles goed te laten werken
sysctl.conf
de volgende regels moet aan sysctl.conf worden toegevoegd:
net.ipv4.conf.all.arp_ignore=1 net.ipv4.conf.all.arp_announce=2
deze kan hier na activteren door middel van het commando sysctl -p
loopback interface
Om te zorgen dat server naar het ip (vip) van de loadbalancer luistert moet er een loopback interface worden aan gemaakt met ip(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 er bij staan om dat die al default boven aan de interfaces config staat
BNG agent
De bng agent wordt gebruikt om diverse controles uitvoeren en bij te houden hoe zwaar de server wordt belast dit wordt ver volgens uit gelezen door de loadbalancer.Deze kan je voor zowel 32 bit als 64 bit vinden in de /sbin directory op LB1 en LB2
- /sbin/bngagent-Linux-i386 is de 32 bit
- /sbin/bngagent-Linux-amd64 is de 64 bit
1 van deze 2 agents moet je naar de target kopieren hier na moet je de volgende regel toevoegen onderaan de lo:0 interface
up /sbin/bngagent-Linux-amd64 -6 10000
Dit zorgt er voor dat waneer de interface up de agent wordt gestart en dat luisterd op ipv6 op port 10000 udp. Dit moet dus ook door laten in de firewall.
bekijken
door middel van het show commando kan zien hoe een target voor staat
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: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 zijn ze allemaal up en operationeel
editen
Het editen gaat het zelfde als bij 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
En als we nu controle doen met show target zul je zien dat 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
vrrp
vrrp is het protocol waar mee er wordt geregeled welke loadbalancer de master is en welke de slave.
met show vrrp kan 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 start 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
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