Skip to main content

Configurando um cache de repositório

Você pode configurar um cache de repositório criando um novo dispositivo, conectando o cache do repositório ao dispositivo primário e configurando a replicação das redes de repositórios no cache do repositório.

Observação: o cache do repositório está atualmente em versão beta e sujeito a alterações.

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. Em seu dispositivo GitHub Enterprise Server principal, habilite o sinalizador de recurso para cache de repositório.

    $ ghe-config cluster.cache-enabled true
    
  2. Configure um novo appliance do GitHub Enterprise Server na plataforma desejada. Este dispositivo será o cache do repositório. Para obter mais informações, confira "Como configurar uma instância do GitHub Enterprise Server".

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

  4. Clique em Configurar como Réplica. Opções de instalação com o link para configurar a nova instância como réplica

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

  6. Clique em Adicionar chave.

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

    $ ssh -p 122 admin@REPLICA IP
  8. Na réplica de cache, habilite o sinalizador de recurso para o cache do repositório.

    $ ghe-config cluster.cache-enabled true
    ``` 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.
    <pre><code class="hljs language-shell">$ ghe-repl-setup <em>PRIMARY IP</em></code></pre> 1. 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.

    $ ghe-repl-setup PRIMARY IP
  10. 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. Defina também um nome de datacenter para esse cache. Os novos caches tentarão ser semeados de outro cache no mesmo datacenter.

    $ ghe-repl-node --cache CACHE-LOCATION --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.

    11. Para verificar o status do canal de replicação de cada armazenamento de dados, use o comando `ghe-repl-status`.
    $ ghe-repl-status
  12. 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 obter mais informações sobre as 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.