En este documento, se explica cómo puedes mantener una implementación de Spanner Omni. El mantenimiento de una implementación de Spanner Omni incluye verificaciones de estado de rutina, la baja de elementos en mal estado y el reemplazo de nodos de servidor o discos defectuosos para garantizar la estabilidad y la coherencia del clúster. Administrar el estado de la base de datos protege tus bases de datos de las interrupciones no planificadas y mantiene la redundancia del grupo de consenso de Paxos subyacente.
Realizar el mantenimiento te ayuda a hacer lo siguiente:
Garantiza la alta disponibilidad: Aprovisiona de nuevo las máquinas virtuales (VM) o los pods en mal estado para mantener la redundancia del servidor de bases de datos. Esto te ayuda a mantener tus aplicaciones en funcionamiento si falla el hardware.
Protege la seguridad y la integridad de los datos: Desactiva los nodos con discos defectuosos para evitar que las fallas de almacenamiento se propaguen a otras partes de la base de datos. Esto también garantiza que los servidores desconectados no registren actualizaciones en conflicto.
Antes de comenzar
Antes de realizar el mantenimiento de tu implementación de Kubernetes, debes hacer lo siguiente:
Crea una implementación de Spanner Omni. Para obtener más información, consulta Crea una implementación en Kubernetes o Crea una implementación en VMs.
Descarga y, luego, instala la CLI de Spanner Omni.
Para las implementaciones en Kubernetes, instala Helm y crea una configuración de gráfico de Helm.
Reemplaza un servidor
Es posible que debas reemplazar un servidor en tu implementación para resolver fallas del sistema o de almacenamiento.
Reemplaza un servidor raíz
Para reemplazar un servidor raíz, selecciona la pestaña de tu entorno:
Kubernetes
Para reemplazar un servidor raíz en una implementación de Kubernetes, sigue estos pasos. Si bien no se admite agregar más servidores raíz a una implementación de Kubernetes existente, puedes reemplazar los servidores raíz existentes para resolver cualquier error irrecuperable que experimentes.
Borra el servidor que deseas reemplazar:
spanner deployment servers delete SERVER_ENDPOINT --zone=ZONEReemplaza lo siguiente:
SERVER_ENDPOINT: Es el extremo del pod del servidor que se borrará, con el formatoSERVER.pod.NAMESPACE:PORT, por ejemplo,spanner-a-1.pod.spanner-ns:15000. Para encontrar los extremos del servidor en tu implementación, ejecutaspanner deployment servers list --zone=ZONEpara enumerar los servidores de implementación.ZONE: Es la zona que contiene el servidor, por ejemplo,us-central1-a.
Este paso puede tardar unos minutos según el volumen de datos del servidor. Spanner Omni reubica los datos de este servidor a otros servidores de la implementación. Asegúrate de que se haya completado la eliminación del servidor antes de continuar con el siguiente paso.
Para hacer un seguimiento del progreso de la eliminación, verifica el estado del servidor:
spanner deployment servers describe SERVER_ENDPOINT --zone=ZONEEspera hasta que el comando muestre un error de
NOT_FOUNDo indique que el servidor ya no está registrado.Borra la reclamación de volumen persistente (PVC) para el pod que aloja el servidor:
kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACEReemplaza lo siguiente:
DATA_VOLUME_NAME: Es el nombre del volumen de datos, por ejemplo,data-volume-spanner-a-1. Para encontrar el nombre del volumen de datos, ejecutakubectl get pvc -n NAMESPACEpara enumerar las PVC en tu espacio de nombres.NAMESPACE: Es el espacio de nombres de la implementación, por ejemplo,spanner-ns.
Borra el Pod:
kubectl delete pod POD_NAME -n NAMESPACEReemplaza
POD_NAMEpor el nombre del pod del servidor que deseas borrar, por ejemplo,spanner-a-1.Kubernetes inicia automáticamente un servidor nuevo en un Pod de reemplazo y adjunta un PVC nuevo.
Agrega el servidor nuevo a la implementación:
spanner deployment servers create SERVER_ENDPOINT --zone=ZONEVerifica que los argumentos coincidan con el nuevo extremo y la nueva zona del pod, por ejemplo, usando
spanner-a-1.pod.spanner-ns:15000como el extremo yus-central1-acomo la zona.
VM
Para reemplazar un servidor raíz en una implementación de VM, sigue estos pasos:
Borra el servidor que deseas reemplazar:
spanner deployment servers delete SERVER_ENDPOINT --zone=ZONEReemplaza lo siguiente:
SERVER_ENDPOINT: La dirección IP o el nombre de host y el puerto del servidor, por ejemplo,spanner-vm-1.example.com:15000. Para encontrar los extremos del servidor, ejecutaspanner deployment servers list --zone=ZONEpara enumerar los servidores de implementación.ZONE: Es la zona que contiene el servidor, por ejemplo,us-central1-a.
Este paso puede tardar unos minutos según el volumen de datos del servidor. Spanner Omni reubica los datos de este servidor a otros servidores de la implementación. Asegúrate de que se haya completado la eliminación del servidor antes de continuar con el siguiente paso.
Para hacer un seguimiento del progreso de la eliminación, verifica el estado del servidor:
spanner deployment servers describe SERVER_ENDPOINT --zone=ZONEEspera hasta que el comando muestre un error de
NOT_FOUNDo indique que el servidor ya no está registrado.Vuelve a aprovisionar el servidor con almacenamiento limpio, como se explica en Crea una implementación para Spanner Omni en VMs:
spanner start \ --root \ --server-address=HOSTNAME \ --zone=ZONE \ --base-dir=BASE_DIRReemplaza lo siguiente:
HOSTNAME: Es el FQDN o el nombre de host de la VM nueva que se puede resolver; por ejemplo,spanner-vm-1.example.com.ZONE: Es la zona de destino, por ejemplo,us-central1-a.BASE_DIR: Es la ruta de acceso en la que se almacenan los datos, por ejemplo,./span-dir.
Agrega el servidor nuevo a la implementación:
spanner deployment servers create SERVER_ENDPOINT --zone=ZONEVerifica que los argumentos coincidan con los parámetros del nuevo servidor, por ejemplo, usando
spanner-vm-1.example.com:15000como el extremo yus-central1-acomo la zona.
Reemplaza un servidor no raíz
Para reemplazar un servidor que no es raíz, selecciona la pestaña correspondiente a tu entorno:
Kubernetes
Para reemplazar un servidor no raíz en una implementación de Kubernetes, sigue estos pasos:
Borra el servidor que deseas reemplazar:
spanner deployment servers delete SERVER_ENDPOINT --zone=ZONEReemplaza lo siguiente:
SERVER_ENDPOINT: Es el extremo del pod del servidor que se borrará, con el formatoSERVER.pod.NAMESPACE:PORT, por ejemplo,spanner-a-4.pod.spanner-ns:15000. Para encontrar los extremos del servidor en tu implementación, ejecutaspanner deployment servers list --zone=ZONEpara enumerar los servidores de implementación.ZONE: Es la zona que contiene el servidor, por ejemplo,us-central1-a.
Este paso puede tardar unos minutos según el volumen de datos del servidor. Spanner Omni reubica los datos de este servidor a otros servidores de la implementación. Asegúrate de que se haya completado la eliminación del servidor antes de continuar con el siguiente paso.
Para hacer un seguimiento del progreso de la eliminación, verifica el estado del servidor:
spanner deployment servers describe SERVER_ENDPOINT --zone=ZONEEspera hasta que el comando muestre un error de
NOT_FOUNDo indique que el servidor ya no está registrado.Borra la reclamación de volumen persistente (PVC) para el pod que aloja el servidor:
kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACEReemplaza lo siguiente:
DATA_VOLUME_NAME: Es el nombre del volumen de datos, por ejemplo,data-volume-spanner-a-4. Para encontrar el nombre del volumen de datos, ejecutakubectl get pvc -n NAMESPACEpara enumerar las PVC en tu espacio de nombres.NAMESPACE: Es el espacio de nombres de la implementación, por ejemplo,spanner-ns.
Borra el Pod:
kubectl delete pod POD_NAME -n NAMESPACEReemplaza
POD_NAMEpor el nombre del pod del servidor que deseas borrar, por ejemplo,spanner-a-4.Kubernetes inicia automáticamente un servidor nuevo en un Pod de reemplazo y adjunta un PVC nuevo. Spanner Omni registra automáticamente el nuevo servidor no raíz en la implementación.
VM
Para reemplazar un servidor no raíz en una implementación de VM, sigue estos pasos:
Borra el servidor que deseas reemplazar:
spanner deployment servers delete SERVER_ENDPOINT --zone=ZONEReemplaza lo siguiente:
SERVER_ENDPOINT: La dirección IP o el nombre de host y el puerto del servidor, por ejemplo,spanner-vm-4.example.com:15000. Para encontrar los extremos del servidor, ejecutaspanner deployment servers list --zone=ZONEpara enumerar los servidores de implementación.ZONE: Es la zona que contiene el servidor, por ejemplo,us-central1-a.
Este paso puede tardar unos minutos según el volumen de datos del servidor. Spanner Omni reubica los datos de este servidor a otros servidores de la implementación. Asegúrate de que se haya completado la eliminación del servidor antes de continuar con el siguiente paso.
Para hacer un seguimiento del progreso de la eliminación, verifica el estado del servidor:
spanner deployment servers describe SERVER_ENDPOINT --zone=ZONEEspera hasta que el comando muestre un error de
NOT_FOUNDo indique que el servidor ya no está registrado.Vuelve a aprovisionar el servidor no raíz con almacenamiento limpio, como se explica en Agrega servidores no raíz. El servidor se agrega automáticamente a la implementación.