Assurer la maintenance d'un déploiement Spanner Omni

Ce document explique comment gérer un déploiement Spanner Omni. La maintenance d'un déploiement Spanner Omni inclut des vérifications d'état régulières, la mise hors service des éléments non opérationnels et le remplacement des nœuds de serveur ou des disques défectueux pour assurer la stabilité et la cohérence du cluster. La gestion de l'état de santé des bases de données permet de les protéger contre les arrêts de service imprévus et de maintenir la redondance du groupe de consensus Paxos sous-jacent.

La maintenance vous permet :

  • Assurez une haute disponibilité : réapprovisionnez les machines virtuelles (VM) ou les pods non opérationnels pour maintenir la redondance du serveur de base de données. Cela vous permet de continuer à exécuter vos applications en cas de défaillance matérielle.

  • Protéger la sécurité et l'intégrité des données : mettez hors service les nœuds dont les disques sont défectueux pour éviter que les problèmes de stockage ne se propagent à d'autres parties de la base de données. Cela permet également de s'assurer que les serveurs déconnectés n'enregistrent pas de mises à jour conflictuelles.

Avant de commencer

Avant d'effectuer la maintenance de votre déploiement Kubernetes, vous devez procéder comme suit :

Remplacer un serveur

Vous devrez peut-être remplacer un serveur dans votre déploiement pour résoudre les problèmes liés au système ou au stockage.

Remplacer un serveur racine

Pour remplacer un serveur racine, sélectionnez l'onglet correspondant à votre environnement :

Kubernetes

Pour remplacer un serveur racine dans un déploiement Kubernetes, procédez comme suit. Bien qu'il ne soit pas possible d'ajouter des serveurs racine à un déploiement Kubernetes existant, vous pouvez remplacer les serveurs racine existants pour résoudre les erreurs irrécupérables que vous rencontrez.

  1. Supprimez le serveur que vous souhaitez remplacer :

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    Remplacez les éléments suivants :

    • SERVER_ENDPOINT : point de terminaison du pod de serveur à supprimer, au format SERVER.pod.NAMESPACE:PORT (par exemple, spanner-a-1.pod.spanner-ns:15000). Pour trouver les points de terminaison du serveur dans votre déploiement, listez les serveurs de déploiement en exécutant spanner deployment servers list --zone=ZONE.
    • ZONE : zone contenant le serveur (par exemple, us-central1-a).

    Cette étape peut prendre quelques minutes en fonction du volume de données sur le serveur. Spanner Omni transfère les données de ce serveur vers d'autres serveurs du déploiement. Assurez-vous que la suppression du serveur est terminée avant de passer à l'étape suivante.

    Pour suivre la progression de la suppression, vérifiez l'état du serveur :

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    Attendez que la commande renvoie une erreur NOT_FOUND ou indique que le serveur n'est plus enregistré.

  2. Supprimez la revendication de volume persistant (PVC) pour le pod hébergeant le serveur :

    kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACE
    

    Remplacez les éléments suivants :

    • DATA_VOLUME_NAME : nom du volume de données (par exemple, data-volume-spanner-a-1). Pour trouver le nom du volume de données, listez les PVC dans votre espace de noms en exécutant kubectl get pvc -n NAMESPACE.
    • NAMESPACE : espace de noms du déploiement (par exemple, spanner-ns).
  3. Supprimez le pod :

    kubectl delete pod POD_NAME -n NAMESPACE
    

    Remplacez POD_NAME par le nom du pod de serveur à supprimer, par exemple spanner-a-1.

    Kubernetes démarre automatiquement un nouveau serveur dans un pod de remplacement et associe un nouveau PVC.

  4. Ajoutez le nouveau serveur au déploiement :

    spanner deployment servers create SERVER_ENDPOINT --zone=ZONE
    

    Vérifiez que les arguments correspondent au nouveau point de terminaison et à la nouvelle zone du pod. Par exemple, utilisez spanner-a-1.pod.spanner-ns:15000 comme point de terminaison et us-central1-a comme zone.

VM

Pour remplacer un serveur racine dans un déploiement de VM, procédez comme suit :

  1. Supprimez le serveur que vous souhaitez remplacer :

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    Remplacez les éléments suivants :

    • SERVER_ENDPOINT : adresse IP, nom d'hôte et port du serveur, par exemple spanner-vm-1.example.com:15000. Pour trouver les points de terminaison du serveur, listez les serveurs de déploiement en exécutant spanner deployment servers list --zone=ZONE.
    • ZONE : zone contenant le serveur (par exemple, us-central1-a).

    Cette étape peut prendre quelques minutes en fonction du volume de données sur le serveur. Spanner Omni transfère les données de ce serveur vers d'autres serveurs du déploiement. Assurez-vous que la suppression du serveur est terminée avant de passer à l'étape suivante.

    Pour suivre la progression de la suppression, vérifiez l'état du serveur :

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    Attendez que la commande renvoie une erreur NOT_FOUND ou indique que le serveur n'est plus enregistré.

  2. Reprovisionnez le serveur avec un stockage propre, comme expliqué dans Créer un déploiement pour Spanner Omni sur des VM :

    spanner start \
      --root \
      --server-address=HOSTNAME \
      --zone=ZONE \
      --base-dir=BASE_DIR
    

    Remplacez les éléments suivants :

    • HOSTNAME : nom de domaine complet ou nom d'hôte résolvable de la nouvelle VM (par exemple, spanner-vm-1.example.com).
    • ZONE : zone cible, par exemple us-central1-a.
    • BASE_DIR : chemin d'accès où les données sont stockées (par exemple, ./span-dir).
  3. Ajoutez le nouveau serveur au déploiement :

    spanner deployment servers create SERVER_ENDPOINT --zone=ZONE
    

    Vérifiez que les arguments correspondent aux paramètres du nouveau serveur (par exemple, en utilisant spanner-vm-1.example.com:15000 comme point de terminaison et us-central1-a comme zone).

Remplacer un serveur non racine

Pour remplacer un serveur non racine, sélectionnez l'onglet correspondant à votre environnement :

Kubernetes

Pour remplacer un serveur non racine dans un déploiement Kubernetes, procédez comme suit :

  1. Supprimez le serveur que vous souhaitez remplacer :

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    Remplacez les éléments suivants :

    • SERVER_ENDPOINT : point de terminaison du pod de serveur à supprimer, au format SERVER.pod.NAMESPACE:PORT (par exemple, spanner-a-4.pod.spanner-ns:15000). Pour trouver les points de terminaison du serveur dans votre déploiement, listez les serveurs de déploiement en exécutant spanner deployment servers list --zone=ZONE.
    • ZONE : zone contenant le serveur (par exemple, us-central1-a).

    Cette étape peut prendre quelques minutes en fonction du volume de données sur le serveur. Spanner Omni transfère les données de ce serveur vers d'autres serveurs du déploiement. Assurez-vous que la suppression du serveur est terminée avant de passer à l'étape suivante.

    Pour suivre la progression de la suppression, vérifiez l'état du serveur :

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    Attendez que la commande renvoie une erreur NOT_FOUND ou indique que le serveur n'est plus enregistré.

  2. Supprimez la revendication de volume persistant (PVC) pour le pod hébergeant le serveur :

    kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACE
    

    Remplacez les éléments suivants :

    • DATA_VOLUME_NAME : nom du volume de données (par exemple, data-volume-spanner-a-4). Pour trouver le nom du volume de données, listez les PVC dans votre espace de noms en exécutant kubectl get pvc -n NAMESPACE.
    • NAMESPACE : espace de noms du déploiement (par exemple, spanner-ns).
  3. Supprimez le pod :

    kubectl delete pod POD_NAME -n NAMESPACE
    

    Remplacez POD_NAME par le nom du pod de serveur à supprimer, par exemple spanner-a-4.

    Kubernetes démarre automatiquement un nouveau serveur dans un pod de remplacement et associe un nouveau PVC. Spanner Omni enregistre automatiquement le nouveau serveur non racine dans le déploiement.

VM

Pour remplacer un serveur non racine dans un déploiement de VM, procédez comme suit :

  1. Supprimez le serveur que vous souhaitez remplacer :

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    Remplacez les éléments suivants :

    • SERVER_ENDPOINT : adresse IP, nom d'hôte et port du serveur, par exemple spanner-vm-4.example.com:15000. Pour trouver les points de terminaison du serveur, listez les serveurs de déploiement en exécutant spanner deployment servers list --zone=ZONE.
    • ZONE : zone contenant le serveur (par exemple, us-central1-a).

    Cette étape peut prendre quelques minutes en fonction du volume de données sur le serveur. Spanner Omni transfère les données de ce serveur vers d'autres serveurs du déploiement. Assurez-vous que la suppression du serveur est terminée avant de passer à l'étape suivante.

    Pour suivre la progression de la suppression, vérifiez l'état du serveur :

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    Attendez que la commande renvoie une erreur NOT_FOUND ou indique que le serveur n'est plus enregistré.

  2. Reprovisionnez le serveur non racine avec un stockage propre, comme expliqué dans Ajouter des serveurs non racine. Le serveur est automatiquement ajouté au déploiement.

Étapes suivantes