Raspberry Pi als NGINX Load-Balancer

Vor kurzem benötigte ich dringend einen HTTP Load-Balancer, da ich kein KEMP oder F5 in meinem LAB habe, habe ich meinen „Raspberry PI 2“ dazu missbraucht 😉
Ich habe mich für den NGINX Server entschieden, da die Konfiguration sehr einfach ist und schnell von statten geht.

Vorbereitung

  • Ihr Raspberry hat eine gültige IP Konfiguration und ist im DNS eingetragen
  • Die Namensauflösung funktioniert auf ihrem Raspberry PI
  • Zwei Web-Server (WEB1 und WEB2)
  • Auf beiden Web-Servern ist eine individuelle „index.htm“ hinterlegt. Hinterlegen Sie den Namen jedes Server in der jeweiligen „index.htm“

Bevor wir anfangen, möchte ich drauf hinweisen, dass die Anleitung nicht für einen Produktivbetrieb genutzt werden sollte. Der Einsatz erfolgt auf eigene Gefahr, ich übernehme keine Haftung für Schäden!

Test der Web-Server

1. Starten Sie den Webbrowser von ihrem Client und rufen Sie die URL zu den Web-Servern auf.

2. Wenn beide Web-Server den passenden Inhalt zurück geben, dann können wir mit der Installation des NGINX fortfahren.

Installation

1. melden Sie sich via ssh an dem Raspberry Pi an.
2. Installieren Sie den NGINX Server.

sudo apt-get install nginx

3. Öffnen Sie die Datei „/etc/nginx/sites-available/default“ mit einem Editor.

sudo nano /etc/nginx/sites-available/default

4. Passen Sie die config in der Datei „default“ wie nachfolgende beschrieben an. Bei dieser Konfiguration handelt es sich um eine klassische Lastenverteilung (Round Robin)

upstream www {
        server web1.corp.id-home.de;
        server web2.corp.id-home.de;
}
server {
        listen 80;
        server_name pi.corp.id-home.de;
        location / {
          proxy_pass http://www;
        }
}

5. Starten Sie den NGINX neu mit dem nachfolgenden Befehl:

sudo service nginx restart

6. Führen Sie nun von einem Client einen Funktionstest durch indem Sie einen Webbrowser starten und den Loadbalance in die URL eingeben.  Beispiel: http://pi.corp.id-home.de 

7. Nachdem die HTML Seite des Webservers-1 angezeigt wird, führen Sie einen „REFRESH“ im Webbrowser durch um die Seite erneut zu laden. Sie sollten die HTLM Seite vom zweiten Webserver angezeigt bekommen.

Die Installation und Konfiguration ist erfolgreich abgeschlossen. Nachfolgend zeige ich noch zwei weitere Arten des Load-Balancing.

Beispiel Konfiguration Load-Balancing mit Gewichtung
Bei dieser Konfiguration wird der erste Web-Server zu 50% belastet

upstream www {
        server web1.corp.id-home.de weight=2;
        server web2.corp.id-home.de;
}

Konfiguration Load-Balancing mit IP-Hash
Beim dieser Konfiguration wird die Client IP herangezogen und der Client terminiert immer auf dem selben Server.

upstream www {
        ip_hash;
        server web1.corp.id-home.de;
        server web2.corp.id-home.de;
}

Ich hoffe, ich konnte Ihnen einen kleinen Einblick geben. Sollten Sie Fragen haben, so scheuen Sie nicht mich zu kontaktieren. Nutzen Sie hier die “Kommentar Funktion” des Blogs oder wenn es Ihnen lieber ist via E-Mail.

Weiter Blogs folgen in den nächsten Tagen. Ich würde mich sehr freuen, wenn Sie wieder vorbeischauen.

2 Gedanken zu „Raspberry Pi als NGINX Load-Balancer

  1. Niwu

    Hallo
    Seiten werden aufgerufen als einzeln

    Beim Umbau auf Loadbalancer
    Bekomme ich entweder502 Bad Gateway

    Server 01
    ##
    upstream www {
    server web1.corp.id-home.de;
    server web2.corp.id-home.de;
    }
    server {
    root /var/www/html;
    index index.htm;
    server_name pi.corp.id-home.de;
    location / {
    proxy_pass http://www;
    try_files $uri $uri/ =404;
    }

    server 02

    ##
    upstream www {
    server web1.corp.id-home.de;
    server web2.corp.id-home.de;
    }
    server {
    root /var/www/html;
    index index.htm;
    server_name pi.corp.id-home.de;
    location / {
    proxy_pass http://www;
    try_files $uri $uri/ =404;
    }
    im Grund eine 1:1 Kopie auf jeden Server

    ist auch in hosts eingetragen

    Vielleicht übersehe ich was und du kannst mir da helfen.
    sonst ist eine Erklärung einfach und sehr gut

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

sechs + acht =