You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Beschreibung der Rolle

Die Rolle LB stellt den zentralen Zugangspunkt zum Portal und den SOAP Schnittstellen zur Verfügung. Hier erfolgt dann die Verteilung der Anfragen auf die zur Verfügung stehenden Web Application Server unter Berücksichtigung einer gleichmäßigen Lastverteilung, des möglichen Ausfalls einer oder mehrerer Web Server und der Dienst-Spezifischen Einschränkungen. Des Weiteren übernimmt diese Rolle auch das Bereitstellen der mittels TLS verschlüsselten Verbindung über HTTPS. Der Dienst kann sowohl auf HTTP (Port 80) und HTTPS (Port 443) angeboten werden. Eine automatische Umleitung zu HTTPS bzw. spezieller URLs kann hier auch realisiert werden (Beispiele: https://acd.example.com wird umgeleitet zuhttps://acd.example.com/CarrierPortal/login/reseller/client oder https://acd.exaple.com/admin wird umgeleitet zu https://acd.exaple.com/CarrierPortal/sysadmin/login).

Da die Rolle in der Regel sehr wenig Ressourcen benötigt, wird sie in der Regel (und auch im hier aufgeführten Konfigurationsbeispiel) auf der gleichen Maschine installiert, in der auch die Rolle STORE installiert wurde.

Installation der Software

Die Installation der benötigten Software haproxy erfolgt mittels folgenden Befehls:

Installation von haproxy
yum -y install haproxy
mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.sample

Die mitgelieferte Beispiels-Konfigurationsdatei wird mit dem zweiten Befehl umbenannt, damit sie auch zu einem späteren Zeitpunkt zu Referenzzwecken zur Verfügung steht.

Der haproxy Dienst wird mit folgendem Befehl in die Liste der automatisch startenden Dienste aufgenommen:

haproxy Dienst autostart
chkconfig haproxy on

Als nächstes müssen in der Firewall die Port-Freigaben für den haproxy Dienst eingetragen und persistent gespeichert werden:

Firewall konfigurieren
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=7777/tcp --permanent
firewall-cmd --reload

Um die Logausgaben des haproxy Dienstes über den zentralen Logging-Dienst in eine separate Log-Datei zu speichern, müssen folgende Befehle ausgeführt werden:

Anpassungen des syslog-Dienstes
sed -i -e 's/#$ModLoad *imudp/$ModLoad imudp/' -e 's/#$UDPServerRun *514/$UDPServerRun 514/' /etc/rsyslog.conf
cat <<EOFF>/etc/rsyslog.d/haproxy.conf
local2.* /var/log/haproxy.log
EOFF
service rsyslog restart

Der Aufbau der Konfigurationsdatei des haproxy Dienstes ist recht komplex. Aus diesem Grunde empfiehlt es sich eine entsprechende Vorlage aus dem zentralen jtel Download-Verzeichnis anzuwenden, um die Konfigurationsarbeiten zu beschleunigen. Dort befinden sich zwei Vorlagen, die sich darin unterscheiden, ob die Dienste über HTTP oder über HTTPS angeboten werden. Ist die Bereitstellung über HTTPS gewünscht, muss zusätzlich zu der Konfigurationsdatei auch eine Datei mit einem gültigen Zertifikat und dem dazugehörigen Private Key im PEM-base64--Format zur Verfügung gestellt werden.

Das Herunterladen der folgenden Konfigurationsvorlage ist ein guter Startpunkt für ein System welches über HTTP erreichbar sein soll:

Herunterladen der HTTP Konfigurationsvorlage
curl http://cdn.jtel.de/downloads/configs/haproxy-std.cfg > /etc/haproxy/haproxy.cfg

Ist hingegen gewünscht, dass HTTP Zugriffe automatisch auf HTTPS umgeleitet werden und alle Zugriffe über HTTPS erfolgen sollen, so ist folgende Konfigurationsvorlage herunterzuladen:

Herunterladen der HTTPS Konfigurationsvorlage
curl http://cdn.jtel.de/downloads/configs/haproxy-ssl.cfg > /etc/haproxy/haproxy.cfg

Im Falle einer Konfiguration die HTTPS Unterstützt, muss zusätzlich die Datei /etc/haproxy/haproxy.pem angelegt werden, in der sich sowohl das Zertifikat, eventuelle Zwischenzertifikate und der Private Schlüssel befindet. Diese Datei muss außerdem eine spezielle Berechtigung erhalten, damit nur der Benutzer root darauf lesen zugreifen kann, ansonsten wird der haproxy Dienst nicht starten:

Sichern der Zertifikatdatei
chmod 400 /etc/haproxy/haproxy.pem

Erforderliche Anpassungen der Konfiguration

Die Konfigurationsdatei /etc/haproxy/haproxy.cfg muss nun mit einem Text-Editor der Umgebung entsprechend angepasst werden. Die Datei enthält verschiedene Bereiche, die der Anpassung bedürfen.

Anpassung der Benutzer für die haproxy-Administration

Über die URL http(s)://acd-store:7777 kann auf eine Administrationsoberfläche des haproxy-Dienstes zugegriffen werden. Hier können z.B. Backend-Server aus der Verteilung zu Wartungs- oder Test-Zwecken ausgeschlossen werden. In der Standardkonfiguration gibt es einen Read-Only-Benutzer (Benutzername: user, Passwort: fireball) und zwei Konfigurations-berechtigte Benutzer (admin und jtel). Beide haben das gleiche (bekannte) Passwort. Möchte man z.B. das Passwort für den Benutzer admin ändern, so dass z.B. ein Kudnen- oder Partner-Administrator auch Zugriff hat, so kann man mittels einem speziellen Befehl einen neuen Passwort-Hash generieren:

Generieren eines Passwort-Hashes
python -c 'import crypt; print crypt.crypt("F1r3ball2016", "$5$jhaProxy")'

Dieser Befehl generiert ein neues SHA256 Hash für das Passwort "F1r3ball2016" unter Benutzung des Salt-Wertes "jhaProxy". Dieser Hash kann dann für den entsprechenden Benutzer eingesetzt werden. Der Benutzerbereich in der Konfigurationsdatei sieht folgendermaßen aus:

Benutzerbereich in /etc/haproxy/haproxy.cfg
userlist stats-auth
        user  admin     password $5$jhaProxy$rd33gRtd4Wt5UyIclODlyjinSeH4N2DjLtKk33PNZH.
        user  jtel      password $5$jhaProxy$rd33gRtd4Wt5UyIclODlyjinSeH4N2DjLtKk33PNZH.
        user  user      password $5$jhaProxy$.saE3wsZ9AzbDMk2jW9WWQqm.4.vgyZCjFdCf5dAKD6
        group admin     users admin,jtel
        group readonly  users user

Anpassung der URL Umleitungen

Die Konfigurationsvorlage stellt drei URL-Umleitungen zu Verfügung um den komfortablen Zugriff auf die Login Masken für den System-Administrator Login, den normalen Benutzer-Login und den normalen Benutzer-Login für den Mini Client zu ermöglichen. Dies erfordert allerdings eine Anpassung an dem Bereich acdportal_http bzw. acdportal_https:

Anpassung der URL-Umleitungen
        redirect        location /CarrierPortal/login/RESELLER/CLIENT if root_req
        redirect        location /CarrierPortal/mclogin/RESELLER/CLIENT if mini_req

Hier sind die Zeichenketten RESELLER bzw. CLIENT respektive mit der "Reseller UID" und der "Client UID" des Standardmandanten zu ersetzen. Werden diese bei der Einrichtung des Kundensystems nicht spezifisch angepasst, so lauten beide "default".

Anpassung der Backend-Listen

Die Liste der Web-Applikationsserver auf die die Anfrage verteilt werden sollen, wird in der Konfigurationsdatei in zwei getrennten Bereichen gepflegt. Der folgende Bereich ist zuständig für die Verteilung aller Aufrufe auf das Portal:

Backend Bereich für das Web Portal
backend jtel_portal
        mode            http
        compression     algo gzip
        compression     type text/xml text/html text/plain text/css text/javascript
        cookie          SERVERID insert indirect nocache
        appsession      JSESSIONID len 32 timeout 3600000
        balance         leastconn # roundrobin
        server          jboss1 192.168.1.31:8080 weight 1 cookie jboss1 check inter 1m
        server          jboss2 192.168.1.32:8080 weight 1 cookie jboss2 check inter 1m

Hier sind entsprechend der Systemarchitektur alle Web-Applikationsserver einzutragen, die das Web-portal (auch Mini Client) zur Verfügung stellen sollen. Für jeden Server ist eine "server"-Zeile zu erstellen. Dabei ist darauf zu achten, eindeutige interne Namenskennzeichnungen und cookie-Werte zu verwenden (im obigen Fall "jbossX" wobei X durchnummeriert wird).

Der folgende Bereich ist hingegen zuständig für die Verteilung aller SOAP Anfragen:

Backend Bereich für das SOAP Interface
backend jtel_soap
        mode            http
        compression     algo gzip
        compression     type text/xml text/html text/plain text/css text/javascript
        balance         leastconn # roundrobin
        stick-table     type ip size 20k
        stick           on src
        server          jboss1 192.168.1.31:8081 weight 1 cookie jboss1 check inter 1m
        server          jboss2 192.168.1.32:8081 weight 1 cookie jboss2 check inter 1m

Auch hier sind entsprechend der Systemarchitektur alle Web-Applikationsserver einzutragen, die das SOAP Interface zur Verfügung stellen sollen. Für jeden Server ist eine "server"-Zeile zu erstellen. Dabei ist darauf zu achten, eindeutige interne Namenskennzeichnungen und cookie-Werte zu verwenden (im obigen Fall "jbossX" wobei X durchnummeriert wird). Diese Server sind in der Regel die gleichen, die auch für den Portal-Zugriff verwendet werden. In großen Installationen können hierfür aber auch dedizierte Web-Applikationsserver angegeben werden.

Wichtiger Hinweis

Ein wichtiger Unterschied zwischen der HTTP under HTTPS Version der Konfigurationsdatei, liegt in dem Port zu dem SOAP Anfragen geleitet werden. Erfolgt der Zugriff über HTTPS, so werden alle Anfrage zu den Web-Application Server auf Port 8081 geleitet. Dieser Connector ist so konfiguriert, dass der JBOSS-Server weiss, dass die originalen Anfragen über HTTPS hereingekommen sind, und die zurück gegebene URLs (wie z.B. im WSDL) mit dem entsprechenden Schema versieht, auch wenn die Kommunikation zwischen haproxy und Backend nur über HTTP läuft.

In der reinen HTTP-Version der Konfigurationsvorlage werden die Anfragen hingegen zu Port 8080 geleitet.

Starten des haproxy-Dienstes

Nach dem alle Konfigurationsanpassungen getätigt wurden, kann der haproxy-Dienst gestartet werden:

Starten des haproxy Dienstes
service haproxy start

Im Anschluss sollte geprüft werden, ob der Dienst auch tatsächlich läuft. Ist dies nicht der Fall, kann die Log-Datei Aufschluß über eventuelle Konfigurationsfehler geben.

Bei Konfigurationsänderungen kann der haproxy DIenst im laufenden Betrieb mittels folgendem Befehl seine Konfiguration aktualisieren:

Aktualisieren der Konfiguration im Betrieb
service haproxy reload

Ein finaler Test gibt Aufschluss über den Erfolg der Installation. Da zu diesem Zeitpunkt die UID Werte des Reseller und Mandanten noch nicht umbenannt wurden, empfiehlt sich der Aufruf der URL für den Admin-Login: http://acd-lb.example.com/admin welcher im Erfolgsfall zur Login-Maske des Portals führt.

Weiterführende Links

  • No labels