Skip to main content

Эта версия GitHub Enterprise Server была прекращена 2024-07-09. Исправления выпускаться не будут даже при критических проблемах безопасности. Для повышения производительности, повышения безопасности и новых функций выполните обновление до последней версии GitHub Enterprise Server. Чтобы получить справку по обновлению, обратитесь в службу поддержки GitHub Enterprise.

Эвакуирование узла кластера с службами данных

Если узел в кластере GitHub Enterprise Server запускает службы, в которых хранятся распределенные данные, вы можете обеспечить избыточность при подготовке к замене узла, эвакуируя данные узла.

Кто может использовать эту функцию?

GitHub определяет право на кластеризация и должен включить конфигурацию лицензии вашего экземпляра. Кластеризация требует тщательного планирования и дополнительных административных накладных расходов. Дополнительные сведения см. в разделе Сведения о кластеризации.

Об эвакуации узлов кластера, на которых выполняются службы данных

В конфигурации кластера для GitHub Enterprise Serverможет потребоваться отключить отдельный узел. Например, может потребоваться заменить виртуальную машину узла. Если узел, который вы хотите заменить, работает на уровне хранилища, GitHub рекомендует сначала эвакуировать службы данных узла. Эвакуация гарантирует, что оставшиеся узлы содержат минимальные ожидаемые копии данных.

Дополнительные сведения о узлах и уровнях служб для GitHub Enterprise Serverсм. в разделе "Сведения об узлах кластера".

Предупреждения.

  • Чтобы избежать потери данных во время замены узла, GitHub настоятельно рекомендует эвакуацию применимых служб данных на узле перед отключением узла.

  • Чтобы обеспечить избыточность для любой службы данных в кластере, копии данных должны существовать по крайней мере на трех узлах. Например, если четыре или более узлов хранят данные Git во время эвакуации, эвакуированные данные репозитория будут перемещаться с узла, который вы эвакуируете на другие три узла. Если у вас есть только три узла, которые хранят данные для службы, эвакуация одного узла может завершиться ошибкой и привести к недостаточной репликации данных.

Эвакуирование узла кластера с службами данных

Если вы планируете использовать узел в автономном режиме, а узел выполняет любую из следующих ролей, эвакуируйте каждую соответствующую службу, прежде чем принимать узел в автономном режиме.

ServiceData
git-serverРепозитории
pages-serverСборки сайта для GitHub Pages
storage-server
  • Данные, хранящиеся в репозиториях с помощью Хранилище больших файлов Git
  • Изображения аватара
  • Вложения файлов из комментариев в веб-интерфейсе
  • Архивы выпуска
  1. Подключение к любому узлу в кластере по протоколу SSH. Дополнительные сведения см. в разделе Доступ к административной оболочке (SSH).

  2. Чтобы найти UUID узла для эвакуации, выполните следующую команду. Замените HOSTNAME именем узла. Вы будете использовать UUID в последующих командах.

    ghe-config cluster.HOSTNAME.uuid
    
  3. Для каждой применимой службы на узле, чтобы определить начальные числа данных, выполните следующие команды. Для каждой команды замените UUID идентификатором UUID на идентификатор UUID из предыдущего шага.

    • git-server:

      • Команда:

        ghe-spokesctl server status git-server-UUID
        
      • Релевантные выходные данные: NETWORKS``GISTS

    • 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
        
      • Соответствующие выходные данные: Remaining item(s)

  4. Чтобы эвакуировать соответствующую службу на узле, выполните следующие команды. Для каждой команды замените UUID идентификатором UUID на UUID на предыдущем шаге.

    • git-server:

      • Команда (замените ПРИЧИНУ ЭВАКУАЦИИ причиной эвакуации):

        ghe-spokesctl server set evacuating git-server-UUID 'REASON FOR EVACUATION'
        
    • pages-server:

      • Команда:

        ghe-dpages evacuate pages-server-UUID
        
    • storage-server:

      1. Отключите службу узла, выполнив следующую команду.

        ghe-storage offline storage-server-UUID
        
      2. Эвакуировать узел, выполнив следующую команду.

        ghe-storage evacuate storage-server-UUID
        
  5. Чтобы отслеживать эвакуацию службы, а GitHub Enterprise Server копирует данные, выполните следующие команды. Для каждой команды замените UUID идентификатором UUID на UUID на предыдущем шаге.

    Предупреждение. Не завершайте работу узла до завершения эвакуации. Эвакуация завершается, когда количество данных достигает нуля, что означает, что все данные безопасно хранятся на других узлах.

    • 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. После завершения эвакуации службы завершите работу узла.