Auf dieser Seite wird erläutert, wie Sie den Seesaw-Load-Balancer für einen GKE On-Prem-Cluster konfigurieren.
GKE On-Prem-Cluster können mit einem von zwei Load-Balancing-Modi ausgeführt werden: integriert oder manuell. Zur Verwendung des Wechselladers für die Wippe verwenden Sie den manuellen Load-Balancing-Modus .
Allgemeine Schritte für das manuelle Load-Balancing
Führen Sie vor der Konfiguration des Seesaw-Load-Balancing-Moduls die folgenden Schritte aus, die für jede manuelle Load-Balancing-Konfiguration gelten:
IP-Adressen und eine VIP für Seesaw-VMs reservieren
Reservieren Sie zwei IP-Adressen für zwei Seenaw-VMs. Sie können auch eine einzelne VIP für das Paar der Seesaw-VMs reservieren. Alle drei Adressen müssen sich im selben VLAN wie Ihre Clusterknoten befinden.
Seesaw-VMs erstellen
Erstellen Sie zwei saubere VMs in Ihrer vSphere Umgebung, um ein Seesaw-Aktiv-Passiv-Paar auszuführen. Ubuntu 18.04 und höher und Linux Kernel 4.15 werden für die Seesaw-VMs empfohlen, obwohl es auch andere Betriebssystemversionen gibt, die mit Seesaw funktionieren.
Die Anforderungen für die beiden VMs lauten so:
Jede VM hat eine NIC mit dem Namen ens192. Diese NIC wird mit der IP-Adresse der VM konfiguriert.
Jede VM verfügt über eine NIC mit dem Namen "En224". Diese Netzwerkkarte benötigt keine IP-Adresse.
Die VMs müssen sich im selben VLAN wie Ihre Clusterknoten befinden.
Die Portgruppe von enS224 muss Änderungen der MAC-Adresse und gefälschte Übertragungen zulassen. Dies liegt daran, dass die Seesaw-VMs das Virtual Router Redundancy Protocol (VRRP) verwenden. Das bedeutet, dass Seesaw die MAC-Adressen von Netzwerkschnittstellen konfigurieren muss. Insbesondere muss Seesaw die MAC-Adresse auf eine VRRP-MAC-Adresse im Format 00-00-5E-00-01- [VRID] setzen können, wobei [VIRD] eine virtuelle Router-ID für das Seesaw-Paar ist.
Sie können dies in der vSphere-Benutzeroberfläche in den Richtlinieneinstellungen der Portgruppe konfigurieren.
Seesaw kompilieren
Führen Sie zum Erstellen der Seesaw-Binärdateien das folgende Skript auf einer Maschine aus, auf der Golang installiert ist:
#!/bin/bash
set -e
DEST=$PWD/seesaw_files
export GOPATH=$DEST/seesaw
SEESAW=$GOPATH/src/github.com/google/seesaw
mkdir -p $GOPATH
cd $GOPATH
sudo apt -y install libnl-3-dev libnl-genl-3-dev
git clone https://github.com/google/seesaw.git $SEESAW
cd $SEESAW
GO111MODULE=on GOOS=linux GOARCH=amd64 make install
cp -r $GOPATH/bin $DEST/
mkdir -p $DEST/cfg
cp etc/seesaw/watchdog.cfg etc/systemd/system/seesaw_watchdog.service $DEST/cfg/
sudo rm -rf $GOPATH
Dadurch wird ein seesaw_files
-Verzeichnis generiert, das die Wechseldatenbanken und Konfigurationsdateien enthält. Führen Sie den Befehl tree
aus, um die Dateien anzuzeigen:
tree seesaw_files
Die Ausgabe zeigt die generierten Verzeichnisse und Dateien:
seesaw_files/ ├── bin │ ├── seesaw_cli │ ├── seesaw_ecu │ ├── seesaw_engine │ ├── seesaw_ha │ ├── seesaw_healthcheck │ ├── seesaw_ncc │ └── seesaw_watchdog └── cfg ├── seesaw_watchdog.service └── watchdog.cfg 2 directories, 9 files
Umgebungsvariablen exportieren
Bevor Sie die Seesaw-VMs konfigurieren, müssen Sie mehrere Umgebungsvariablen exportieren.
Exportieren Sie auf jeder Seesaw-VM die folgenden Umgebungsvariablen:
NODE_IP
: Die IP-Adresse der Seesaw-VM.PEER_IP
: Die IP-Adresse der anderen Seesaw-VM.NODE_NETMASK
: Die Länge des Präfixes des CIDR-Bereichs für Ihre Clusterknoten.VIP
: Die VIP, die Sie für das Seesaw-VM-Paar reserviert haben.VRID
: Die ID des virtuellen Routers, die Sie für das Seesaw-Paar verwenden möchten.
Hier ein Beispiel:
export NODE_IP=203.0.113.2 export PEER_IP=203.0.113.3 export NODE_NETMASK=25 export VIP=203.0.113.4 export VIRD=128
Seesaw-VMs konfigurieren
Kopieren Sie das Verzeichnis seesaw_files
in die beiden Seesaw-VMs.
Führen Sie auf jeder Seesaw-VM im Verzeichnis seesaw_files
das folgende Skript aus:
# execute_seesaw.sh
#!/bin/bash
set -e
# Tools
apt -y install ipvsadm libnl-3-dev libnl-genl-3-dev
# Module
modprobe ip_vs
modprobe nf_conntrack_ipv4
modprobe dummy numdummies=1
echo "ip_vs" > /etc/modules-load.d/ip_vs.conf
echo "nf_conntrack_ipv4" > /etc/modules-load.d/nf_conntrack_ipv4.conf
echo "dummy" > /etc/modules-load.d/dummy.conf
echo "options dummy numdummies=1" > /etc/modprobe.d/dummy.conf
# dummy interface
ip link add dummy0 type dummy || true
cat > /etc/systemd/network/10-dummy0.netdev <<EOF
[NetDev]
Name=dummy0
Kind=dummy
EOF
DIR=./seesaw_files
mkdir -p /var/log/seesaw
mkdir -p /etc/seesaw
mkdir -p /usr/local/seesaw
cp $DIR/bin/* /usr/local/seesaw/
chmod a+x /usr/local/seesaw/*
cp $DIR/cfg/watchdog.cfg /etc/seesaw
cat > /etc/seesaw/seesaw.cfg <<EOF
[cluster]
anycast_enabled = false
name = bundled-seesaw-onprem
node_ipv4 = $NODE_IP
peer_ipv4 = $PEER_IP
vip_ipv4 = $VIP
vrid = $VRID
[config_server]
primary = 127.0.0.1
[interface]
node = ens192
lb = ens224
EOF
cat > /etc/seesaw/cluster.pb <<EOF
seesaw_vip: <
fqdn: "seesaw-vip."
ipv4: "$VIP/$NODE_NETMASK"
status: PRODUCTION
>
node: <
fqdn: "node.$NODE_IP."
ipv4: "$NODE_IP/$NODE_NETMASK"
>
node: <
fqdn: "node.$PEER_IP."
ipv4: "$PEER_IP/$NODE_NETMASK"
>
EOF
cp $DIR/cfg/seesaw_watchdog.service /etc/systemd/system
systemctl --system daemon-reload
Seesaw neukonfigurieren
In der folgenden Konfiguration werden IP-Adressen für Ihre Clusterknoten angegeben. Außerdem werden VIPs für Ihre Steuerungsebenen und Ingress-Controller angegeben. In der vorliegenden Konfiguration gibt die Konfiguration folgende Adressen an:
100.115.222.143 ist der VIP für die Administrator-Steuerungsebene.
100.115.222.144 ist der VIP für den Administratorcluster-Ingress-Controller.
100.115.222.146 ist der VIP für die Nutzer-Steuerungsebene.
100.115.222.145 ist der VIP für den Ingress-Controller des Nutzerclusters.
Die Knotenadressen des Administratorclusters lauten 100.115.222.163, 100.115.222.164, 100.115.222.165 und 100.115.222.166.
Die Knotenadresse des Nutzerclusters lautet 100.115.222.167, 100.115.222.168 und 100.115.222.169.
Bearbeiten Sie die Konfiguration so, dass sie die VIPs und IP-Adressen enthält, die Sie für Ihre Administrator- und Nutzercluster ausgewählt haben. Fügen Sie dann auf jeder Seesaw-VM die Konfiguration an /etc/seesaw/cluster.pb
an:
Beachten Sie, dass die Steuerungsebene des Nutzerclusters als Dienst im Administratorcluster implementiert ist. Die Knoten-IP-Adressen unter user-1-control-plane
sind also die Adressen der Administratorclusterknoten.
vserver: <
name: "admin-control-plane"
entry_address: <
fqdn: "admin-control-plane"
ipv4: "100.115.222.143/32"
>
rp: "cloudysanfrancisco@gmail.com"
vserver_entry: <
protocol: TCP
port: 443
scheduler: WLC
mode: DSR
healthcheck: <
type: HTTP
port: 10256
mode: PLAIN
proxy: false
tls_verify: false
send: "/healthz"
>
>
backend: <
host: <
fqdn: "admin-1"
ipv4: "100.115.222.163/32"
>
>
backend: <
host: <
fqdn: "admin-2"
ipv4: "100.115.222.164/32"
>
>
backend: <
host: <
fqdn: "admin-3"
ipv4: "100.115.222.165/32"
>
>
backend: <
host: <
fqdn: "admin-4"
ipv4: "100.115.222.166/32"
>
>
>
vserver: <
name: "admin-ingress-controller"
entry_address: <
fqdn: "admin-ingress-controller"
ipv4: "100.115.222.144/32"
>
rp: "cloudysanfrancisco@gmail.com"
vserver_entry: <
protocol: TCP
port: 80
scheduler: WLC
mode: DSR
healthcheck: <
type: HTTP
port: 10256
mode: PLAIN
proxy: false
tls_verify: false
send: "/healthz"
>
>
vserver_entry: <
protocol: TCP
port: 443
scheduler: WLC
mode: DSR
healthcheck: <
type: HTTP
port: 10256
mode: PLAIN
proxy: false
tls_verify: false
send: "/healthz"
>
>
backend: <
host: <
fqdn: "admin-1"
ipv4: "100.115.222.163/32"
>
>
backend: <
host: <
fqdn: "admin-2"
ipv4: "100.115.222.164/32"
>
>
backend: <
host: <
fqdn: "admin-3"
ipv4: "100.115.222.165/32"
>
>
backend: <
host: <
fqdn: "admin-4"
ipv4: "100.115.222.166/32"
>
>
>
vserver: <
name: "user-1-control-plane"
entry_address: <
fqdn: "user-1-control-plane"
ipv4: "100.115.222.146/32"
>
rp: "cloudysanfrancisco@gmail.com"
vserver_entry: <
protocol: TCP
port: 443
scheduler: WLC
mode: DSR
healthcheck: <
type: HTTP
port: 10256
mode: PLAIN
proxy: false
tls_verify: false
send: "/healthz"
>
>
backend: <
host: <
fqdn: "admin-1"
ipv4: "100.115.222.163/32"
>
>
backend: <
host: <
fqdn: "admin-2"
ipv4: "100.115.222.164/32"
>
>
backend: <
host: <
fqdn: "admin-3"
ipv4: "100.115.222.165/32"
>
>
backend: <
host: <
fqdn: "admin-4"
ipv4: "100.115.222.166/32"
>
>
>
vserver: <
name: "user-1-ingress-controller"
entry_address: <
fqdn: "user-1-ingress-controller"
ipv4: "100.115.222.145/32"
>
rp: "cloudysanfrancisco@gmail.com"
vserver_entry: <
protocol: TCP
port: 80
scheduler: WLC
mode: DSR
healthcheck: <
type: HTTP
port: 10256
mode: PLAIN
proxy: false
tls_verify: false
send: "/healthz"
>
>
vserver_entry: <
protocol: TCP
port: 443
scheduler: WLC
mode: DSR
healthcheck: <
type: HTTP
port: 10256
mode: PLAIN
proxy: false
tls_verify: false
send: "/healthz"
>
>
backend: <
host: <
fqdn: "user-1"
ipv4: "100.115.222.167/32"
>
>
backend: <
host: <
fqdn: "user-2"
ipv4: "100.115.222.168/32"
>
>
backend: <
host: <
fqdn: "user-3"
ipv4: "100.115.222.169/32"
>
>
>
Seesaw-Dienst starten
Führen Sie auf jeder Seesaw-VM den folgenden Befehl aus:
systemctl --now enable seesaw_watchdog.service
Seesaw wird jetzt auf beiden Seesaw-VMs ausgeführt. Sie können die Logs unter /var/log/seesaw/
prüfen.
Cluster-Konfigurationsdatei ändern
Bevor Sie einen Cluster erstellen, generieren Sie eine Cluster-Konfigurationsdatei. Füllen Sie die Clusterkonfigurationsdatei wie unter Konfigurationsdatei ändern beschrieben aus.
Setzen Sie insbesondere lbmode
auf "Manuell". Füllen Sie auch die Felder manuallbspec
und vips
unter admincluster
und usercluster
aus. Beispiel:
admincluster: manuallbspec: ingresshttpnodeport: 32527 ingresshttpsnodeport: 30139 controlplanenodeport: 30968 vips: controlplanevip: "100.115.222.143" ingressvip: "100.115.222.144" usercluster: manuallbspec: ingresshttpnodeport: 30243 ingresshttpsnodeport: 30879 controlplanenodeport: 30562 vips: controlplanevip: "100.115.222.146" ingressvip: "100.115.222.145" lbmode: "Manual"
Bekannte Probleme
Derzeit unterstützt die Validierung des Load-Balancers von gkectl
Seesaw nicht und kann Fehler zurückgeben. Wenn Sie Cluster installieren oder aktualisieren, die die Wippe verwenden, übergeben Sie das Flag --skip-validation-load-balancer
.
Weitere Informationen finden Sie unter Fehlerbehebung.