Skip to main content

Reequilibrio de las cargas de trabajo del clúster

Puedes forzar que el clúster GitHub Enterprise Server distribuya uniformemente las asignaciones de trabajos para las cargas de trabajo en los nodos del clúster.

¿Quién puede utilizar esta característica?

People with administrative SSH access to a GitHub Enterprise Server instance can rebalance cluster workloads on the instance.

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

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

    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.

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

    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.

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

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.

  1. Para configurar el equilibrio automático por horas de los trabajos, ejecuta el siguiente comando.

    Shell
    ghe-config app.cluster-rebalance.enabled true
    
  2. 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 * * *'
    
  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
    
  4. Espera que se complete la fase de configuración.

Lecturas adicionales