Weblog

door Cees onder Business | 0 comments

High-availability clustering voor webapplicaties

Wanneer een standaard cloudoplossing niet voldoende is, leveren wij regelmatig een geclusterde maatwerkoplossing. De aanleiding voor het bouwen van een geclustede oplossing kan zijn dat uw webapplicatie zo belangrijk is voor uw bedrijfsvoering dat deze altijd beschikbaar moet zijn. Zo kan downtime van een goedlopende webshop al snel in de papieren lopen. Een andere aanleiding kan zijn dat het bezoekersaantal dusdanig is gegroeid dat een enkele server de drukke piekmomenten niet meer aan kan. In dergelijke gevallen kan een cluster de oplossing bieden.
 
We zullen hier eerst ingaan op het verloop van een maatwerktraject. Vervolgens gaan we dieper op de techniek in met voorbeelden van servers.
 

Een maatwerktraject bij CloudVPS

Bij CloudVPS zijn wij gewend om het ontwerpen en bouwen van een maatwerkcluster in een aantal stappen te doorlopen.
 
Eerst volgt er een gesprek waarbij wij al uw vragen beantwoorden en inventariseren welke specifieke oplossing het beste bij uw vraag past. Vervolgens maken we een ontwerp dat is afgestemd op uw business-behoeften en de eisen die uw applicatie stelt aan de infrastructuur. In de praktijk zien we vaak dat wij in de basis gebruik kunnen maken van het zelfde, redundante, ontwerp. Dit basisontwerp breiden we waar nodig uit met extra servers en/of services. Vervolgens wordt er een offerte opgesteld. Nadat deze akkoord is bevonden gaan we samen het project inplannen en start het bouwen van het cluster.
 
Bij de eerste oplevering dragen we alle documentatie over en leggen we de werking van de omgeving uit. Gedurende de daarop volgende test- en migratieperiode zullen we nauw samenwerken om de puntjes op de i te zetten. Ook na de definitieve oplevering blijven wij beschikbaar als sparringpartner en voor het begeleiden bij en doorvoeren van wijzigingen.
 

Het basisontwerp

Het basisontwerp wat we in iedere bijna iedere setup terugzien, bestaat uit een aantal vaste servers.

Dit zijn:

  • 2 loadbalancers;
  • 2 webservers;
  • 2 databaseservers.
Van ieder type server zetten we in verschillende datacentra één instance neer. Dit zorgt ervoor dat ook bij een storing op datacenterniveau de webapplicatie beschikbaar blijft.
 

Loadbalancers, verkeer verdelen en hoge beschikbaarheid en veiligheid creëren

De loadbalancers hebben als primaire taak het verdelen van verkeer (loadbalancing) over de achterliggende webservers. Daarnaast kunnen ze met dezelfde software een stukje load van de webservers wegnemen door het afhandelen van het SSL-verkeer (SSL offloading).
 
Om de loadbalancers verhoogd beschikbaar te maken (HA), maken we gebruik van een floating IP-adres. Dit is een IP-adres dat zowel op de eerste als ook op de tweede loadbalancer actief kan zien. Door een goed design van ons eigen onderliggende netwerk kunnen we dit IP-adres zelfs op meerdere fysieke datacenterlocaties aanbieden. Dit doen we dan ook standaard waardoor iedere maatwerk setup datacenterredundant is.
 
Tot slot beveiligen we de loadbalancers door alleen het strikt noodzakelijke verkeer toe te staan door middel van firewalling. Indien gewenst kunnen we hier nog functionaliteit aan toevoegen zoals VPN-tunnels voor het beheer van de omgeving.
 

Webservers

De web- of app-servers draaien in de kern van het cluster en serveren de HTML-content vanuit Apache of NginX. Voor de dynamische content breiden we dit uit met PHP7 of PHP-FPM en alle benodigde modules. Door alle app-servers identiek aan elkaar te houden, maken we deze component volledig horizontaal schaalbaar.
 

Databaseservers

Tot slot hebben we in bijna ieder basisontwerp databaseservers nodig. Uiteraard zien we vaak op MySQL of MariaDB gebaseerde clusters maar ook met andere databases zoals PostgreSQL hebben wij ervaring. Wanneer er gebruik wordt gemaakt van MariaDB met Galera clustering kunnen we de databaseservers ook schalen door meerdere nodes uit te rollen.
 

Optionele servers

Naast de servers uit het basisontwerp kunnen wij vrijwel alle denkbare additionele servers toevoegen. We gaan graag met u in overleg om te komen tot de beste oplossing voor uw webapplicatie. Enkele voorbeelden van servers die wij in een maatwerkcluster kunnen installeren:
 
  • Deploy server (Ansible, Gitrepo, Gitlab, Jenkins);
  • Caching servers (Varnish);
  • Key-value (NoSQL) servers (Redis, Memcached);
  • Logserver (Logstash/Kibana);
  • Search server (Elasticsearch);
  • Message queing server (RabbitMQ).
Deploy server
De deploy server wordt gebruikt om met behulp van Ansible de overige servers te beheren, wijzigingen te maken, nieuwe servers en services uit te rollen en om de applicatie uit te rollen. Door gebruik te maken van Ansible zijn er geen extra agents nodig op de servers in het cluster. Dit heeft als voordelen dat je de setup eenvoudig houdt, minder afhankelijkheden en attack surface creëert en optimaal de beschikbare resources kunt benutten. Jenkins sluit hier mooi op aan door de integratie met Ansible, maar andere deployment servers kunnen wij ook ondersteunen
 

Caching servers

Wij installeren regelmatig Varnish HTTP Cache om zo de app-servers te ontlasten en de content sneller te kunnen serveren aan de eindgebruikers. Eventueel is Varnish cache te combineren op de app-servers om een aantal redenen:
 
  • De response times dan laag blijven; 
  • Apache en PHP vooral CPU-intensief is;
  • Varnish vooral memory-intensief is.
Key-value (NoSQL) Servers
Wij zetten regelmatig Redis clusters op. Redis is een in-memory key-value data store die door vele frameworks en cms'en wordt ondersteund voor (sessie) offloading. Hierbij verdient het de voorkeur om gebruik te maken van een oneven aantal nodes. Voor Redis moeten we ook sentinels configureren maar deze taak kan in overleg ook op andere servers geplaatst worden. Memcached ondersteunen wij ook, maar heeft als nadeel dat deze niet goed te clusteren is.
 

Logserver

Een logserver kan het debuggen van de applicatie en het cluster vereenvoudigen door logging centraal te verzamelen. Zonder logserver zijn bijvoorbeeld de applicatielogs alleen op de appserver terug te vinden die het request hebben afgehandeld. We kunnen dit opzetten met alleen rsyslog of in combinatie met Elasticsearch, Logstash en Kibana bijvoorbeeld.
 

Tot slot

Omdat wij volledig achter onze cluster setups staan, leveren wij op volledig redundante maatwerkoplossingen ook een service level waarbij onze derdelijns engineers voor u klaar staan om te assisteren en te overleggen waar nodig. We richten ook een uitbereide monitoring voor u in waarbij een engineer van ons 24x7 gebeld wordt mocht dit onverhoopt nodig zijn.
 
Als u denkt dat het bovenstaande voor uw omgeving een passende oplossing zou kunnen bieden, vertellen wij u hier graag vrijblijvend meer over. Neem contact met ons op om de maatwerkmogelijkheden voor uw organisatie te bespreken.

 

Comments (0)

Laat een reactie achter

VPS Bestellen
VPS Bestellen