Daalakker 9, 2200 Herentals
LAMP Stack met Load Balancing: Middelbare School Project
Project Overzicht
In mijn tweede jaar op de middelbare school ondernam ik een soloproject om een LAMP-stack te bouwen met behulp van Docker-containers. De stack draaide Apache2 om een PHP-website te bedienen, met de PHP-bestanden opgeslagen op het hostsysteem. Het project werd gehost op een Ubuntu 22.04 virtuele machine en bevatte een MySQL-container voor databasebeheer. Daarnaast implementeerde ik load balancing met behulp van NGINX om verkeer efficiënt te verdelen over meerdere webservercontainers.
Project Details
- Container 1 (Web Server): The first c
ontainer was a custom-built Ubuntu 22.04 image. It installed and ran Apache2 and PHP, while serving web pages from the host machine, ensuring flexibility in content management. This container was linked to a second container that handled the database.
- Container 2 (Database): De tweede container gebruikte een standaard MySQL-image van Docker Hub. Machtigingen werden aangepast om PHP toe te staan verbinding te maken en te interacteren met de database. Gegevenspersistentie werd verzekerd zodat de database-inhoud intact zou blijven, zelfs als de containers werden verwijderd.
- Load Balancing with NGINX: Om de prestaties en betrouwbaarheid te verbeteren, heb ik een tweede webservercontainer opgezet die identiek is aan de eerste. Ik heb NGINX geconfigureerd voor load balancing, waardoor verkeer gelijkmatig over beide webservers kan worden verdeeld, wat zorgt voor betere uptime en resourcebeheer.
Gebruikte technologieën
- Docker: Wordt gebruikt voor containerisatie van zowel de webserver (Apache2, PHP) als de database (MySQL).
- Ubuntu 22.04 VM: De virtuele machine-omgeving waarop de LAMP-stack is gebouwd en getest.
- NGINX: Geïmplementeerd om de belasting over twee webservercontainers te verdelen, waardoor de schaalbaarheid en fouttolerantie worden verbeterd.
- MySQL: De database werd beheerd via een permanente container, waardoor de levensduur van de gegevens werd gegarandeerd, zelfs nadat de container werd verwijderd.
Uitdagingen en oplossingen
Een van de grootste uitdagingen was het verzekeren van de naadloze communicatie tussen containers en het verzekeren dat de webservercontainer correct toegang had tot de database. Het aanpassen van de permissies en het configureren van persistente opslag voor de MySQL-container hielp deze problemen op te lossen. Het implementeren van load balancing met NGINX voegde complexiteit toe, maar verbeterde uiteindelijk de prestaties van het systeem.
Uitleg video's
Github link
https://github.com/GiosSiebe/LAMPstackWithLoadBalancing
Conclusie
Dit project gaf een fundamenteel begrip van containerisatie, databasebeheer en load balancing. Het leerde me ook hoe belangrijk het is om systemen te ontwerpen die schaalbaar, flexibel en veerkrachtig zijn.
