Skip to main content

Esta versão do GitHub Enterprise Server foi descontinuada em 2024-07-09. Nenhum lançamento de patch será feito, mesmo para questões críticas de segurança. Para obter melhor desempenho, segurança aprimorada e novos recursos, atualize para a última versão do GitHub Enterprise Server. Para obter ajuda com a atualização, entre em contato com o suporte do GitHub Enterprise.

Como evacuar um nó de cluster que executa serviços de dados

Se um nó no cluster do GitHub Enterprise Server executa serviços que armazenam dados distribuídos, é possível garantir a redundância ao se preparar para substituí-lo limpando os dados dele.

Quem pode usar esse recurso?

A GitHub determina a qualificação para clustering e deve habilitar a configuração para a licença da instância. O clustering requer um planejamento cuidadoso e sobrecarga administrativa adicional. Para obter mais informações, confira "Sobre clustering".

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

Avisos:

  • 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çoDados
git-serverRepositórios
pages-serverBuilds de site para GitHub Pages
storage-server
  • Dados armazenados em repositórios usando Git Large File Storage
  • Imagens de avatar
  • Arquivar anexos de comentários na interface do usuário da Web
  • Liberar arquivos
  1. SSH em qualquer nó no seu cluster. Para obter mais informações, confira "Acesar o shell administrativo (SSH)".

  2. 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
    
  3. 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)

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

      1. Execute o comando a seguir para colocar o nó do serviço offline.

        ghe-storage offline storage-server-UUID
        
      2. Evacue o nó executando o comando a seguir.

        ghe-storage evacuate storage-server-UUID
        
  5. 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.

    Aviso: 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
      
  6. Após a evacuação ser concluída para o serviço, desligue o nó.