Loadbalancers: Difference between revisions
No edit summary |
|||
Line 2: | Line 2: | ||
De loadbalancer zorgt er voor dat onze webdiensten redundant uitgevoerd worden. | De loadbalancer zorgt er voor dat onze webdiensten redundant uitgevoerd worden. | ||
= OPGELET = | = OPGELET = | ||
''' heel belangrijk ''' de loadbalancer mag je nooit | ''' heel belangrijk ''' de loadbalancer mag je nooit migreren als ze aan staan, hierdoor krijg je een 'split brain' situatie | ||
Dit is dan ook geblokkeerd in vmware zoals omschreven hier https://frankdenneman.nl/2014/08/18/disable-vmotion-single-vm/ met 1 aanpassing query mag wel en vmotion als uit staat mag wel | Dit is dan ook geblokkeerd in vmware zoals omschreven hier https://frankdenneman.nl/2014/08/18/disable-vmotion-single-vm/ met 1 aanpassing query mag wel en vmotion als uit staat mag wel | ||
=opzet= | =opzet= | ||
We hebben 2 | We hebben 2 virtuele loadbalancers: loadbalancer1 en loadbalancer2. Elk draait op een andere hypervisor te weten vmware4 en vmware5 | ||
== normale situatie == | == normale situatie == | ||
Line 64: | Line 63: | ||
=configuratie= | =configuratie= | ||
== termen == | == termen == | ||
* Virtual service De dienst die geloadbalanced wordt (dit layer 4 of layer 7 zijn) | * Virtual service : De dienst die geloadbalanced wordt (dit kan layer 4 of layer 7 zijn) | ||
Configuratie gebeurt altijd via de webinterface. Enkel bij hele uitzonderlijke gevallen moet je wat via SSH doen. | |||
De loadbalancers zijn te bereiken via: | De loadbalancers zijn te bereiken via: | ||
* https://loadbalancer1-int.hobby.nl:9443/ | * https://loadbalancer1-int.hobby.nl:9443/ | ||
* https://loadbalancer2-int.hobby.nl:9443/ | * https://loadbalancer2-int.hobby.nl:9443/ | ||
== ssh toegang == | == ssh toegang == | ||
SSH keys kunnen toegevoegd worden, dit vereist echter strak formaat namelijk | SSH keys kunnen toegevoegd worden, dit vereist echter strak formaat namelijk | ||
ssh-rsa <snip> je key </snip> bas@een.domein.nl | ssh-rsa <snip> je key </snip> bas@een.domein.nl | ||
Het is heel belangrijk dat je key in dit formaat is, ook ben je verplicht een hostnaam in te geven, gebruik | Het is heel belangrijk dat je key in dit formaat is, ook ben je verplicht een hostnaam in te geven, gebruik daarvoor gewoon je naam dit moet namelijk uniek zijn.<br> | ||
'''Key's mogen niet met de hand worden toegevoegd via SSH !''' | '''Key's mogen niet met de hand worden toegevoegd via SSH !'''<br> | ||
Je kan in de loadbalancer onder Local Configuration -> SSH Keys en dan het tab SSH Authentication | Je kan in de loadbalancer onder Local Configuration -> SSH Keys en dan het tab SSH Authentication | ||
'''Configuratie van dit onderdeel moet je op beide | '''Configuratie van dit onderdeel moet je op beide loadbalancers doen want dit wordt niet gerepliceerd!''' | ||
= Direct routing = | = Direct routing = | ||
Op dit moment maken we nog gebruik van direct routing, dit wil zeggen dat de loadbalancer het inkomend verkeer door stuurt naar server en de server stuurt zelf het antwoord door naar de client. | Op dit moment maken we nog gebruik van direct routing, dit wil zeggen dat de loadbalancer het inkomend verkeer door stuurt naar de server en de server stuurt zelf het antwoord door naar de client. | ||
== standaard setup == | == standaard setup == | ||
Standaard gebruiken wij een setup | Standaard gebruiken wij een setup waarbij altijd de load over meerdere servers verspreid wordt | ||
=== instellen van Virtual service layer 4 === | === instellen van Virtual service layer 4 === | ||
==== van scratch ==== | ==== van scratch ==== | ||
Ga naar cluster configuration -> layer 4 - virtual services en klik daar op 'Add a new Virtual Service' | Ga naar cluster configuration -> layer 4 - virtual services en klik daar op 'Add a new Virtual Service' | ||
* 1) Vul hier de naam van virtual service in. Standaard is dat VIP(nr) naam.url.nl-v4 (of v6 bij IPv6) ('''let op: geen spatie tussen vip en het nummer van de vip''') | |||
* 2) Het IP-adres wat aan de buitenkant wordt gebruikt | |||
* 1) Vul hier de naam van virtual service | |||
* 2) Het | |||
* 3) De poort nummers voor web standaard 80,443 je mag meer poort nummers opgeven door te scheiden met een , | * 3) De poort nummers voor web standaard 80,443 je mag meer poort nummers opgeven door te scheiden met een , | ||
Klik op update | Klik op update | ||
Line 97: | Line 100: | ||
Herhaal de bovenstaande stappen voor het IPv6 adres | Herhaal de bovenstaande stappen voor het IPv6 adres | ||
Nu moeten we nog bestemming toevoegen waar moet het verkeer naar toe worden gerouteerd. | Nu moeten we nog bestemming toevoegen : waar moet het verkeer naar toe worden gerouteerd. | ||
Ga naar cluster configuration -> layer 4 - Real Servers | Ga naar cluster configuration -> layer 4 - Real Servers<br> | ||
Zoek daar je Virtual service op en klik op modify | Zoek daar je Virtual service op en klik op modify | ||
Tip je standaard staat de Virtual service die je net hebt gemaakt onderaan | Tip je standaard staat de Virtual service die je net hebt gemaakt onderaan<br> | ||
Klik op 'Add a new Real Server" bij de Virtual service die we net hebben aangemaakt | Klik op 'Add a new Real Server" bij de Virtual service die we net hebben aangemaakt | ||
1) Zet naam van de bestemming neer dit geval Joomla-lb1-v4 (of v6 bij IPv6) | 1) Zet naam van de bestemming neer dit geval Joomla-lb1-v4 (of v6 bij IPv6) | ||
2) Vul het | 2) Vul het IP-adres van de bestemming in | ||
3) Klik op update | 3) Klik op update | ||
Line 112: | Line 115: | ||
Indien het hier geen fallback scenario betreft herhaal de bovenstaande stap voor de 2e bestemming | Indien het hier geen fallback scenario betreft herhaal de bovenstaande stap voor de 2e bestemming | ||
Herhaal deze stappen voor IPv6 virtual service | Herhaal deze stappen voor IPv6 virtual service | ||
===== fallback scenario ===== | ===== fallback scenario ===== | ||
Bij fallback senario wil je dat verkeer standaard op 1e server uitkomt behalve wanneer deze er niet is | Bij fallback senario wil je dat verkeer standaard op 1e server uitkomt, behalve wanneer deze er niet is. Bijvoorbeeld bij mail en de xml-rpc server, in dit geval voeg je '''geen''' 2e realserver toe. | ||
Ga terug naar cluster configuration -> layer 4 - virtual services, zoek je virtual service op en klik op modify | Ga terug naar cluster configuration -> layer 4 - virtual services, zoek je virtual service op en klik op modify<br> | ||
TIP boven in zit zoek veld | TIP boven in zit zoek veld | ||
* Zoek de sectie 'Fallback Server' op | * Zoek de sectie 'Fallback Server' op | ||
* Vul het | * Vul het IP-adres in van de fallback server in, laat de overige velden leeg | ||
* klik op update | * klik op update | ||
Herhaal deze stappen voor IPv6 virtual service | Herhaal deze stappen voor IPv6 virtual service | ||
Line 129: | Line 134: | ||
Maar dit alles kan ook veel makkelijker, als er alleen vip is die de zelfde bestemming heeft etc etc | Maar dit alles kan ook veel makkelijker, als er alleen vip is die de zelfde bestemming heeft etc etc | ||
Ga terug naar cluster configuration -> layer 4 - virtual services, zoek je virtual service op die je kopiëren en klik op modify | Ga terug naar cluster configuration -> layer 4 - virtual services, zoek je virtual service op die je kopiëren en klik op modify <br> | ||
Zie afbeelding 5 rechts | Zie afbeelding 5 rechts<br> | ||
Klik op Duplicate service | Klik op Duplicate service | ||
[[File:Duplicate service.png|600px]] | [[File:Duplicate service.png|600px]] | ||
Negeer de waarschuwing is melding dat toevoeging heeft gedaan zodat er geen | Negeer de waarschuwing is melding dat toevoeging heeft gedaan zodat er geen dubbele namen zijn | ||
* 1) Vervang hier de naam van virtual service | * 1) Vervang hier de naam van virtual service. Standaard is dat VIP(nr) naam.url.nl-v4 (of v6 bij IPv6) ('''let op : geen spatie tussen vip en het nummer van de vip''') | ||
* 2) Vervang het | * 2) Vervang het IP-adres wat aan de buitenkant wordt gebruikt | ||
* 3) Controleer de | * 3) Controleer de poortnummers voor web standaard 80,443 je mag meer poortnummers opgeven door te scheiden met een ,<br> | ||
Klik op update | Klik op update<br> | ||
Herhaal deze stappen voor IPv6 virtual service | Herhaal deze stappen voor IPv6 virtual service | ||
Line 146: | Line 151: | ||
= firewall lock down script = | = firewall lock down script = | ||
Het standaard lockdownscript (de term die in de loadbalancer wordt gebruikt) is aangepast met de volgende de aanpassingen: | Het standaard lockdownscript (de term die in de loadbalancer wordt gebruikt) is aangepast met de volgende de aanpassingen: | ||
* Onze | * Onze VPN IP-reeksen toegevoegd als admin reeksen | ||
* Voor | * Voor SNMP is aparte chain aangemaakt | ||
* | * Al het SNMP verkeer dat niet het IP-adres (eth0) van de loadbalancer is wordt gereject | ||
Hier vindt je kopie van het huidige lockdown script van 28-09-2020 10:00 | Hier vindt je kopie van het huidige lockdown script van 28-09-2020 10:00 | ||
[[File:Lockdownscript.txt]] | [[File:Lockdownscript.txt]] | ||
Dit script kan je bewerken via Maintenance -> Firewall Lock Down Wizzard | Dit script kan je bewerken via Maintenance -> Firewall Lock Down Wizzard<br> | ||
Met 'Modify the firewall lock down wizard script' pas je het script aan. | Met 'Modify the firewall lock down wizard script' pas je het script aan. <br> | ||
Met 'Update Firewall lockdown' wordt het de firewall herladen | Met 'Update Firewall lockdown' wordt het de firewall herladen <br> | ||
Standaard wordt | Standaard wordt het IP-adres waarmee je bent ingelogd ingevuld bij 'Administration subnet'. Dit is om te zorgen dat je er altijd weer in kan als je een foutje hebt gemaakt. | ||
'''Configuratie van dit onderdeel moet je op beide loadbalancers doen want dit wordt niet gerepliceerd!''' | |||
= backup = | = backup = | ||
Elke dag | Elke dag backuppen we om 22:00 | ||
== ssh_config aanpassing == | == ssh_config aanpassing == | ||
Omdat de loadbalancer heel veel | Omdat de loadbalancer heel veel IP-adressen heeft zou het script ad random een IP-adres uitzoeken en dat gaat natuurlijk fout. Daarom hebben we een source IP-adres gespecificeerd. In /etc/ssh/ssh_config zijn daarom volgende regels toegevoegd: | ||
<pre> | <pre> | ||
host backup2bit-int.hobby.nl | host backup2bit-int.hobby.nl | ||
Line 169: | Line 176: | ||
= handleidingen= | = handleidingen= | ||
Deze vind je in de loadbalancer onder support -> Useful Links | Deze vind je in de loadbalancer onder support -> Useful Links | ||
= uitzonderingen = | = uitzonderingen = | ||
Voor dbadmin*.hobby.nl en vraagbaak.hcc.nl is er uitzondering daar wordt geen applicatie | Voor dbadmin*.hobby.nl en vraagbaak.hcc.nl is er uitzondering daar wordt geen applicatie cookie gebruikt voor Persistence Mode, maar het source IP-adres, de applicatie kan er niet tegen | ||
= LET OP update instructies = | = LET OP : update instructies = | ||
1. schakel master uit | 1. schakel master uit | ||
2. maak snapshot in vmware van master | 2. maak snapshot in vmware van master | ||
Line 182: | Line 190: | ||
8. maak via web interface backup van alle bestanden en download die op master | 8. maak via web interface backup van alle bestanden en download die op master | ||
9. maak via web interface backup van alle bestanden en download die op slave (zodra slave weer volledig operationeel is) | 9. maak via web interface backup van alle bestanden en download die op slave (zodra slave weer volledig operationeel is) | ||
10. maak slave master (login op slave vouw groene vlak open en klik op take over) | 10. maak slave master (login op slave, vouw groene vlak open en klik op take over) | ||
11. update master via Maintenance -> software update en kies voor online update | 11. update master via Maintenance -> software update en kies voor online update | ||
12. maak master weer master (login op slave vouw groene vlak open en klik op take over) als dat niet al vanzelf is | 12. maak master weer master (login op slave, vouw groene vlak open en klik op take over) als dat niet al vanzelf is gebeurd | ||
11. update slave via Maintenance -> software update en kies voor online update | 11. update slave via Maintenance -> software update en kies voor online update | ||
12. Zet reminder in OTRS om snap shots te verwijderen na 4 dagen | 12. Zet reminder in OTRS om snap shots te verwijderen na 4 dagen (dit kan terwijl machines online zijn) | ||
== aandachts punten == | == aandachts punten == | ||
1. altijd dienen master en slave direct na elkaar te worden geupdate | 1. altijd dienen master en slave direct na elkaar te worden geupdate | ||
2. het maken van het snapshot moet gebeuren als de | 2. het maken van het snapshot moet gebeuren als de VM uit staat ! dit komt om dat de VM vertraagd wordt tijdens het maken van het snapshot waardoor hij meerdere keren gaat overschakelen naar slave en weer terug. | ||
3. Mocht de update mislukken kan met paar klikken terug naar het snapshot wat je voor de update hebt gemaakt. | 3. Mocht de update mislukken kan met paar klikken terug naar het snapshot wat je voor de update hebt gemaakt. |
Revision as of 15:49, 29 December 2020
doel
De loadbalancer zorgt er voor dat onze webdiensten redundant uitgevoerd worden.
OPGELET
heel belangrijk de loadbalancer mag je nooit migreren als ze aan staan, hierdoor krijg je een 'split brain' situatie
Dit is dan ook geblokkeerd in vmware zoals omschreven hier https://frankdenneman.nl/2014/08/18/disable-vmotion-single-vm/ met 1 aanpassing query mag wel en vmotion als uit staat mag wel
opzet
We hebben 2 virtuele loadbalancers: loadbalancer1 en loadbalancer2. Elk draait op een andere hypervisor te weten vmware4 en vmware5
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.224 IP reeks (eth1)
212.72.224.240 2a02:968:1:2:212:72:224:240 loadbalancer1-vlan100.hobby.nl (IP adressen voor loadbalancer zelf) 212.72.224.241 2a02:968:1:2:212:72:224:241 loadbalancer2-vlan100.hobby.nl (IP adressen voor loadbalancer zelf)
212.72.227 IP reeks (eth3)
212.72.227.88 en 2a02:968:1:7:212:72:227:88 loadbalancer1-vlan107.hobby.nl (IP adressen voor loadbalancer zelf) 212.72.227.89 en 2a02:968:1:7:212:72:227:89 loadbalancer2-vlan107.hobby.nl (IP adressen voor loadbalancer zelf)
212.72.229 IP reeks (eth2)
212.72.229.240 2a02:968:1:1:212:72:229:240 loadbalancer1-vlan102.hobby.nl (IP adressen voor loadbalancer zelf) 212.72.229.241 2a02:968:1:1:212:72:229:241 loadbalancer2-vlan102.hobby.nl (IP adressen voor loadbalancer zelf)
172.31.1 IP reeks (eth0)
172.31.1.240 2a02:968:ffff:999:172:31:1:240 loadbalancer1-vlan999.hobby.nl (IP adressen voor loadbalancer zelf) 172.31.1.241 2a02:968:ffff:999:172:31:1:241 loadbalancer2-vlan999.hobby.nl (IP adressen voor loadbalancer zelf)
172.31.254 IP reeks (eth5)
172.31.254.240 2a02:968:ffff:997:172:31:254:240 loadbalancer1-vlan997.hobby.nl (IP adressen voor loadbalancer zelf) 172.31.254.241 2a02:968:ffff:997:172:31:254:241 loadbalancer2-vlan997.hobby.nl (IP adressen voor loadbalancer zelf)
dns aliassen
Via interne netwerk zijn de dns aliassen aangemaakt loadbalancer1-int.hobby.nl en loadbalancer2-int.hobby.nl op die manier konden gebruik blijven maken van hobbynet wildcard certificaat.
configuratie
termen
- Virtual service : De dienst die geloadbalanced wordt (dit kan layer 4 of layer 7 zijn)
Configuratie gebeurt altijd via de webinterface. Enkel bij hele uitzonderlijke gevallen moet je wat via SSH doen.
De loadbalancers zijn te bereiken via:
ssh toegang
SSH keys kunnen toegevoegd worden, dit vereist echter strak formaat namelijk
ssh-rsa <snip> je key </snip> bas@een.domein.nl
Het is heel belangrijk dat je key in dit formaat is, ook ben je verplicht een hostnaam in te geven, gebruik daarvoor gewoon je naam dit moet namelijk uniek zijn.
Key's mogen niet met de hand worden toegevoegd via SSH !
Je kan in de loadbalancer onder Local Configuration -> SSH Keys en dan het tab SSH Authentication
Configuratie van dit onderdeel moet je op beide loadbalancers doen want dit wordt niet gerepliceerd!
Direct routing
Op dit moment maken we nog gebruik van direct routing, dit wil zeggen dat de loadbalancer het inkomend verkeer door stuurt naar de server en de server stuurt zelf het antwoord door naar de client.
standaard setup
Standaard gebruiken wij een setup waarbij altijd de load over meerdere servers verspreid wordt
instellen van Virtual service layer 4
van scratch
Ga naar cluster configuration -> layer 4 - virtual services en klik daar op 'Add a new Virtual Service'
- 1) Vul hier de naam van virtual service in. Standaard is dat VIP(nr) naam.url.nl-v4 (of v6 bij IPv6) (let op: geen spatie tussen vip en het nummer van de vip)
- 2) Het IP-adres wat aan de buitenkant wordt gebruikt
- 3) De poort nummers voor web standaard 80,443 je mag meer poort nummers opgeven door te scheiden met een ,
Klik op update
Herhaal de bovenstaande stappen voor het IPv6 adres
Nu moeten we nog bestemming toevoegen : waar moet het verkeer naar toe worden gerouteerd.
Ga naar cluster configuration -> layer 4 - Real Servers
Zoek daar je Virtual service op en klik op modify
Tip je standaard staat de Virtual service die je net hebt gemaakt onderaan
Klik op 'Add a new Real Server" bij de Virtual service die we net hebben aangemaakt
1) Zet naam van de bestemming neer dit geval Joomla-lb1-v4 (of v6 bij IPv6) 2) Vul het IP-adres van de bestemming in 3) Klik op update
Indien het hier geen fallback scenario betreft herhaal de bovenstaande stap voor de 2e bestemming
Herhaal deze stappen voor IPv6 virtual service
fallback scenario
Bij fallback senario wil je dat verkeer standaard op 1e server uitkomt, behalve wanneer deze er niet is. Bijvoorbeeld bij mail en de xml-rpc server, in dit geval voeg je geen 2e realserver toe.
Ga terug naar cluster configuration -> layer 4 - virtual services, zoek je virtual service op en klik op modify
TIP boven in zit zoek veld
- Zoek de sectie 'Fallback Server' op
- Vul het IP-adres in van de fallback server in, laat de overige velden leeg
- klik op update
Herhaal deze stappen voor IPv6 virtual service
bestaande virtual service kopiëren
Maar dit alles kan ook veel makkelijker, als er alleen vip is die de zelfde bestemming heeft etc etc
Ga terug naar cluster configuration -> layer 4 - virtual services, zoek je virtual service op die je kopiëren en klik op modify
Zie afbeelding 5 rechts
Klik op Duplicate service
Negeer de waarschuwing is melding dat toevoeging heeft gedaan zodat er geen dubbele namen zijn
- 1) Vervang hier de naam van virtual service. Standaard is dat VIP(nr) naam.url.nl-v4 (of v6 bij IPv6) (let op : geen spatie tussen vip en het nummer van de vip)
- 2) Vervang het IP-adres wat aan de buitenkant wordt gebruikt
- 3) Controleer de poortnummers voor web standaard 80,443 je mag meer poortnummers opgeven door te scheiden met een ,
Klik op update
Herhaal deze stappen voor IPv6 virtual service
firewall lock down script
Het standaard lockdownscript (de term die in de loadbalancer wordt gebruikt) is aangepast met de volgende de aanpassingen:
- Onze VPN IP-reeksen toegevoegd als admin reeksen
- Voor SNMP is aparte chain aangemaakt
- Al het SNMP verkeer dat niet het IP-adres (eth0) van de loadbalancer is wordt gereject
Hier vindt je kopie van het huidige lockdown script van 28-09-2020 10:00
File:Lockdownscript.txt
Dit script kan je bewerken via Maintenance -> Firewall Lock Down Wizzard
Met 'Modify the firewall lock down wizard script' pas je het script aan.
Met 'Update Firewall lockdown' wordt het de firewall herladen
Standaard wordt het IP-adres waarmee je bent ingelogd ingevuld bij 'Administration subnet'. Dit is om te zorgen dat je er altijd weer in kan als je een foutje hebt gemaakt.
Configuratie van dit onderdeel moet je op beide loadbalancers doen want dit wordt niet gerepliceerd!
backup
Elke dag backuppen we om 22:00
ssh_config aanpassing
Omdat de loadbalancer heel veel IP-adressen heeft zou het script ad random een IP-adres uitzoeken en dat gaat natuurlijk fout. Daarom hebben we een source IP-adres gespecificeerd. In /etc/ssh/ssh_config zijn daarom volgende regels toegevoegd:
host backup2bit-int.hobby.nl BindAddress=2a02:968:ffff:999:172:31:1:240
Verder wordt standaard script dat ook logging draait gebruikt voor de backup /usr/local/hobbynet/bin/backup_etc
handleidingen
Deze vind je in de loadbalancer onder support -> Useful Links
uitzonderingen
Voor dbadmin*.hobby.nl en vraagbaak.hcc.nl is er uitzondering daar wordt geen applicatie cookie gebruikt voor Persistence Mode, maar het source IP-adres, de applicatie kan er niet tegen
LET OP : update instructies
1. schakel master uit 2. maak snapshot in vmware van master 3. zet master weer aan 4. wacht tot master weer helemaal op is 5. zet slave uit 6. maak snapshot slave 7. zet slave weer aan. 8. maak via web interface backup van alle bestanden en download die op master 9. maak via web interface backup van alle bestanden en download die op slave (zodra slave weer volledig operationeel is) 10. maak slave master (login op slave, vouw groene vlak open en klik op take over) 11. update master via Maintenance -> software update en kies voor online update 12. maak master weer master (login op slave, vouw groene vlak open en klik op take over) als dat niet al vanzelf is gebeurd 11. update slave via Maintenance -> software update en kies voor online update 12. Zet reminder in OTRS om snap shots te verwijderen na 4 dagen (dit kan terwijl machines online zijn)
aandachts punten
1. altijd dienen master en slave direct na elkaar te worden geupdate 2. het maken van het snapshot moet gebeuren als de VM uit staat ! dit komt om dat de VM vertraagd wordt tijdens het maken van het snapshot waardoor hij meerdere keren gaat overschakelen naar slave en weer terug. 3. Mocht de update mislukken kan met paar klikken terug naar het snapshot wat je voor de update hebt gemaakt.