15.2. Configuration du basculement IP


En tant qu'administrateur de grappe, vous pouvez configurer le basculement IP sur une grappe entière ou sur un sous-ensemble de nœuds, comme défini par le sélecteur d'étiquettes. Vous pouvez également configurer plusieurs configurations de déploiement du basculement IP dans votre grappe, chacune étant indépendante des autres.

La configuration du déploiement du basculement IP garantit qu'un pod de basculement s'exécute sur chacun des nœuds correspondant aux contraintes ou à l'étiquette utilisée.

Ce pod exécute Keepalived, qui peut surveiller un point d'extrémité et utiliser le protocole VRRP (Virtual Router Redundancy Protocol) pour basculer l'IP virtuelle (VIP) d'un nœud à l'autre si le premier nœud ne peut pas atteindre le service ou le point d'extrémité.

Pour une utilisation en production, définissez un selector qui sélectionne au moins deux nœuds, et définissez replicas égal au nombre de nœuds sélectionnés.

Conditions préalables

  • Vous êtes connecté au cluster avec un utilisateur disposant des privilèges cluster-admin.
  • Vous avez créé un secret de fabrication.

Procédure

  1. Créez un compte de service de basculement IP :

    $ oc create sa ipfailover
  2. Mise à jour des contraintes de contexte de sécurité (SCC) pour hostNetwork:

    $ oc adm policy add-scc-to-user privileged -z ipfailover
    $ oc adm policy add-scc-to-user hostnetwork -z ipfailover
  3. Créer un fichier YAML de déploiement pour configurer le basculement IP :

    Exemple de déploiement YAML pour la configuration du basculement IP

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ipfailover-keepalived 1
      labels:
        ipfailover: hello-openshift
    spec:
      strategy:
        type: Recreate
      replicas: 2
      selector:
        matchLabels:
          ipfailover: hello-openshift
      template:
        metadata:
          labels:
            ipfailover: hello-openshift
        spec:
          serviceAccountName: ipfailover
          privileged: true
          hostNetwork: true
          nodeSelector:
            node-role.kubernetes.io/worker: ""
          containers:
          - name: openshift-ipfailover
            image: quay.io/openshift/origin-keepalived-ipfailover
            ports:
            - containerPort: 63000
              hostPort: 63000
            imagePullPolicy: IfNotPresent
            securityContext:
              privileged: true
            volumeMounts:
            - name: lib-modules
              mountPath: /lib/modules
              readOnly: true
            - name: host-slash
              mountPath: /host
              readOnly: true
              mountPropagation: HostToContainer
            - name: etc-sysconfig
              mountPath: /etc/sysconfig
              readOnly: true
            - name: config-volume
              mountPath: /etc/keepalive
            env:
            - name: OPENSHIFT_HA_CONFIG_NAME
              value: "ipfailover"
            - name: OPENSHIFT_HA_VIRTUAL_IPS 2
              value: "1.1.1.1-2"
            - name: OPENSHIFT_HA_VIP_GROUPS 3
              value: "10"
            - name: OPENSHIFT_HA_NETWORK_INTERFACE 4
              value: "ens3" #The host interface to assign the VIPs
            - name: OPENSHIFT_HA_MONITOR_PORT 5
              value: "30060"
            - name: OPENSHIFT_HA_VRRP_ID_OFFSET 6
              value: "0"
            - name: OPENSHIFT_HA_REPLICA_COUNT 7
              value: "2" #Must match the number of replicas in the deployment
            - name: OPENSHIFT_HA_USE_UNICAST
              value: "false"
            #- name: OPENSHIFT_HA_UNICAST_PEERS
              #value: "10.0.148.40,10.0.160.234,10.0.199.110"
            - name: OPENSHIFT_HA_IPTABLES_CHAIN 8
              value: "INPUT"
            #- name: OPENSHIFT_HA_NOTIFY_SCRIPT 9
            #  value: /etc/keepalive/mynotifyscript.sh
            - name: OPENSHIFT_HA_CHECK_SCRIPT 10
              value: "/etc/keepalive/mycheckscript.sh"
            - name: OPENSHIFT_HA_PREEMPTION 11
              value: "preempt_delay 300"
            - name: OPENSHIFT_HA_CHECK_INTERVAL 12
              value: "2"
            livenessProbe:
              initialDelaySeconds: 10
              exec:
                command:
                - pgrep
                - keepalived
          volumes:
          - name: lib-modules
            hostPath:
              path: /lib/modules
          - name: host-slash
            hostPath:
              path: /
          - name: etc-sysconfig
            hostPath:
              path: /etc/sysconfig
          # config-volume contains the check script
          # created with `oc create configmap keepalived-checkscript --from-file=mycheckscript.sh`
          - configMap:
              defaultMode: 0755
              name: keepalived-checkscript
            name: config-volume
          imagePullSecrets:
            - name: openshift-pull-secret 13

    1
    Le nom du déploiement du basculement IP.
    2
    La liste des plages d'adresses IP à répliquer. Elle doit être fournie. Par exemple, 1.2.3.4-6,1.2.3.9.
    3
    Le nombre de groupes à créer pour VRRP. S'il n'est pas défini, un groupe est créé pour chaque plage IP virtuelle spécifiée avec la variable OPENSHIFT_HA_VIP_GROUPS.
    4
    Nom de l'interface que le basculement IP utilise pour envoyer le trafic VRRP. Par défaut, eth0 est utilisé.
    5
    Le module de basculement IP tente d'ouvrir une connexion TCP à ce port sur chaque VIP. Si la connexion est établie, le service est considéré comme étant en cours d'exécution. Si ce port est défini sur 0, le test est toujours réussi. La valeur par défaut est 80.
    6
    La valeur de décalage utilisée pour définir les ID des routeurs virtuels. L'utilisation de différentes valeurs de décalage permet à plusieurs configurations de basculement IP d'exister au sein d'un même cluster. Le décalage par défaut est 0, et la plage autorisée va de 0 à 255.
    7
    Le nombre de répliques à créer. Il doit correspondre à la valeur spec.replicas dans la configuration du déploiement du basculement IP. La valeur par défaut est 2.
    8
    Le nom de la chaîne iptables pour ajouter automatiquement une règle iptables afin d'autoriser le trafic VRRP. Si la valeur n'est pas définie, une règle iptables n'est pas ajoutée. Si la chaîne n'existe pas, elle n'est pas créée et Keepalived fonctionne en mode unicast. La valeur par défaut est INPUT.
    9
    Le nom du chemin complet dans le système de fichiers pod d'un script qui est exécuté chaque fois que l'état change.
    10
    Le nom du chemin complet dans le système de fichiers pod d'un script qui est périodiquement exécuté pour vérifier que l'application fonctionne.
    11
    La stratégie de gestion d'un nouvel hôte de priorité supérieure. La valeur par défaut est preempt_delay 300, ce qui fait qu'une instance Keepalived prend en charge un VIP après 5 minutes si un maître de priorité inférieure détient le VIP.
    12
    Période, en secondes, pendant laquelle le script de vérification est exécuté. La valeur par défaut est 2.
    13
    Créez le secret d'extraction avant de créer le déploiement, sinon vous obtiendrez une erreur lors de la création du déploiement.
Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.