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 :
Créez un déploiement Spanner Omni. Pour en savoir plus, consultez Créer un déploiement sur Kubernetes ou Créer un déploiement sur des VM.
Téléchargez et installez la CLI Spanner Omni.
Pour les déploiements sur Kubernetes, installez Helm et créez une configuration de chart Helm.
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.
Supprimez le serveur que vous souhaitez remplacer :
spanner deployment servers delete SERVER_ENDPOINT --zone=ZONERemplacez les éléments suivants :
SERVER_ENDPOINT: point de terminaison du pod de serveur à supprimer, au formatSERVER.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écutantspanner 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=ZONEAttendez que la commande renvoie une erreur
NOT_FOUNDou indique que le serveur n'est plus enregistré.Supprimez la revendication de volume persistant (PVC) pour le pod hébergeant le serveur :
kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACERemplacez 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écutantkubectl get pvc -n NAMESPACE.NAMESPACE: espace de noms du déploiement (par exemple,spanner-ns).
Supprimez le pod :
kubectl delete pod POD_NAME -n NAMESPACERemplacez
POD_NAMEpar le nom du pod de serveur à supprimer, par exemplespanner-a-1.Kubernetes démarre automatiquement un nouveau serveur dans un pod de remplacement et associe un nouveau PVC.
Ajoutez le nouveau serveur au déploiement :
spanner deployment servers create SERVER_ENDPOINT --zone=ZONEVé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:15000comme point de terminaison etus-central1-acomme zone.
VM
Pour remplacer un serveur racine dans un déploiement de VM, procédez comme suit :
Supprimez le serveur que vous souhaitez remplacer :
spanner deployment servers delete SERVER_ENDPOINT --zone=ZONERemplacez les éléments suivants :
SERVER_ENDPOINT: adresse IP, nom d'hôte et port du serveur, par exemplespanner-vm-1.example.com:15000. Pour trouver les points de terminaison du serveur, listez les serveurs de déploiement en exécutantspanner 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=ZONEAttendez que la commande renvoie une erreur
NOT_FOUNDou indique que le serveur n'est plus enregistré.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_DIRRemplacez 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 exempleus-central1-a.BASE_DIR: chemin d'accès où les données sont stockées (par exemple,./span-dir).
Ajoutez le nouveau serveur au déploiement :
spanner deployment servers create SERVER_ENDPOINT --zone=ZONEVérifiez que les arguments correspondent aux paramètres du nouveau serveur (par exemple, en utilisant
spanner-vm-1.example.com:15000comme point de terminaison etus-central1-acomme 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 :
Supprimez le serveur que vous souhaitez remplacer :
spanner deployment servers delete SERVER_ENDPOINT --zone=ZONERemplacez les éléments suivants :
SERVER_ENDPOINT: point de terminaison du pod de serveur à supprimer, au formatSERVER.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écutantspanner 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=ZONEAttendez que la commande renvoie une erreur
NOT_FOUNDou indique que le serveur n'est plus enregistré.Supprimez la revendication de volume persistant (PVC) pour le pod hébergeant le serveur :
kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACERemplacez 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écutantkubectl get pvc -n NAMESPACE.NAMESPACE: espace de noms du déploiement (par exemple,spanner-ns).
Supprimez le pod :
kubectl delete pod POD_NAME -n NAMESPACERemplacez
POD_NAMEpar le nom du pod de serveur à supprimer, par exemplespanner-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 :
Supprimez le serveur que vous souhaitez remplacer :
spanner deployment servers delete SERVER_ENDPOINT --zone=ZONERemplacez les éléments suivants :
SERVER_ENDPOINT: adresse IP, nom d'hôte et port du serveur, par exemplespanner-vm-4.example.com:15000. Pour trouver les points de terminaison du serveur, listez les serveurs de déploiement en exécutantspanner 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=ZONEAttendez que la commande renvoie une erreur
NOT_FOUNDou indique que le serveur n'est plus enregistré.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.