Cette page explique comment configurer l'équilibreur de charge Seesaw pour un cluster GKE On-Prem.
Les clusters GKE On-Prem peuvent s'exécuter avec l'un des deux modes d'équilibrage de charge : intégré ou manuel. Pour utiliser l'équilibreur de charge Seesaw, utilisez le mode d'équilibrage de charge manuel.
Étapes communes à tout équilibrage de charge manuel
Avant de configurer votre équilibreur de charge Seesaw, suivez les étapes ci-après, qui sont communes à toute configuration d'équilibrage de charge manuel :
Réserver des adresses IP et une adresse IP virtuelle pour les VM Seesaw
Réservez deux adresses IP pour une paire de VM Seesaw. Réservez également une seule adresse IP virtuelle pour la paire de VM Seesaw. Ces trois adresses doivent se trouver sur le même réseau VLAN que les nœuds de votre cluster.
Créer des VM Seesaw
Créez deux VM propres dans votre environnement vSphere pour exécuter une paire active-passive Seesaw. Ubuntu 18.04 + noyau Linux 4.15 est recommandé pour les VM Seesaw, bien qu'il existe d'autres versions d'OS qui fonctionnent avec Seesaw.
Les exigences spécifiques aux deux VM sont les suivantes :
Chaque VM possède une carte d'interface réseau appelée ens192. Cette carte d'interface réseau est configurée avec l'adresse IP de la VM.
Chaque VM possède une carte d'interface réseau nommée ens224. Cette carte d'interface réseau n'a pas besoin d'adresse IP.
Les VM doivent se trouver sur le même réseau VLAN que les nœuds de votre cluster.
Le groupe de ports de l'objet ens224 doit autoriser les modifications de l'adresse MAC et les transmissions falsifiées. En effet, les VM Seesaw utilisent le protocole VRRP (Virtual Router Redundancy Protocol), ce qui signifie que Seesaw doit pouvoir configurer les adresses MAC des interfaces réseau. En particulier, Seesaw doit être en mesure de définir l'adresse MAC sur une adresse MAC VRRP au format 00-00-5E-00-01-[VRID], où [VRID] est un identifiant de routeur virtuel pour la paire Seesaw.
Vous pouvez configurer cela dans l'interface utilisateur de vSphere dans les paramètres de stratégie du groupe de ports.
Compiler Seesaw
Pour créer les binaires Seesaw, exécutez le script suivant sur une machine sur laquelle Golang est installé :
#!/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
Cela génère un répertoire seesaw_files
qui contient les binaires et les fichiers de configuration de Seesaw. Pour afficher les fichiers, exécutez la commande tree
:
tree seesaw_files
Le résultat affiche les répertoires et les fichiers générés :
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
Exporter des variables d'environnement
Avant de configurer vos VM Seesaw, vous devez exporter plusieurs variables d'environnement.
Sur chaque VM Seesaw, exportez les variables d'environnement suivantes :
NODE_IP
: Adresse IP de la VM Seesaw.PEER_IP
: Adresse IP de l'autre VM Seesaw.NODE_NETMASK
: Longueur du préfixe de la plage CIDR de vos nœuds de cluster.VIP
: Adresse IP virtuelle que vous avez réservée pour la paire de VM Seesaw.VRID
: Identifiant de routeur virtuel que vous souhaitez utiliser pour la paire Seesaw.
Voici un exemple :
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 VRID=128
Configurer des VM Seesaw
Copiez le répertoire seesaw_files
sur les deux VM Seesaw.
Sur chaque VM Seesaw, dans le répertoire seesaw_files
, exécutez le script suivant :
# 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
Reconfigurer Seesaw
La configuration suivante spécifie les adresses IP de vos nœuds de cluster. Elle spécifie également les adresses IP virtuelles de vos plans de contrôle et de vos contrôleurs d'entrée. Comme indiqué, la configuration spécifie les adresses suivantes :
100.115.222.143 est l'adresse IP virtuelle du plan de contrôle d'administrateur.
100.115.222.144 est l'adresse IP virtuelle du contrôleur d'entrée du cluster d'administrateur.
100.115.222.146 est l'adresse IP virtuelle du plan de contrôle d'utilisateur.
100.115.222.145 est l'adresse IP virtuelle du contrôleur d'entrée du cluster d'utilisateur.
Les adresses de nœuds de cluster d'administrateur sont 100.115.222.163, 100.115.222.164, 100.115.222.165 et 100.115.222.166.
Les adresses de nœuds de cluster d'administrateur sont 100.115.222.167, 100.115.222.168 et 100.115.222.169.
Modifiez la configuration de sorte qu'elle contienne les adresses IP et les adresses IP virtuelles que vous avez choisies pour vos clusters d'administrateurs et d'utilisateurs. Ensuite, sur chaque VM Seesaw, ajoutez la configuration à /etc/seesaw/cluster.pb
:
Notez que le plan de contrôle du cluster d'utilisateur est mis en œuvre en tant que service dans le cluster d'administrateur. Par conséquent, les adresses IP des nœuds sous user-1-control-plane
sont les adresses des nœuds du cluster d'administrateur.
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"
>
>
>
Démarrer le service Seesaw
Sur chaque VM Seesaw, exécutez la commande suivante :
systemctl --now enable seesaw_watchdog.service
Seesaw fonctionne désormais sur les deux VM Seesaw. Vous pouvez consulter les journaux sous /var/log/seesaw/
.
Modifier le fichier de configuration du cluster
Avant de créer un cluster, vous devez générer un fichier de configuration pour celui-ci. Remplissez le fichier de configuration du cluster comme décrit dans la section Modifier le fichier de configuration.
En particulier, définissez lbmode
sur "Manuel". Remplissez également les champs manuallbspec
et vips
sous admincluster
et usercluster
. Exemple :
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"
Problèmes connus
Actuellement, la validation de l'équilibreur de charge de gkectl
n'est pas compatible avec Seesaw et peut renvoyer des erreurs. Si vous installez ou mettez à jour des clusters utilisant Seesaw, transmettez l'option --skip-validation-load-balancer
.
Pour en savoir plus, consultez Dépannage.