Debian 9 : Apache 2.4 Load Balancer für statischen Inhalt
Einen Load Balancer auf Basis von Apache 2.4 für statischen Inhalt aufzubauen ist kein Hexenwerk. Für dynamische Inhalte sieht das etwas anders aus aber wir fangen erstmal klein an. Wenn ihr auch den Artikel "Debian 9 : Gateway mit DNS und DHCP" druchgespielt habt sieht euer Netz wenn ihr fertig seit so aus.
Auf die beiden Server web-01 und web-02 gehe ich nicht weiter ein, das sind Standard Installationen Debian 9 mit Apache
erstmal brauchen wir auf dem Server web-lb der das Apache Loadbalancing übernehmen soll natürlich Apache. das übernimmt dieser Befehl unter root.
Nun folgt ein Neustart des Apache Servers
Jetzt müssen wir die Site noch aktivieren das erledigt a2ensite für uns.
Das funktioniert solange ihr keine Sessions oder dynamischen Content habt. Wenn ihr das benötigt muss man dafür Sorgen das der Client der den Loadbalancer anfragt auch immer auf dem selben Webserver raus kommt. Ist klar sonst sind die Sessions ja nicht mehr gültig
Apache Dokumentation zum Modul proxy_balancer
Auf die beiden Server web-01 und web-02 gehe ich nicht weiter ein, das sind Standard Installationen Debian 9 mit Apache
erstmal brauchen wir auf dem Server web-lb der das Apache Loadbalancing übernehmen soll natürlich Apache. das übernimmt dieser Befehl unter root.
apt update && apt install apache2danach müssen wir noch die benötigten Module aktivieren
a2enmod proxy_balancer proxy lbmethod_* headers statuswie man hier sieht aktiviere ich immer gleich alle lbmethod_* für den Balancer.
Nun folgt ein Neustart des Apache Servers
systemctl restart apache2.serviceNun müssen wir die site für den Balancer konfigurieren. Das erledigen wir in vi mit dem Befehl
vi /etc/apache2/sites-available/balancer.confHier ist meine Beispiel Konfiguration, ich hab hier absichtlich nur eine simple Grundkonfiguration erstellt.
[VirtualHost *:80] ServerAdmin webmaster@localhost Header add X-Balancer "%{BALANCER_WORKER_NAME}e" [Proxy balancer://webintern] BalancerMember http://172.16.0.20:80 BalancerMember http://172.16.0.21:80 ProxySet lbmethod=byrequests [/Proxy] ProxyPass "/balancer-manager" ! ProxyPass "/" "balancer://webintern/" ProxyPassReverse "/" "balancer://webintern" [Location "/balancer-manager"] SetHandler balancer-manager Require ip 192.168.2 [/Location] ErrorLog ${APACHE_LOG_DIR}/balancer_error.log CustomLog ${APACHE_LOG_DIR}/balancer_access.log combined [/VirtualHost]Syntax Highlighting versagt hier leider [ = < und ] = >
Jetzt müssen wir die Site noch aktivieren das erledigt a2ensite für uns.
a2ensite balancerund noch ein Neustart des Apache Servers
systemctl restart apache2.serviceZur Erklärung :
Header add X-Balancer "%{BALANCER_WORKER_NAME}e"dient nur dem debuggen und kann nach erfolgreichen einrichten auskommentiert werden. Wenn alles eingerichtet ist und euer Loadbalancer steht bekommt ihr bei jedem Request einen Eintrag im Header mit dem Namen X-Balancer der verifiziert von welchem Server ihr die Antwort erhalten habt.
Das funktioniert solange ihr keine Sessions oder dynamischen Content habt. Wenn ihr das benötigt muss man dafür Sorgen das der Client der den Loadbalancer anfragt auch immer auf dem selben Webserver raus kommt. Ist klar sonst sind die Sessions ja nicht mehr gültig
Apache Dokumentation zum Modul proxy_balancer