HAProxy-Konfiguration
In diesem Abschnitt wird erläutert, wie der HAProxy für ein regionenübergreifendes Failover konfiguriert wird.
- Zwei Red Hat® OpenShift® -Cluster, die in einer Hybridarchitektur ausgeführt werden.
- Zwei WebGUI -Implementierungen.
- zwei HAProxys
https://webgui.east.example.comURL für WebGUI, auf die Benutzer im Osten normalerweise zugreifen.https://webgui.west.example.comURL für WebGUI, auf die normalerweise Benutzer im Westen zugreifen.https://netcool.east.example.comURL für HAproxy, das mit WebGUI verbunden ist, auf die Benutzer normalerweise im Osten zugreifen.https://netcool.west.example.comURL für HAproxy, das mit WebGUI verbunden ist, auf die normalerweise Benutzer im Westen zugreifen.https://netcool.primary.example.comURL für Netcool Operations Insight, die im primären Red Hat OpenShift ausgeführt wird.https://netcool.secondary.example.comURL für Netcool Operations Insight, die im sekundären Red Hat OpenShift ausgeführt wird.
netcool.primary.example.com und netcool.secondary.example.com müssen in die IP-Adressen der jeweiligen Red Hat OpenShift -Ingress-Router aufgelöst werden. netcool.east.example.com und netcool.west.example.com werden jedoch in die IP-Adressen von HAProxys aufgelöst, die für die Weiterleitung von Anforderungen an die derzeit aktive Red Hat OpenShiftkonfiguriert sind.WebGUI -Konfiguration
- Stellen Sie sicher, dass jede WebGUI für die Verwendung eines gültigen TLS-Zertifikats mit dem richtigen DNS-Namen in der Erweiterung des alternativen Subjektnamens konfiguriert ist. Stellen Sie außerdem sicher, dass der Web-Browser keine Zertifikatsfehler anzeigt.
- Rufen Sie eine Kopie des CA-Stammzertifikats ab, das zum Signieren der einzelnen WebGUI -Zertifikate verwendet wird. Sie können diesen Schritt überspringen, wenn alle Zertifikate von einer bekannten öffentlichen Zertifizierungsstelle signiert wurden.
- Aktualisieren Sie
jazz/profile/config/cells/JazzSMNode01Cell/oauth20/base.clients.xml, indem Sie ein Element<client>für jeden Client erstellen. Sie benötigen eine andere Client-ID für jeden HAproxy und auch für jeden Red Hat OpenShift -Cluster, wenn Benutzer direkt unter Red Hat OpenShiftauf Netcool Operations Insight zugreifen können. Weitere Informationen finden Sie unter OAuth. Die folgende Tabelle zeigt die Eigenschaften der einzelnen Elemente gemäß dem Beispiel.Tabelle 1. Beispiel für Eigenschaften für die WebGUI -Konfiguration.ID Geheimer Schlüssel Weiterleitung eastsecret1 https://netcool.east.example.com/westsecret2 https://netcool.west.example.com/primarysecret3 https://netcool.primary.example.com/secondarysecret4 https://netcool.secondary.example.com/ - Stoppen Sie den Server und starten Sie ihn neu.
HAproxy-Konfigurationsschritte
Führen Sie den Befehl yum install haproxy aus, um HAproxy zu installieren. Installieren Sie Version 2.3 oder höher. Eine Version von HAproxy wird auf dem Proxy-Host installiert und die Datei haproxy.cfg wird zum Verzeichnis /etc/haproxy hinzugefügt. Wiederholen Sie diesen Schritt, um HAproxy auf jedem Proxy-Host zu installieren.
Die HAproxy-Konfigurationsdatei hat normalerweise den Namen /usr/local/etc/haproxy/haproxy.cfg und befindet sich in der Regel in einem Verzeichnis wie /usr/local/etc/haproxy. Die Konfigurationsdatei enthält eine Back-End-Definition, in der
die Änderungen an Anforderungen und Antworten erläutert sind, die der HAProxy vornehmen muss. Weitere Informationen zum Einrichten mehrerer Back-Ends mit Regeln für Überwachung und Wechsel finden Sie unter HAproxy in der HAproxy-Dokumentation.
example.com -Domänennamen durch die Domänennamen für Ihre Umgebung.global
log stdout local0
# The following is the location for valid certificates for HA Proxy endpoint and the value is given by the PROXY_HOST.
ca-base <path_to_certs_dir>
# For example: ca-base /usr/local/etc/ca-certs
# PROXY_HOST – will only work with port 443
# This file configures the east HAProxy
presetenv PROXY_HOST "<primary_proxy_host>"
# Use the following line on the west HAProxy
#presetenv PROXY_HOST "netcool.west.example.com"
# This is the NOI OCP route endpoint for the PRIMARY Deployment
setenv NETCOOL_OCP_HOST_PRIMARY "<primary_route_name>"
# This is the NOI OCP route endpoint for the BACKUP Deployment
setenv NETCOOL_OCP_HOST_BACKUP "<backup_route_name>"
defaults
mode http
log global
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
option httplog
frontend http-in
# This is the server certificate for the proxy frontend hostname, PROXY_HOST. This is usually generated by the Corporation Signing Certificate authority (CA). proxy.pem is the file we created in step 7
bind *:443 ssl crt <path_to_certs_dir>/proxy1.pem
# For example: bind *:443 ssl crt /usr/local/etc/keys/proxy.pem
use_backend http-out-primary if { srv_is_up(http-out-primary/noi-primary) }
use_backend http-out-backup if { srv_is_up(http-out-backup/noi-backup) }
backend http-out-primary
option httpchk
http-check send meth GET uri /coordinator/operationalState hdr Host <primary_route_name> hdr Authorization 'Basic YXBpX3VzZXJuYW1lOmFwaV9wYXNzd29yZA=='
# default-server inter 3s fall 3 rise 2
# The ca-file refers to the signing certificate of the NETCOOL_OCP_HOST_PRIMARY route endpoint.
server noi-primary "${NETCOOL_OCP_HOST_PRIMARY}":443 ssl verify none check
http-request set-header X-NOI-HAProxy-Host %[req.hdr(Host)]
http-request set-header x-noi-haproxy-host %[req.hdr(Host)]
acl auth1 res.hdr(Location) -m beg https://<proxy_hostname>/users/api/authprovider/v1/authorize
# If redirecting to NOI, change base to point to the proxy
http-request set-header Host "${NETCOOL_OCP_HOST_PRIMARY}"
http-response replace-value location ^([^:]*://)"${NETCOOL_OCP_HOST_PRIMARY}"(.*)$ \1"${PROXY_HOST}"\2
# If redirect has a return URI within NOI, change that as well
http-response replace-value location ^(.*redirect_uri=[^&]*)"${NETCOOL_OCP_HOST_PRIMARY}"(.*)$ \1"${PROXY_HOST}"\2
backend http-out-backup
option httpchk
http-check send meth GET uri /coordinator/operationalState hdr Host <backup_route_name> hdr Authorization 'Basic <dr_coordinator_username:password>'
# default-server inter 3s fall 3 rise 2
server noi-backup "${NETCOOL_OCP_HOST_BACKUP}":443 ssl verify none check
# server noi-backup "${NETCOOL_OCP_HOST_BACKUP}" addr "${NETCOOL_OCP_HOST_BACKUP}" port 443 ssl verify none check
acl auth1 res.hdr(Location) -m beg https://<primary_proxy_host>/users/api/authprovider/v1/authorize
http-request set-header X-NOI-HAProxy-Host %[req.hdr(Host)]
http-request set-header Host "${NETCOOL_OCP_HOST_BACKUP}"
# If redirecting to NOI, change base to point to the proxy
http-response replace-value location ^([^:]*://)"${NETCOOL_OCP_HOST_BACKUP}"(.*)$ \1"${PROXY_HOST}"\2
# If redirect has a return URI within NOI, change that as well
http-response replace-value location ^(.*redirect_uri=[^&]*[^\.])"${NETCOOL_OCP_HOST_BACKUP}"(.*)$ \1"${PROXY_HOST}"\2
- < Pfad_zu_Zertifikatsverzeichnis> ist der Pfad zu dem Verzeichnis, das die erforderlichen Zertifikate enthält, die auf dem Proxy-Server-Host generiert werden.
- < primary_proxy_host> ist der vollständige DNS oder der Proxy-Host-Server, z. B.
proxy1.test.xyz.com. Wenn Sie einen HAproxy in Ihrer Sicherung konfigurieren, stellen Sie sicher, dass hier auf den Backup-Proxy-Host verwiesen wird. - < primary_route_name> Der vollständige Name der Netcool-Route auf dem primären Server, z. B.
netcool-east.apps.east.cp.xyz.com. - < backup_route_name> Der vollständige Name der Netcool-Route auf dem Sicherungsserver, z. B.
netcool-west.apps.west.cp.xyz.com.
- < dr_coordinator_username:password> ist die base64 -codierte Ausgabe des folgenden API-Benutzernamens-und Kennwortbefehls:
echo -n api_username:api_password |base64
Dieser Befehl wird von Netcool Operations Insight verwendet, um den HAproxy zu identifizieren, den die Anforderung durchlaufen hat. Dieser Befehl wird verwendet, um die richtige WebGUIzu identifizieren.http-request set-header X-NOI-HAProxy-Host
Mit diesem Befehl wird der Host-Header aktualisiert, sodass der Red Hat OpenShift -Ingress-Router die Anforderung an den richtigen Pod weiterleiten kann.http-request set-header Host
Dieser Befehl aktualisiert alle Umleitungsantworten, sodass der Client weiterhin den HAproxy verwendet und nicht zum Red Hat OpenShift -Router umgeleitet wird.http-response replace-value location
podman run --name <unique_container_name> -p 443:443/tcp -v /root/new_certs:/root/new_certs -v /etc/haproxy:/usr/local/etc/haproxy:ro haproxy:2.3
Dabei ist /root/new_certs das Verzeichnis, in dem Sie die Zertifikate gespeichert haben, z. B. /usr/local/etc/ca-certs, wie durch < Pfad_zu_Zertifikatsverzeichnis>angegeben.Netcool Operations Insight -Hybridkonfiguration
- Verwenden Sie den folgenden Befehl auf Basis des Beispiels in Tabelle 1, um einen geheimen
<RELEASE>-was-oauth-cnea-secrets-Schlüssel zu erstellen, der die erforderlichen Werte für Client-ID und geheimen Schlüssel enthält.kubectl create secret generic <RELEASE>-was-oauth-cnea-secrets \ --from-literal=client-id=primary \ --from-literal=client-secret=secret3 \ --from-literal=netcool.east.example.com.id=east \ --from-literal=netcool.east.example.com.secret=secret1 \ --from-literal=netcool.west.example.com.id=west \ --from-literal=netcool.west.example.com.secret=secret2Dabei ist < RELEASE> der Name der Netcool Operations Insight -Hybridbereitstellung.
Hinweis: Die Werte fürclient-idundclient-secretmüssen die Werte für die lokale Instanz enthalten. Wenn Sie diesen Befehl für die sekundäre Instanz Ihrer Netcool Operations Insight -Hybridbereitstellung ausführen, ändern sich die Werte insecondaryundsecret4. Die übrigen Werte geben den vollständig qualifizierten Domänennamen der HAProxys an. Geben Sie keine Portnummern an, auch wenn nicht die Standardports verwendet werden. Jeder Proxy hat einen Wert für.idund einen Wert für.secret.Hinweis: Sie können den geheimen Schlüssel entweder vor der Hybridinstallation erstellen oder den geheimen Schlüssel nach der Hybridinstallation patchen. Weitere Informationen finden Sie unter Install kubectland kubectl CLI
in der kubectl-Dokumentation.
- Wenn Sie Ihre Hybridbereitstellung erstellen, schließen Sie die folgenden Parameter in die YAML-Datei
noihybridein. Weitere Informationen hierzu finden Sie unter Cloudnative Komponenten unter Hybrid installieren.dash.urlals URL der WebGUI.dash.usernameals Benutzername für die Verbindung zur lokalen WebGUI.dash.trustedCAConfigMapNameals Name einer Konfigurationszuordnung mit den CA-Zertifikaten, die zum Signieren aller WebGUI -Zertifikate verwendet werden. Wenn alle Zertifikate von bekannten öffentlichen Zertifizierungsstellen signiert sind, kann dieser Wert weggelassen werden.dash.crossRegionUrlsals Array der HAproxy-und WebGUI -Paare im folgenden Format. Denken Sie daran, Portnummern einzuschließen, wenn sie nicht die Standardportnummer (443) sind.
dash: .... crossRegionUrls: - proxy: https://netcool.east.example.com dash: https://webgui.east.example.com - proxy: https://netcool.west.example.com dash: https://webgui.west.example.com