Cómo mantener una implementación de Spanner Omni

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:

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.

  1. Borra el servidor que deseas reemplazar:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    Reemplaza lo siguiente:

    • SERVER_ENDPOINT: Es el extremo del pod del servidor que se borrará, con el formato SERVER.pod.NAMESPACE:PORT, por ejemplo, spanner-a-1.pod.spanner-ns:15000. Para encontrar los extremos del servidor en tu implementación, ejecuta spanner deployment servers list --zone=ZONE para 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=ZONE
    

    Espera hasta que el comando muestre un error de NOT_FOUND o indique que el servidor ya no está registrado.

  2. Borra la reclamación de volumen persistente (PVC) para el pod que aloja el servidor:

    kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACE
    

    Reemplaza 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, ejecuta kubectl get pvc -n NAMESPACE para enumerar las PVC en tu espacio de nombres.
    • NAMESPACE: Es el espacio de nombres de la implementación, por ejemplo, spanner-ns.
  3. Borra el Pod:

    kubectl delete pod POD_NAME -n NAMESPACE
    

    Reemplaza POD_NAME por 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.

  4. Agrega el servidor nuevo a la implementación:

    spanner deployment servers create SERVER_ENDPOINT --zone=ZONE
    

    Verifica que los argumentos coincidan con el nuevo extremo y la nueva zona del pod, por ejemplo, usando spanner-a-1.pod.spanner-ns:15000 como el extremo y us-central1-a como la zona.

VM

Para reemplazar un servidor raíz en una implementación de VM, sigue estos pasos:

  1. Borra el servidor que deseas reemplazar:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    Reemplaza 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, ejecuta spanner deployment servers list --zone=ZONE para 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=ZONE
    

    Espera hasta que el comando muestre un error de NOT_FOUND o indique que el servidor ya no está registrado.

  2. 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_DIR
    

    Reemplaza 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.
  3. Agrega el servidor nuevo a la implementación:

    spanner deployment servers create SERVER_ENDPOINT --zone=ZONE
    

    Verifica que los argumentos coincidan con los parámetros del nuevo servidor, por ejemplo, usando spanner-vm-1.example.com:15000 como el extremo y us-central1-a como 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:

  1. Borra el servidor que deseas reemplazar:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    Reemplaza lo siguiente:

    • SERVER_ENDPOINT: Es el extremo del pod del servidor que se borrará, con el formato SERVER.pod.NAMESPACE:PORT, por ejemplo, spanner-a-4.pod.spanner-ns:15000. Para encontrar los extremos del servidor en tu implementación, ejecuta spanner deployment servers list --zone=ZONE para 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=ZONE
    

    Espera hasta que el comando muestre un error de NOT_FOUND o indique que el servidor ya no está registrado.

  2. Borra la reclamación de volumen persistente (PVC) para el pod que aloja el servidor:

    kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACE
    

    Reemplaza 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, ejecuta kubectl get pvc -n NAMESPACE para enumerar las PVC en tu espacio de nombres.
    • NAMESPACE: Es el espacio de nombres de la implementación, por ejemplo, spanner-ns.
  3. Borra el Pod:

    kubectl delete pod POD_NAME -n NAMESPACE
    

    Reemplaza POD_NAME por 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:

  1. Borra el servidor que deseas reemplazar:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    Reemplaza 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, ejecuta spanner deployment servers list --zone=ZONE para 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=ZONE
    

    Espera hasta que el comando muestre un error de NOT_FOUND o indique que el servidor ya no está registrado.

  2. 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.

Próximos pasos