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
-
Configure uma nova instância do GitHub Enterprise Server na plataforma desejada. Esta instância será o cache do repositório. Para saber mais, confira Configurar uma instância do GitHub Enterprise Server.
-
Defina uma senha de administrador correspondente à senha no appliance primário e continue.
-
Clique em Criar um nó de réplicas.
-
Em "Add new SSH key" (Adicionar nova chave SSH), digite a chave SSH.
-
Clique em Adicionar chave.
-
Conecte ao endereço IP do repositório utilizando o SSH.
ssh -p 122 admin@REPLICA-IP
-
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
-
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. -
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
-
-
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, comoassets
oumedia
. Para ver 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 umcache-domain
, GitHub Enterprise Server precederá o valor CACHE-LOCATION como um subdomínio para o nome do host configurado para sua instância. Para saber mais, 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
-
-
Para iniciar a replicação dos armazenamentos de dados, use o comando
ghe-repl-start
.ghe-repl-start
Warning
ghe-repl-start
causa uma breve interrupção no servidor primário, durante a qual os usuários podem receber erros internos do servidor. Para fornecer uma mensagem mais amigável, executeghe-maintenance -s
no nó primário antes de executarghe-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 comghe-maintenance -u
. A replicação do Git não progredirá enquanto o nó primário estiver no modo de manutenção. -
Para verificar o status do canal de replicação de cada armazenamento de dados, use o comando
ghe-repl-status
.ghe-repl-status
-
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 saber mais, 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.
Note
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.