Skip to main content

Configurando um cache de repositório

Você pode configurar um cache de repositório para GitHub Enterprise Server criando uma nova instância, conectando o cache do repositório à instância primária e configurando a replicação das redes de repositórios no cache do repositório.

Sobre a configuração para cache de repositório

Você pode configurar o cache do repositório criando um tipo especial de réplica chamado cache de repositório. Em seguida, você pode definir as políticas de localização de dados que regem quais redes de repositório são replicadas no cache do repositório.

O cache de repositório não é compatível com clustering.

DNS para caches de repositório

A instância primária e o cache do repositório devem ter nomes de DNS diferentes. Por exemplo, se a instância primária estiver em github.example.com, você poderá optar por nomear um cache europe-ci.github.example.com ou github.asia.example.com.

Para que os computadores de CI busquem o cache do repositório em vez da instância primária, use a definição de configuração url.<base>.insteadOf do Git. Para obter mais informações, confira git-config na documentação do Git.

Por exemplo, o .gitconfig global do computador de CI incluirá estas linhas.

[url "https://europe-ci.github.example.com/"]
    insteadOf = https://github.example.com/

Em seguida, quando instruído para buscar https://github.example.com/myorg/myrepo, o Git o buscará em https://europe-ci.github.example.com/myorg/myrepo.

Configurando um cache de repositório

  1. Configure uma nova instância do GitHub Enterprise Server na plataforma desejada. Esta instância será o cache do repositório. Para obter mais informações, confira "Configurar uma instância do GitHub Enterprise Server".

  2. Defina uma senha de administrador correspondente à senha no appliance primário e continue.

  3. Clique em Criar um nó de réplicas.

  4. Em "Add new SSH key" (Adicionar nova chave SSH), digite a chave SSH.

  5. Clique em Adicionar chave.

  6. Conecte ao endereço IP do repositório utilizando o SSH.

    ssh -p 122 admin@REPLICA-IP
    
  7. Para gerar um par de chaves para replicação, use o comando ghe-repl-setup com o endereço IP do dispositivo primário e copie a chave pública retornada.

    ghe-repl-setup PRIMARY_IP
    
  8. Para adicionar a chave pública à lista de chaves autorizadas no dispositivo primário, procure https://PRIMARY-HOSTNAME/setup/settings e adicione a chave copiada da réplica à lista.

  9. Para verificar a conexão com o primário e habilitar o modo de réplica para o cache do repositório, execute ghe-repl-setup novamente.

    • Se o cache do repositório for seu único nó adicional, nenhum argumento será necessário.

      ghe-repl-setup PRIMARY-IP
      
    • Se você estiver configurando um cache do repositório além de uma ou mais réplicas existentes, use o argumento -a ou --add.

      ghe-repl-setup -a PRIMARY-IP
      
  10. Para configurar o cache do repositório, use o comando ghe-repl-node e inclua os parâmetros necessários.

    • Defina um cache-location para o cache do repositório, substituindo CACHE-LOCATION por um identificador alfanumérico, como a região em que o cache foi implantado. O valor CACHE-LOCATION não deve ser nenhum dos subdomínios reservados para uso com isolamento de subdomínio, como assets ou media. Para obter uma lista de nomes reservados, confira "Habilitar isolamento de subdomínio".

    • Defina um cache-domain para o cache do repositório, substituindo EXTERNAL-CACHE-DOMAIN pelo nome do host que os clientes Git usarão para acessar o cache do repositório. Se você não especificar um cache-domain, GitHub Enterprise Server precederá o valor CACHE-LOCATION como um subdomínio para o nome do host configurado para sua instância. Para obter mais informações, confira "Configurando o nome do host para sua instância".

    • Caso ainda não tenha feito isso, defina o nome do datacenter no primário e em qualquer dispositivo de réplica, substituindo DC-NAME por um nome de datacenter.

      ghe-repl-node --datacenter DC-NAME
      
    • Os novos caches tentarão ser semeados de outro cache no mesmo datacenter. Defina um datacenter para o cache do repositório, substituindo REPLICA-DC-NAME pelo nome do datacenter em que você está implantando o nó.

    ghe-repl-node --cache CACHE-LOCATION --cache-domain EXTERNAL-CACHE-DOMAIN --datacenter REPLICA-DC-NAME
    
  11. Para iniciar a replicação dos armazenamentos de dados, use o comando ghe-repl-start.

    ghe-repl-start
    

    Aviso: ghe-repl-start causa uma breve interrupção no servidor primário, durante o qual os usuários podem receber erros internos do servidor. Para fornecer uma mensagem mais amigável, execute ghe-maintenance -s no nó primário antes de executar ghe-repl-start no nó de réplica a fim de colocar o dispositivo no modo de manutenção. Quando a replicação for iniciada, desabilite o modo de manutenção com ghe-maintenance -u. A replicação do Git não progredirá enquanto o nó primário estiver no modo de manutenção.

  12. Para verificar o status do canal de replicação de cada armazenamento de dados, use o comando ghe-repl-status.

    ghe-repl-status
    
  13. Para habilitar a replicação de redes de repositórios no cache do repositório, defina uma política de localização de dados. Para obter mais informações, confira "Políticas de localização de dados".

Políticas de localização de dados

Você pode controlar a localidade dos dados configurando políticas de localização de dados para seus repositórios com o comando spokesctl cache-policy. As políticas de localização de dados determinam quais redes de repositório são replicadas em quais caches de repositório. Por padrão, nenhuma rede de repositório será replicada em todos os caches de repositórios até que uma política de localização de dados seja configurada.

As políticas de localização de dados afetam apenas o conteúdo do Git. O conteúdo do banco de dados, como comentários sobre problemas e solicitações de pull, será replicado para todos os nós, independentemente da política.

Observação: as políticas de localização de dados não são iguais ao controle de acesso. Você precisa usar funções de repositório para controlar os usuários que podem acessar um repositório. Para saber mais sobre funções de repositório, confira "Funções de repositório para uma organização".

Você pode configurar uma política para replicar todas as redes com o sinalizador --default. Por exemplo, este comando criará uma política para replicar uma única cópia de cada rede de repositório para o conjunto de caches de repositório cujo cache_location é "kansas".

ghe-spokesctl cache-policy set --default 1 kansas

Para configurar a replicação de uma rede de repositório, especifique o repositório que é a raiz da rede. A rede de um repositório inclui um repositório e todas as bifurcações do repositório. Você não pode replicar parte de uma rede sem replicar toda a rede.

ghe-spokesctl cache-policy set <owner/repository> 1 kansas

Você pode substituir uma política que replica todas as redes e excluir as redes específicas, especificando uma contagem de réplica de zero para a rede. Por exemplo, este comando especifica que qualquer cache de repositórios no local "kansas" não pode conter cópias dessa rede.

ghe-spokesctl cache-policy set <owner/repository> 0 kansas

As contagens de réplica superiores a um em um determinado local de cache não são compatíveis.