Skip to main content

Usar o GitHub Enterprise Server com balanceador de carga

Use um balanceador de carga na frente de uma única instância GitHub Enterprise Server ou um par de instâncias em uma configuração de alta disponibilidade.

Sobre balanceadores de carga

Um design de balanceador de carga usa um dispositivo de rede para direcionar o Git e o tráfego HTTP para appliances individuais GitHub Enterprise Server. Você pode usar um balanceador de carga para restringir o tráfego direto para o appliance para fins de segurança, ou redirecionar o tráfego se necessário sem alterações no registro de DNS. Recomendamos fortemente usar um balanceador de carga baseado em TCP que suporte o protocolo PROXY.

Buscas de DNS para o nome de host GitHub Enterprise Server devem se resolver para o balanceador de carga. Recomendamos que você ative o isolamento de subdomínio. Se o isolamento do subdomínio estiver ativado, um registro de curinga adicional (*.HOSTNAME) também será resolvido para o balanceador de carga. Para obter mais informações, confira "Como habilitar o isolamento de subdomínio".

Informações de conexão do cliente

Como as conexões do cliente com o GitHub Enterprise Server vêm do balanceador de carga, pode ocorrer a perda do endereço IP do cliente.

Se o seu balanceador de carga puder apoiá-lo, recomendamos fortemente a implementação do protocolo PROXY. Quando não há suporte a PROXY disponível, também é possível balancear a carga das portas HTTP e HTTPS usando o cabeçalho X-Forwarded-For.

Aviso de segurança: quando o suporte a PROXY ou o encaminhamento HTTP está habilitado, é fundamental que nenhum tráfego externo possa acessar diretamente os dispositivos do GitHub Enterprise Server. Se o tráfego externo não estiver corretamente bloqueado, os endereços IP de origem podem ser forjados.

Aviso: no término das conexões HTTPS em um balanceador de carga, as solicitações do balanceador de carga para o GitHub Enterprise Server também precisam usar HTTPS. O downgrading da conexão para HTTP não é suportado.

Como habilitar o suporte ao protocolo PROXY no your GitHub Enterprise Server instance

É altamente recomendável ativar o suporte ao protocolo PROXY para sua instância e o balanceador de carga. Use as instruções do fornecedor para habilitar o protocolo PROXY no balanceador de carga. Para obter mais informações, confira a documentação do protocolo PROXY.

Observação: o GitHub Enterprise Server dá suporte ao Protocolo PROXY V1, que é incompatível com balanceadores de carga de rede da AWS. Se você usar balanceadores de carga de rede da AWS com o GitHub Enterprise Server, não habilite o suporte a PROXY.

  1. Em uma conta administrativa no GitHub Enterprise Server, no canto superior direito de qualquer página, clique em .

    Captura de tela do ícone de foguete para acesso às configurações de administração do site

  2. Se você ainda não estiver na página "Administração do site", no canto superior esquerdo, clique em Administração do site.

    Captura de tela do link "Administração do site" 1. Na barra lateral à esquerda, clique em Console de Gerenciamento . Guia Console de Gerenciamento na barra lateral esquerda 1. Na barra lateral esquerda, clique em Privacidade. Guia Privacidade na barra lateral de configurações

  3. Em Balanceadores de carga externos, selecione Habilitar suporte para o protocolo PROXY. Caixa de seleção usada para habilitar o suporte para o protocolo PROXY 1. Na barra lateral esquerda, clique em Salvar configurações.

    Captura de tela do botão Salvar configurações no Console de Gerenciamento

    Observação: se você salvar as configurações no Console de Gerenciamento, isso reiniciará os serviços do sistema, o que poderá resultar em tempo de inatividade visível pelo usuário.

  4. Aguarde a conclusão da execução de suas configurações.

    Configurar a instância

Mapeamentos das portas TCP PROXY

Porta de origemPorta de destinoDescrição do serviço
2223Git em SSH
8081HTTP
443444HTTPS
80808081HTTP de console de gerenciamento
84438444HTTPS de console de gerenciamento
94189419Git

Como habilitar o suporte a X-Forwarded-For no your GitHub Enterprise Server instance

Use o protocolo X-Forwarded-For somente quando o protocolo PROXY não estiver disponível. O cabeçalho X-Forwarded-For só funciona com HTTP e HTTPS. O endereço IP informado para conexões Git por SSH mostrará o IP do balanceador de carga.

Aviso: se você configurar o suporte do X-Forwarded-For no your GitHub Enterprise Server instance e balanceador de carga, talvez não consiga se conectar ao Console de Gerenciamento. Para ver mais informações, confira "Erro: "Sua sessão expirou" para conexões com os dados Console de Gerenciamento".

  1. Em uma conta administrativa no GitHub Enterprise Server, no canto superior direito de qualquer página, clique em .

    Captura de tela do ícone de foguete para acesso às configurações de administração do site

  2. Se você ainda não estiver na página "Administração do site", no canto superior esquerdo, clique em Administração do site.

    Captura de tela do link "Administração do site" 1. Na barra lateral à esquerda, clique em Console de Gerenciamento . Guia Console de Gerenciamento na barra lateral esquerda 1. Na barra lateral esquerda, clique em Privacidade. Guia Privacidade na barra lateral de configurações

  3. Em Balanceadores de carga externos, selecione Permitir cabeçalho HTTP X-Forwarded-For. Caixa de seleção usada para permitir o cabeçalho HTTP X-Forwarded-For 1. Na barra lateral esquerda, clique em Salvar configurações.

    Captura de tela do botão Salvar configurações no Console de Gerenciamento

    Observação: se você salvar as configurações no Console de Gerenciamento, isso reiniciará os serviços do sistema, o que poderá resultar em tempo de inatividade visível pelo usuário.

  4. Aguarde a conclusão da execução de suas configurações.

    Configurar a instância

Mapeamentos de portas TCP para uso sem suporte PROXY

Porta de origemPorta de destinoDescrição do serviço
2222Git em SSH
2525SMTP
8080HTTP
443443HTTPS
80808080HTTP de console de gerenciamento
84438443HTTPS de console de gerenciamento

Configurar verificações de integridade

As verificações de integridade permitem que um balanceador de carga pare de enviar tráfego para um nó que não responde em caso de falha na verificação pré-configurada do nó em questão. Se a instância estiver offline devido a manutenção ou falha inesperada, o balanceador de carga poderá exibir uma página de status. Em configurações de alta disponibilidade (HA), é possível usar balanceadores de carga como parte da estratégia de failover. No entanto, não há suporte para failover automático de pares de HA. Você deve promover manualmente a instância de réplica antes que ela comece a atender às solicitações. Para obter mais informações, confira "Como configurar o GitHub Enterprise Server para alta disponibilidade".

Configure o balanceador de carga para verificar uma destas URLs:

  • https://HOSTNAME/status se o HTTPS estiver habilitado (padrão)
  • http://HOSTNAME/status se o HTTPS estiver desabilitado

A verificação retornará o código de status 200 (OK) se o nó estiver íntegro e disponível para solicitações do usuário final do serviço.

Observação: quando o dispositivo estiver no modo de manutenção, a URL https://HOSTNAME/status retornará o código de status 503 (Serviço Indisponível). Para obter mais informações, confira "Como habilitar e agendar o modo de manutenção".

Solução de problemas de conectividade por meio de um balanceador de carga

Se você não conseguiu se conectar aos serviços do your GitHub Enterprise Server instance por meio de um balanceador de carga, examine as informações a seguir para solucionar o problema.

Observação: sempre teste as alterações na sua infraestrutura de rede e na configuração da instância em um ambiente de preparo. Para obter mais informações, confira "Como configurar uma instância de preparo".

Erro: "Sua sessão expirou" para conexões com Console de Gerenciamento

Se você habilitar o suporte para o cabeçalho X-Forwarded-For em sua instância e balanceador de carga, talvez não consiga acessar o Console de Gerenciamento de sua instância. Para ver mais informações sobre o Console de Gerenciamento e portas exigidas nas conexões, confira "Como acessar o console de gerenciamento" e "Portas de rede".

Se your GitHub Enterprise Server instance indicar que sua sessão expirou quando você se conectar a Console de Gerenciamento por meio de um balanceador de carga, tente uma das seguintes configurações em seu balanceador de carga.

Para ver mais informações, confira a documentação do balanceador de carga.

Atualizações dinâmicas de problemas e verificações que não funcionam

Quando your GitHub Enterprise Server instance é acessado por meio de um balanceador de carga ou proxy reverso, as atualizações dinâmicas esperadas, como novos comentários sobre problemas e alterações nos selos de notificação ou saída de execução de verificação, podem não ser exibidas até que a página seja atualizada. Isso é mais comum quando o proxy reverso ou o balanceador de carga está sendo executado em um modo de camada 7 ou não oferece suporte ao protocolo websocket necessário.

Para habilitar atualizações dinâmicas, talvez seja necessário reconfigurar o balanceador de carga ou o proxy. Para ver mais informações, confira a documentação do balanceador de carga.