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
.
-
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
ghe-cluster-balance status
-
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
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.
-
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
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
. -
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
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
.
-
Para configurar o balanceamento automático de trabalhos por hora, execute o comando a seguir.
Shell ghe-config app.cluster-rebalance.enabled true
ghe-config app.cluster-rebalance.enabled true
-
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 * * *'
ghe-config app.cluster-rebalance.schedule '0 */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
ghe-config-apply
-
Aguarde a conclusão da execução de suas configurações.