Примечание.
Существует не более 8 реплик высокой доступности (как пассивные, так и активные и геореплики, а также кэш репозитория экземпляры) для GitHub Enterprise Server.
Создание реплики с высоким уровнем доступности
-
Настройте новое устройство 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 -
Чтобы добавить открытый ключ в список авторизованных ключей на основном устройстве, перейдите к
http://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 миллисекунд. Не рекомендуется настраивать брандмауэр между сетями узлов. Если задержка превышает 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