Acerca del equilibrio de carga de trabajo para un clúster GitHub Enterprise Server
Una instancia de GitHub Enterprise Server en una configuración de clúster asigna cada tarea a un nodo según el rol del nodo. Esta operación se denomina asignación.
Si otros nodos no pueden acceder a un nodo de clúster debido a un error de hardware o software, la instancia crea una nueva asignación para distribuir trabajos del nodo incorrecto a otro nodo que pueda controlar la carga de trabajo. En algunas situaciones, esta distribución no se produce automáticamente y un único nodo puede ejecutar más trabajos de los esperados.
Puedes administrar las asignaciones mediante la utilidad ghe-cluster-balance
, que puede mostrar el estado de las asignaciones existentes o forzar a la instancia a equilibrar las asignaciones. Por ejemplo, debes equilibrar las asignaciones después de agregar un nuevo nodo al clúster. Opcionalmente, puedes programar el equilibrio normal.
Puedes ejecutar los comandos siguientes desde cualquier nodo del clúster mediante el shell administrativo. Para obtener más información, consulte"Acceso al shell administrativo (SSH)".
Comprobación de la distribución de trabajos de clúster
En algunos casos, como un error de hardware, el software subyacente que administra las asignaciones migrará las tareas del nodo incorrecto a un nodo correcto. Si se recupera el nodo incorrecto, la tarea puede permanecer asignada al nodo recuperado, lo que puede dar lugar a un desequilibrio en la carga. El riesgo de error del trabajo puede aumentar si las asignaciones están desequilibradas y se produce un error en los nodos adicionales. Puedes comprobar la distribución de asignaciones mediante la utilidad ghe-cluster-balance status
.
-
Para ver una lista de asignaciones, ejecuta el siguiente comando. La utilidad muestra las asignaciones correctas en verde. Si algún trabajo no se distribuye correctamente, la utilidad muestra el recuento de asignaciones en rojo.
Shell ghe-cluster-balance status
ghe-cluster-balance status
-
Si un trabajo no se distribuye correctamente, inspecciona las asignaciones mediante la ejecución del comando siguiente. Reemplaza JOB por un único trabajo o una lista delimitada por comas de trabajos.
Shell ghe-cluster-balance status -j JOB
ghe-cluster-balance status -j JOB
Por ejemplo, para ver el estado de las asignaciones para el servidor HTTP de la instancia y el servicio de autorización, puedes ejecutar
ghe-cluster-balance status -j github-unicorn,authzd
.
Reequilibrio de asignaciones
Después de determinar qué trabajos están desequilibrados en los nodos del clúster, puedes reequilibrar las asignaciones mediante la utilidad ghe-cluster-balance rebalance
. La utilidad comprueba la distribución de los trabajos existentes. Si algún trabajo está desequilibrado, la utilidad muestra los trabajos y te pide que continúes. Si continúas, la utilidad crea nuevas asignaciones para redistribuir los trabajos.
-
Para realizar un simulacro y ver el resultado del reequilibrio sin realizar cambios, ejecuta el siguiente comando. Reemplaza JOB por un único trabajo o una lista delimitada por comas de trabajos.
Shell ghe-cluster-balance rebalance --dry-run -j JOB
ghe-cluster-balance rebalance --dry-run -j JOB
Por ejemplo, para realizar un simulacro del reequilibrio de trabajos para el servidor HTTP de la instancia y el servicio de autorización, puedes ejecutar
ghe-cluster-balance rebalance --dry-run -j github-unicorn,authzd
. -
Para reequilibrar, ejecuta el siguiente comando. Reemplaza JOB por un único trabajo o una lista delimitada por comas de trabajos.
Shell ghe-cluster-balance rebalance -j JOB
ghe-cluster-balance rebalance -j JOB
Programación del reequilibrio de asignación
Puedes programar el reequilibrio de trabajos en el clúster estableciendo y aplicando valores de configuración para tu instancia de GitHub Enterprise Server.
Nota: Actualmente, solo puedes programar la reasignación de trabajos para el servidor HTTP, github-unicorn
.
-
Para configurar el equilibrio automático por horas de los trabajos, ejecuta el siguiente comando.
Shell ghe-config app.cluster-rebalance.enabled true
ghe-config app.cluster-rebalance.enabled true
-
Opcionalmente, puedes invalidar la programación predeterminada definiendo una expresión cron. Por ejemplo, ejecuta el siguiente comando para equilibrar los trabajos cada tres horas.
Shell ghe-config app.cluster-rebalance.schedule '0 */3 * * *'
ghe-config app.cluster-rebalance.schedule '0 */3 * * *'
-
Para aplicar la configuración, ejecuta el siguiente comando.
Nota: Durante la ejecución de una configuración, los servicios de tu instancia de GitHub Enterprise Server pueden reiniciarse, y esto puede provocar un breve tiempo de inactividad para los usuarios.
Shell ghe-config-apply
ghe-config-apply
-
Espera que se complete la fase de configuración.