Hallo zusammen,
in dem heutigen Blogeintrag möchte ich euch zeige wie Ihr unter Ubuntu 16.04 einen einfachen Loadbalancer mit HA-Proxy installieren könnt. Für das Howto habe ich drei Ubuntu 16.04 Server installiert. Zwei Server dienen mir als Webserver und einer als Loadbalancer.
Um einen nginx Webserver installieren zu können, benötigt es noch ein paar vorbereitungen.
Nach der Grundinstallation der beiden Webserver, müssen diese auf den neusten Stand gebracht werden.
Nach dem Login, wechselt man zum root Benutzer mit:
1 2 |
sudo -i oder sudo su - apt update -y && apt upgrade -y |
Nach dem das System up to date ist, konfiguriert man den beiden Server einee statischen IP-Adresse.
Hier habe ich mich an den Screenshot gehalten, der Webserver 1 bekommt die IP-Adresse 192.168.xxx.101 und der Webserver 2 die IP-Adresse 192.168.xxx.102.
1 2 3 4 5 6 7 8 9 10 11 |
vim /etc/network/interfaces auto enp0s3 iface enp0s3 inet static address 192.168.xxx.xxx netmask 255.255.255.0 gateway 192.168.xxx.xxx dns-search htdom.local dns-nameservers 192.168.xxx.xxx reboot |
1 2 3 4 5 |
## nginx Webserver installieren und überprüfen ## apt-get install nginx apache2-utils ssh dpkg --get-selections nginx apache2-utils dpkg -l | grep nginx |
Zur besseren Übersicht habe ich die /var/www/html/index.nginx-debian.html angepasst, damit man diese in den Screenshots besser erkennt.
Nach dem die Webserver fertig installiert sind und man auf diese sauber zugreifen kann, werden wir den Loadbalancer vorbereiten.
Auch der Loadbalancer muss auf den neusten Stand gebracht werden.
Nach dem Login, wechselt man zum root Benutzer mit:
1 2 |
sudo -i oder sudo su - apt update -y && apt upgrade -y |
Nach dem das System up to date ist, konfiguriert man auch dem Loadbalancer eine statischen IP-Adresse. Hier habe ich die IP-Adresse 192.168.xxx.51 benutzt.
1 2 3 4 5 6 7 8 9 10 11 |
vim /etc/network/interfaces auto enp0s3 iface enp0s3 inet static address 192.168.xxx.xxx netmask 255.255.255.0 gateway 192.168.xxx.xxx dns-search htdom.local dns-nameservers 192.168.xxx.xxx reboot |
1 2 3 4 5 |
## HA-Proxy installieren und überprüfen ## apt install haproxy -y dpkg --get-selections haproxy dpkg -l | grep haproxy |
1 2 3 4 |
## HA-Proxy Konfigurationsdateien sichern ## mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.old cp /etc/default/haproxy /etc/default/haproxy.old |
1 2 3 4 5 6 |
## /etc/default/haproxy ## ## vim /etc/default/haproxy ## Set ENABLED to 1 if you want the init script to start haproxy. ENABLED=1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
## Basis Konfiguration des HAProxy Dienst ## vim /etc/haproxy/haproxy.cfg ## Basic Settings ## global daemon defaults mode http #tcp frontend http-incoming bind 192.168.178.51:80 default_backend webservers backend webservers balance roundrobin #leastconn and #source server web01 192.168.178.101:80 server web02 192.168.178.102:80 systemctl restart haproxy.service systemctl status haproxy.service |
Hier ruft man im Webbrowser nun die IP-Adresse (192.168.xxx.51) des Loadbalancer auf, wenn man die Webseite mit F5 refreshed, dann sieht man das Roundrobin verhalten. Wenn man in der /etc/haproxy/haproxy.cfg Konfigurationsdatei den mode auf tcp stellt, dann wird erst dann ein Roundroubin durchgeführt, wenn einer der Webserver down ist.
Dies kann man testen in dem man auf den Webservern den nginx Dienst stoppt. (systemctl stop nginx.service oder service nginx stop)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
## Basis Konfiguration des HAProxy mit Statistics Report ## vim /etc/haproxy/haproxy.cfg ## Global Settings ## global daemon stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy ## Default Settings ## defaults log global mode http #tcp option httplog timeout connect 5000 timeout client 50000 timeout server 50000 retries 3 errorfile 400 /etc/haproxy/errors/400.http errorfile 403 /etc/haproxy/errors/403.http errorfile 408 /etc/haproxy/errors/408.http errorfile 500 /etc/haproxy/errors/500.http errorfile 502 /etc/haproxy/errors/502.http errorfile 503 /etc/haproxy/errors/503.http errorfile 504 /etc/haproxy/errors/504.http ## Listen Settings ## listen stats bind 192.168.178.51:12345 mode http maxconn 10 stats enable stats hide-version stats refresh 30s stats show-node stats realm Loadbalanced\ Servers stats uri /stats stats auth admin:password ## Frontend Settings ## frontend http-incoming bind 192.168.178.51:80 default_backend webservers ## Backend Settings ## backend webservers balance roundrobin #leastconn and #source option httpchk GET /webserver_check server web01 192.168.178.101:80 check inter 500 fall 3 rise 2 server web02 192.168.178.102:80 check inter 500 fall 3 rise 2 |
1 2 3 |
## Konfiguration überprüfen ## haproxy -f /etc/haproxy/haproxy.cfg -c |
1 2 3 4 5 |
## Um die Option httpchk aktiv schalten zu können muss auf allen Webservern ## die webserver_check in das Root Verzeichnis abgelegt werden. ## Nach dieser Datei hällt dann der Loadbalancer ausschau. touch /var/www/html/webserver_check |
1 2 3 4 5 6 |
## HAProxy Statistics Report ## http://192.168.178.51:12345/stats Username: admin Passwort: password |
So das war es auch schon wieder von mir, viel Spaß beim konfigurieren.
Gruß Helmut