Об эвакуации узлов кластера, на которых выполняются службы данных
В конфигурации кластера для GitHub Enterprise Serverможет потребоваться отключить отдельный узел. Например, может потребоваться заменить виртуальную машину узла. Если узел, который вы хотите заменить, работает на уровне хранилища, GitHub рекомендует сначала эвакуировать службы данных узла. Эвакуация гарантирует, что оставшиеся узлы содержат минимальные ожидаемые копии данных.
Дополнительные сведения о узлах и уровнях служб для GitHub Enterprise Serverсм. в разделе "Сведения об узлах кластера".
Предупреждения.
-
Чтобы избежать потери данных во время замены узла, 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-spokes evac-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-spokes server evacuate 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 на предыдущем шаге.
Предупреждение. Не завершайте работу узла до завершения эвакуации. Эвакуация завершается, когда количество данных достигает нуля, что означает, что все данные безопасно хранятся на других узлах.
-
git-server
:ghe-spokes 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
-
-
После завершения эвакуации службы завершите работу узла.