Skip to main content

Evacuación de un nodo de clúster que ejecuta servicios de datos

Si un nodo del clúster GitHub Enterprise Server ejecuta servicios que almacenan datos distribuidos, puedes garantizar la redundancia mientras te preparas para reemplazar el nodo mediante la evacuación de los datos del nodo.

¿Quién puede utilizar esta característica?

GitHub determina la idoneidad para la agrupación en clústeres y debe habilitar la configuración de la licencia de la instancia. La agrupación en clústeres conlleva una planeación cuidadosa y una sobrecarga administrativa adicional. Para obtener más información, vea «Acerca de las agrupaciones».

Acerca de la evacuación de nodos de clúster que ejecutan servicios de datos

En una configuración de clúster para GitHub Enterprise Server, es posible que tengas que desconectar un nodo individual. Por ejemplo, puede que tengas que reemplazar la máquina virtual del nodo. Si el nodo que deseas reemplazar funciona en el nivel de almacenamiento, GitHub recomienda primero evacuar los servicios de datos del nodo. La evacuación garantiza que los nodos restantes contengan las copias mínimas esperadas de los datos.

Para más información sobre los nodos y los niveles de servicio para GitHub Enterprise Server, consulta "Acerca de los nodos de agrupación".

Warning

  • Para evitar la pérdida de datos durante el reemplazo de un nodo, GitHub recomienda encarecidamente la evacuación de los servicios de datos aplicables en el nodo antes de desconectar el nodo.
  • Para garantizar la redundancia de cualquier servicio de datos en el clúster, las copias de datos deben existir en al menos tres nodos. Por ejemplo, cuando cuatro o más nodos almacenan datos de Git, durante la evacuación, los datos del repositorio evacuados se moverán del nodo que va a evacuar a los otros tres nodos. Si solo tienes tres nodos que almacenan datos para un servicio, la evacuación de un nodo podría producir un error y dar lugar a una replicación insuficiente de los datos.

Evacuación de un nodo de clúster que ejecuta servicios de datos

Si tienes previsto desconectar un nodo y el nodo ejecuta cualquiera de los siguientes roles, evacua cada servicio aplicable antes de desconectar el nodo.

Serviciodata
git-serverRepositorios
pages-serverCompilaciones de sitio para GitHub Pages
storage-server
  • Datos almacenados en repositorios con Almacenamiento de archivos de gran tamaño de Git
  • Imágenes de avatar
  • Archivos adjuntos de comentarios en la interfaz de usuario web
  • Archivos de versión
  1. Ingresa por SSH a cualquier nodo dentro de tu clúster. Para obtener más información, vea «Acceder al shell administrativo (SSH)».

  2. Para encontrar la UUID del nodo a evacuar, ejecuta el siguiente comando. Reemplaza HOSTNAME por el nombre de host del nodo. Usarás el UUID en los comandos posteriores.

    ghe-config cluster.HOSTNAME.uuid
    
  3. Para cada servicio aplicable en el nodo, ejecuta los siguientes comandos para determinar los recuentos de datos iniciales. Para cada comando, reemplaza el UUID por el UUID del paso anterior.

    • git-server:

      • Comando:

        ghe-spokesctl server status git-server-UUID
        
      • Salida pertinente: NETWORKS, GISTS

    • pages-server:

      • Comando:

        echo "select count(*) from pages_replicas where host = 'pages-server-UUID'" | ghe-dbconsole -y
        
    • storage-server:

      • Comando:

        ghe-storage evacuation-status storage-server-UUID
        
      • Salida pertinente: Remaining item(s)

  4. Para evacuar un servicio aplicable en el nodo, ejecuta los siguientes comandos. Para cada comando, reemplaza el UUID por el UUID del paso anterior.

    • git-server:

      • Comando (reemplaza RAZÓN DE LA EVACUACIÓN por la razón de la evacuación):

        ghe-spokesctl server set evacuating git-server-UUID 'REASON FOR EVACUATION'
        
    • pages-server:

      • Comando:

        ghe-dpages evacuate pages-server-UUID
        
    • storage-server:

      1. Desconecta el servicio del nodo mediante la ejecución del comando siguiente.

        ghe-storage offline storage-server-UUID
        
      2. Evacua el nodo mediante la ejecución del comando siguiente.

        ghe-storage evacuate storage-server-UUID
        
  5. Para supervisar la evacuación de un servicio mientras GitHub Enterprise Server copia los datos, ejecuta los comandos siguientes. Para cada comando, reemplaza el UUID por el UUID del paso anterior.

    Warning

    No desconectes el nodo hasta que se complete la evacuación. La evacuación se completa cuando los recuentos de datos alcanzan cero, lo que significa que todos los datos se almacenan de forma segura en otros nodos.

    • git-server:

      ghe-spokesctl server evac-status git-server-UUID
      
    • pages-server:

      echo "select count(*) from pages_replicas where host = 'pages-server-UUID'" | ghe-dbconsole -y
      
    • storage-server:

      ghe-storage evacuation-status storage-server-UUID
      
  6. Una vez completada la evacuación para el servicio, desconecta el nodo.