Skip to main content

Using GitHub Enterprise Server with a load balancer

Use a load balancer in front of a single GitHub Enterprise Server instance or a pair of instances in a High Availability configuration.

About load balancers

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

Handling client connection information

Because client connections to GitHub Enterprise Server come from the load balancer, the client IP address can be lost.

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.

Enabling PROXY protocol support on your GitHub Enterprise Server instance

We strongly recommend enabling PROXY protocol support for both your instance and the load balancer. Use the instructions provided by your vendor to enable the PROXY protocol on your load balancer. For more information, see the PROXY protocol documentation.

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"

  3. Na barra lateral à esquerda, clique em Console de Gerenciamento . Guia Console de Gerenciamento na barra lateral esquerda

  4. Na barra lateral esquerda, clique em Privacidade. Guia Privacidade na barra lateral de configurações

  5. Under External load balancers, select Enable support for PROXY protocol. Checkbox to enable support for PROXY protocol

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

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

Enabling X-Forwarded-For support on 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.

Warning: If you configure X-Forwarded-For support on your GitHub Enterprise Server instance and load balancer, you may not be able to connect to the Console de Gerenciamento. For more information, see "Error: "Your session has expired" for connections to the 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"

  3. Na barra lateral à esquerda, clique em Console de Gerenciamento . Guia Console de Gerenciamento na barra lateral esquerda

  4. Na barra lateral esquerda, clique em Privacidade. Guia Privacidade na barra lateral de configurações

  5. Under External load balancers, select Allow HTTP X-Forwarded-For header. Checkbox to allow the HTTP X-Forwarded-For header

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

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

Configuring health checks

Health checks allow a load balancer to stop sending traffic to a node that is not responding if a pre-configured check fails on that node. If the instance is offline due to maintenance or unexpected failure, the load balancer can display a status page. In a High Availability (HA) configuration, a load balancer can be used as part of a failover strategy. However, automatic failover of HA pairs is not supported. You must manually promote the replica instance before it will begin serving requests. For more information, see "Configuring GitHub Enterprise Server for High Availability."

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

Troubleshooting connectivity through a load balancer

If you cannot connect to services on your GitHub Enterprise Server instance through a load balancer, you can review the following information to troubleshoot the problem.

Note: Always test changes to your network infrastructure and instance configuration in a staging environment. For more information, see "Setting up a staging instance."

Error: "Your session has expired" for connections to the Console de Gerenciamento

If you enable support for the X-Forwarded-For header on your instance and load balancer, you may not be able to access your instance's Console de Gerenciamento. For more information about the Console de Gerenciamento and ports required for connections, see "Accessing the management console" and "Network ports."

If your GitHub Enterprise Server instance indicates that your session has expired when you connect to the Console de Gerenciamento through a load balancer, try one of the following configurations on your load balancer.

For more information, refer to the documentation for your load balancer.

Live updates to issues and check runs not working

When your GitHub Enterprise Server instance is accessed via a load balancer or reverse proxy, expected live updates, such as new comments on issues and changes in notification badges or check run output, may not display until the page is refreshed. This is most common when the reverse proxy or load balancer is running in a layer 7 mode or does not support the required websocket protocol.

To enable live updates, you may need to reconfigure the load balancer or proxy. For more information, refer to the documentation for your load balancer.