Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы может все еще выполняться. Актуальные сведения см. в документации на английском языке.

Создание реплики с высоким уровнем доступности

В активной или пассивной конфигурации устройство реплики является избыточной копией основного устройства. Если основное устройство завершается сбоем, режим высокой доступности позволяет реплике выступать в качестве основного устройства, что дает возможность свести к минимуму прерывание работы службы.

Примечание. Для GitHub Enterprise Server разрешено не более 8 высокодоступных реплик (как пассивных, так и активных/геореплик).

Создание реплики с высоким уровнем доступности

  1. Настройте новое устройство GitHub Enterprise Server на выбранной платформе. Устройство-реплика должно зеркально отражать параметры ЦП, ОЗУ и хранилища основного устройства. Рекомендуется установить устройство-реплику в независимой среде. Базовые аппаратные, программные и сетевые компоненты должны быть изолированы от компонентов основного устройства. Если вы используете поставщик облачных служб, используйте отдельный регион или зону. Дополнительные сведения см. в разделе Настройка экземпляра GitHub Enterprise Server.

  2. Убедитесь, что новое устройство может взаимодействовать со всеми другими устройствами в этой среде с высоким уровнем доступности через порты 122/TCP и 1194/UDP. Дополнительную информацию см. в разделе Сетевые порты.

  3. В браузере перейдите к IP-адресу нового устройства реплики и отправьте лицензию GitHub Enterprise.

  4. Задайте такой же пароль администратора, как на основном устройстве, и продолжайте процедуру.

  5. Щелкните Настроить как реплику. Варианты установки со ссылкой для настройки нового экземпляра в качестве реплики

  6. В разделе "Добавление нового ключа SSH" введите ключ SSH. Добавление ключа SSH

  7. Нажмите Добавить ключ.

  8. Подключение к IP-адресу устройства-реплики с помощью SSH.

    $ ssh -p 122 admin@REPLICA_IP
  9. Чтобы создать пару ключей для репликации, используйте команду ghe-repl-setup с IP-адресом основного устройства и скопируйте возвращенный ею открытый ключ.

    $ ghe-repl-setup PRIMARY_IP
    1. Чтобы добавить открытый ключ в список авторизованных ключей на основном устройстве, перейдите к `https://PRIMARY-HOSTNAME/setup/settings` и добавьте в список ключ, скопированный из реплики.
  10. Чтобы проверить подключение к основному устройству и включить режим реплики для новой реплики, выполните ghe-repl-setup еще раз.

    $ ghe-repl-setup PRIMARY_IP
  11. Чтобы начать репликацию хранилищ данных, используйте команду ghe-repl-start.

    $ ghe-repl-start

    Предупреждение. ghe-repl-start вызывает кратковременный сбой на главном сервере, во время которого пользователи могут видеть внутренние ошибки сервера. Чтобы предоставить более точное сообщение, запустите ghe-maintenance -s на первичном узле перед запуском ghe-repl-start на узле-реплике, чтобы поместить устройство в режим обслуживания. После начала репликации отключите режим обслуживания с помощью ghe-maintenance -u. Репликация Git не будет выполняться, пока основной узел находится в режиме обслуживания.

    11. Чтобы проверить состояние каждого канала репликации хранилища данных, используйте команду `ghe-repl-status`.
    $ ghe-repl-status

Создание реплик георепликации

В этом примере конфигурации используются основной узел и две реплики, расположенные в трех разных географических регионах. Хотя три узла могут быть в разных сетях, все узлы должны быть доступны со всех остальных узлов. Для всех остальных узлов должны быть открыты хотя бы обязательные административные порты. Дополнительные сведения о требованиях к портам см. в разделе Сетевые порты.

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

  1. Создайте первую реплику так же, как и для стандартной конфигурации двух узлов, запустив ghe-repl-setup на первой реплике.

    (replica1)$ ghe-repl-setup PRIMARY_IP
    (replica1)$ ghe-repl-start
  2. Создайте вторую реплику и используйте команду ghe-repl-setup --add. Флаг --add предотвращает перезапись существующей конфигурации репликации и добавляет новую реплику в конфигурацию.

    (replica2)$ ghe-repl-setup --add PRIMARY_IP
    (replica2)$ ghe-repl-start
  3. По умолчанию реплики настроены для одного центра обработки данных и теперь попытаются заполнить данные из существующего узла в том же центре обработки данных. Настройте реплики для разных центров обработки данных, задав другое значение для параметра центра обработки данных. Конкретные значения могут быть любыми при условии, что они отличаются друг от друга. Выполните команду 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.

  4. Активный узел-реплика будет хранить копии данных устройства и обслуживать запросы конечных пользователей. Неактивный узел будет хранить копии данных устройства, но не сможет обслуживать запросы конечных пользователей. Включите активный режим с помощью флага --active или неактивный режим с помощью флага --inactive.

    На первой реплике:

    (replica1)$ ghe-repl-node --active

    На второй реплике:

    (replica2)$ ghe-repl-node --active
  5. Чтобы применить конфигурацию, используйте команду 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 

Дополнительные материалы