Skip to main content

Rebalancear as cargas de trabalho do cluster

É possível forçar o cluster do GitHub Enterprise Server a distribuir uniformemente as alocações de trabalho para cargas de trabalho nos nós do cluster.

Quem pode usar esse recurso?

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

A GitHub determina a qualificação para clustering e deve habilitar a configuração para a licença da instância. O clustering requer um planejamento cuidadoso e sobrecarga administrativa adicional. Para obter mais informações, confira "Sobre clustering".

Sobre o balanceamento da carga de trabalho para um cluster do GitHub Enterprise Server

Uma instância do GitHub Enterprise Server em uma configuração de cluster atribui cada tarefa a um nó de acordo com sua respectiva função. Essa atribuição é chamada de alocação.

Se um nó de cluster estiver inacessível por outros nós devido a uma falha de hardware ou software, a instância criará uma alocação para distribuir os trabalhos do nó não íntegro para outro que possa lidar com a carga de trabalho. Em algumas situações, essa distribuição não ocorre automaticamente e um único nó pode executar mais trabalhos do que o esperado.

É possível gerenciar as alocações usando o utilitário ghe-cluster-balance, que pode exibir o status das alocações existentes ou forçar a instância a balanceá-las. Por exemplo, é necessário balancear as alocações depois de adicionar um nó ao cluster. Opcionalmente, é possível agendar o balanceamento regular.

É possível executar os comandos a seguir em qualquer nó do cluster usando o shell administrativo. Para obter mais informações, confira "Como acessar o shell administrativo (SSH)".

Verificar a distribuição de trabalhos do cluster

Em alguns casos, como em uma falha de hardware, o software subjacente que gerencia as alocações migra tarefas do nó não íntegro para um nó íntegro. Se o nó não íntegro se recuperar, a tarefa poderá permanecer atribuída a ele, o que pode resultar em uma carga desbalanceada. O risco de falhas de trabalho aumenta quando as alocações estão desbalanceadas e os nós adicionais falham. É possível verificar a distribuição de alocações usando o utilitário ghe-cluster-balance status.

  1. Para ver uma lista de alocações, execute o comando a seguir. O utilitário exibe as alocações íntegras em verde. Se algum trabalho não for distribuído corretamente, o utilitário exibirá a contagem da alocação em vermelho.

    Shell
    ghe-cluster-balance status
    
  2. Se um trabalho não for distribuído corretamente, inspecione as alocações executando o comando a seguir. Substitua JOB por um único trabalho ou por uma lista de trabalhos delimitada por vírgula.

    Shell
     ghe-cluster-balance status -j JOB
    

    Por exemplo, para ver o status das alocações do serviço de autorização e do servidor HTTP da instância, execute ghe-cluster-balance status -j github-unicorn,authzd.

Rebalancear as alocações

Depois de determinar quais trabalhos estão desbalanceados nos nós do cluster, é possível rebalancear as alocações usando o utilitário ghe-cluster-balance rebalance. O utilitário verifica a distribuição dos trabalhos existentes. Se houver trabalhos desbalanceados, o utilitário os exibirá e solicitará que você continue. Se você continuar, o utilitário criará alocações para redistribuir os trabalhos.

  1. Para executar um teste e ver o resultado do rebalanceamento sem fazer alterações, execute o comando a seguir. Substitua JOB por um único trabalho ou por uma lista de trabalhos delimitada por vírgula.

    Shell
    ghe-cluster-balance rebalance --dry-run -j JOB
    

    Por exemplo, a fim de realizar uma simulação de rebalanceamento de trabalhos para o serviço de autorização e o servidor HTTP da instância, execute ghe-cluster-balance rebalance --dry-run -j github-unicorn,authzd.

  2. Para realizar o rebalanceamento, execute o comando a seguir. Substitua JOB por um único trabalho ou por uma lista de trabalhos delimitada por vírgula.

    Shell
    ghe-cluster-balance rebalance -j JOB
    

Agendar o rebalanceamento de alocação

É possível agendar o rebalanceamento de trabalhos no cluster definindo e aplicando valores de configuração para o sua instância do GitHub Enterprise Server.

Observação: atualmente, só é possível agendar a realocação de trabalhos para o servidor HTTP, github-unicorn.

  1. Para configurar o balanceamento automático de trabalhos por hora, execute o comando a seguir.

    Shell
    ghe-config app.cluster-rebalance.enabled true
    
  2. Opcionalmente, é possível substituir o agendamento padrão definindo uma expressão cron. Por exemplo, execute o comando a seguir para balancear trabalhos a cada três horas.

    Shell
    ghe-config app.cluster-rebalance.schedule '0 */3 * * *'
    
  3. Para aplicar a configuração, execute o comando a seguir.

    Observação: durante uma execução de configuração, os serviços do sua instância do GitHub Enterprise Server podem ser reiniciados, o que pode causar um breve tempo de inatividade para os usuários.

    Shell
    ghe-config-apply
    
  4. Aguarde a conclusão da execução de suas configurações.

Leitura adicional