Об эвакуации узлов кластера, на которых выполняются службы данных
В конфигурации кластера для GitHub Enterprise Serverможет потребоваться отключить отдельный узел. Например, может потребоваться заменить виртуальную машину узла. Если узел, который вы хотите заменить, работает на уровне хранилища, GitHub рекомендует сначала эвакуировать службы данных узла. Эвакуация гарантирует, что оставшиеся узлы содержат минимальные ожидаемые копии данных.
Дополнительные сведения о узлах и уровнях служб для GitHub Enterprise Serverсм. в разделе Сведения об узлах кластера.
Warning
- Чтобы избежать потери данных во время замены узла, GitHub настоятельно рекомендует эвакуацию применимых служб данных на узле перед отключением узла.
- Чтобы обеспечить избыточность для любой службы данных в кластере, копии данных должны существовать по крайней мере на трех узлах. Например, если четыре или более узлов хранят данные Git во время эвакуации, эвакуированные данные репозитория будут перемещаться с узла, который вы эвакуируете на другие три узла. Если у вас есть только три узла, которые хранят данные для службы, эвакуация одного узла может завершиться ошибкой и привести к недостаточной репликации данных.
Эвакуирование узла кластера с службами данных
Если вы планируете использовать узел в автономном режиме, а узел выполняет любую из следующих ролей, эвакуируйте каждую соответствующую службу, прежде чем принимать узел в автономном режиме.
Service | Data |
---|---|
git-server | Репозитории |
pages-server | Сборки сайта для GitHub Pages |
storage-server |
|
-
Подключение к любому узлу в кластере по протоколу SSH. Дополнительные сведения см. в разделе Доступ к административной оболочке (SSH).
-
Чтобы найти UUID узла для эвакуации, выполните следующую команду. Замените HOSTNAME именем узла. Вы будете использовать UUID в последующих командах.
ghe-config cluster.HOSTNAME.uuid
-
Для каждой применимой службы на узле, чтобы определить начальные числа данных, выполните следующие команды. Для каждой команды замените 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)
-
-
-
Чтобы эвакуировать соответствующую службу на узле, выполните следующие команды. Для каждой команды замените 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
:-
Отключите службу узла, выполнив следующую команду.
ghe-storage offline storage-server-UUID
-
Эвакуировать узел, выполнив следующую команду.
ghe-storage evacuate storage-server-UUID
-
-
-
Чтобы отслеживать эвакуацию службы, а GitHub Enterprise Server копирует данные, выполните следующие команды. Для каждой команды замените UUID идентификатором UUID на UUID на предыдущем шаге.
Warning
Не завершайте работу узла до завершения эвакуации. Эвакуация завершается, когда количество данных достигает нуля, что означает, что все данные безопасно хранятся на других узлах.
-
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
-
-
После завершения эвакуации службы завершите работу узла.