Sobre a evacuação de nós de cluster que executam serviços de dados
Em uma configuração de cluster para GitHub Enterprise Server, talvez seja necessário colocar um nó individual offline. Por exemplo, talvez seja necessário substituir a VM (máquina virtual) do nó. Se o nó que você deseja substituir operar na camada de armazenamento, GitHub recomendará que você evacue primeiro os serviços de dados do nó. A evacuação garante que os nós restantes contenham as cópias mínimas esperadas dos dados.
Para saber mais sobre os nós e as camadas de serviço do GitHub Enterprise Server, confira Sobre nós de cluster.
Warning
- Para evitar a perda de dados durante a substituição de um nó, o GitHub recomenda a evacuação dos serviços de dados aplicáveis no nó antes de colocar o nó offline.
- Para garantir a redundância de qualquer serviço de dados no cluster, as cópias de dados devem existir em pelo menos três nós. Por exemplo, quando quatro ou mais nós armazenam dados do Git, durante a evacuação, os dados evacuados do repositório serão movidos do nó que você está evacuando para os outros três nós. Se você tiver apenas três nós que armazenam dados para um serviço, a evacuação de um deles poderá falhar e resultar em dados sub-replicados.
Como evacuar um nó de cluster que executa serviços de dados
Se você planeja colocar um nó offline e o nó executar qualquer uma das funções a seguir, evacue cada serviço aplicável antes de colocar o nó offline.
Serviço | Dados |
---|---|
git-server | Repositórios |
pages-server | Builds de site para GitHub Pages |
storage-server |
|
-
SSH em qualquer nó no seu cluster. Para obter mais informações, confira "Acesar o shell administrativo (SSH)".
-
Para encontrar o UUID do nó a ser evacuado, execute o seguinte comando. Substituir HOSTNAME pelo nome do host do nó. Você usará a UUID nos comandos subsequentes.
ghe-config cluster.HOSTNAME.uuid
-
Para cada serviço aplicável no nó, para determinar as contagens de dados iniciais, execute os comandos a seguir. Para cada comando, substitua UUID pela UUID da etapa anterior.
-
git-server
:-
Comando:
ghe-spokesctl server status git-server-UUID
-
Saída relevante:
NETWORKS
,GISTS
-
-
pages-server
:-
Comando:
echo "select count(*) from pages_replicas where host = 'pages-server-UUID'" | ghe-dbconsole -y
-
-
storage-server
:-
Comando:
ghe-storage evacuation-status storage-server-UUID
-
Saída relevante:
Remaining item(s)
-
-
-
Para evacuar um serviço aplicável no nó, execute os comandos a seguir. Para cada comando, substitua UUID pela UUID da etapa anterior.
-
git-server
:-
Comando (substitua REASON FOR EVACUATION pelo motivo da evacuação):
ghe-spokesctl server set evacuating git-server-UUID 'REASON FOR EVACUATION'
-
-
pages-server
:-
Comando:
ghe-dpages evacuate pages-server-UUID
-
-
storage-server
:-
Execute o comando a seguir para colocar o nó do serviço offline.
ghe-storage offline storage-server-UUID
-
Evacue o nó executando o comando a seguir.
ghe-storage evacuate storage-server-UUID
-
-
-
Para monitorar a evacuação de um serviço enquanto GitHub Enterprise Server copia os dados, execute os comandos a seguir. Para cada comando, substitua UUID pela UUID da etapa anterior.
Warning
Não desligue o nó até que a evacuação esteja concluída. A evacuação estará concluída quando as contagens de dados atingem zero, o que significa que todos os dados estarão armazenados com segurança em outros nós.
-
git-server
:ghe-spokesctl server evac-status git-server-UUID
-
pages-server
:echo "select count(*) from pages_replicas where host = 'pages-server-UUID'" | ghe-dbconsole -y
-
storage-server
:ghe-storage evacuation-status storage-server-UUID
-
-
Após a evacuação ser concluída para o serviço, desligue o nó.