Примечание. Для GitHub Enterprise Server разрешено не более 8 высокодоступных реплик (как пассивных, так и активных/геореплик).
Создание реплики с высоким уровнем доступности
-
Настройте новое устройство GitHub Enterprise Server на выбранной платформе. Устройство-реплика должно зеркально отражать параметры ЦП, ОЗУ и хранилища основного устройства. Рекомендуется установить устройство-реплику в независимой среде. Базовые аппаратные, программные и сетевые компоненты должны быть изолированы от компонентов основного устройства. Если вы используете поставщик облачных служб, используйте отдельный регион или зону. Дополнительные сведения см. в разделе Настройка экземпляра GitHub Enterprise Server.
-
Убедитесь, что новое устройство может взаимодействовать со всеми другими устройствами в этой среде с высоким уровнем доступности через порты 122/TCP и 1194/UDP. Дополнительные сведения см. в разделе Сетевые порты.
-
В браузере перейдите к IP-адресу нового устройства реплики и отправьте лицензию GitHub Enterprise.
-
Задайте такой же пароль администратора, как на основном устройстве, и продолжайте процедуру.
-
Щелкните Настроить как реплику.
-
В разделе "Добавление нового ключа SSH" введите ключ SSH.
-
Нажмите Добавить ключ.
-
Подключение к IP-адресу устройства-реплики с помощью SSH.
ssh -p 122 admin@REPLICA_IP
-
Чтобы создать пару ключей для репликации, используйте команду
ghe-repl-setup
с IP-адресом основного устройства и скопируйте возвращенный ею открытый ключ.ghe-repl-setup PRIMARY_IP
-
Чтобы добавить открытый ключ в список авторизованных ключей на основном устройстве, перейдите к
https://PRIMARY-HOSTNAME/setup/settings
и добавьте в список ключ, скопированный из реплики. -
Чтобы проверить подключение к основному устройству и включить режим реплики для новой реплики, выполните
ghe-repl-setup
еще раз.ghe-repl-setup PRIMARY_IP
-
Чтобы начать репликацию хранилищ данных, используйте команду
ghe-repl-start
.ghe-repl-start
Предупреждение.
ghe-repl-start
вызывает кратковременный сбой на главном сервере, во время которого пользователи могут видеть внутренние ошибки сервера. Чтобы предоставить более точное сообщение, запуститеghe-maintenance -s
на первичном узле перед запускомghe-repl-start
на узле-реплике, чтобы поместить устройство в режим обслуживания. После начала репликации отключите режим обслуживания с помощьюghe-maintenance -u
. Репликация Git не будет выполняться, пока основной узел находится в режиме обслуживания. -
Чтобы проверить состояние каждого канала репликации хранилища данных, используйте команду
ghe-repl-status
.ghe-repl-status
Создание реплик георепликации
В этом примере конфигурации используются основной узел и две реплики, расположенные в трех разных географических регионах. Хотя три узла могут быть в разных сетях, все узлы должны быть доступны со всех остальных узлов. Для всех остальных узлов должны быть открыты хотя бы обязательные административные порты. Дополнительные сведения о требованиях к порту см. в разделе "Сетевые порты".
Если задержка превышает 70 миллисекунд, рекомендуется вместо этого кэшировать реплика узлы. Дополнительные сведения см. в разделе Настройка кэша репозитория.
-
Создайте первую реплику так же, как и для стандартной конфигурации двух узлов, запустив
ghe-repl-setup
на первой реплике.(replica1)$ ghe-repl-setup PRIMARY_IP (replica1)$ ghe-repl-start
-
Создайте вторую реплику и используйте команду
ghe-repl-setup --add
. Флаг--add
предотвращает перезапись существующей конфигурации репликации и добавляет новую реплику в конфигурацию.(replica2)$ ghe-repl-setup --add PRIMARY_IP (replica2)$ ghe-repl-start
-
По умолчанию реплики настроены для одного центра обработки данных и теперь попытаются заполнить данные из существующего узла в том же центре обработки данных. Настройте реплики для разных центров обработки данных, задав другое значение для параметра центра обработки данных. Конкретные значения могут быть любыми при условии, что они отличаются друг от друга. Выполните команду
ghe-repl-node
на каждом узле и укажите центр обработки данных.На основном устройстве:
(primary)$ ghe-repl-node --datacenter [PRIMARY DC NAME]
На первой реплике:
(replica1)$ ghe-repl-node --datacenter [FIRST REPLICA DC NAME]
На второй реплике:
(replica2)$ ghe-repl-node --datacenter [SECOND REPLICA DC NAME]
Совет. Можно одновременно задать параметры
--datacenter
и--active
. -
Активный узел-реплика будет хранить копии данных устройства и обслуживать запросы конечных пользователей. Неактивный узел будет хранить копии данных устройства, но не сможет обслуживать запросы конечных пользователей. Включите активный режим с помощью флага
--active
или неактивный режим с помощью флага--inactive
.На первой реплике:
(replica1)$ ghe-repl-node --active
На второй реплике:
(replica2)$ ghe-repl-node --active
-
Чтобы применить конфигурацию, используйте команду
ghe-config-apply
на основном сервере.(primary)$ ghe-config-apply
Настройка DNS для георепликации
Настройте Geo DNS с помощью IP-адресов основных узлов и узлов-реплик. Вы также можете создать DNS CNAME для основного узла (напримерprimary.github.example.com
) для доступа к основному узлу по SSH или создать резервную копию с помощью backup-utils
Для тестирования можно добавить записи в файл локальной рабочей станции hosts
(например, /etc/hosts
). Эти примеры записей будут разрешать запросы для HOSTNAME
в replica2
. Можно нацелиться на конкретные узлы, добавив комментарий к разным строкам.
# <primary IP> HOSTNAME
# <replica1 IP> HOSTNAME
<replica2 IP> HOSTNAME