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".
Advertencias:
-
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.
Servicio | data |
---|---|
git-server | Repositorios |
pages-server | Compilaciones de sitio para GitHub Pages |
storage-server |
|
-
Ingresa por SSH a cualquier nodo dentro de tu clúster. Para obtener más información, vea «Acceder al shell administrativo (SSH)».
-
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
-
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-spokes evac-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)
-
-
-
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-spokes server evacuate git-server-UUID 'REASON FOR EVACUATION'
-
-
pages-server
:-
Comando:
ghe-dpages evacuate pages-server-UUID
-
-
storage-server
:-
Desconecta el servicio del nodo mediante la ejecución del comando siguiente.
ghe-storage offline storage-server-UUID
-
Evacua el nodo mediante la ejecución del comando siguiente.
ghe-storage evacuate storage-server-UUID
-
-
-
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.
Advertencia: 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-spokes 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
-
-
Una vez completada la evacuación para el servicio, desconecta el nodo.