Skip to main content

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

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

Note

Существует не более 8 реплика высокого уровня доступности (пассивные и активные и гео реплика, а также кэш репозитория экземпляры), разрешенные для GitHub Enterprise Server.

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

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

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

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

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

  5. Щелкните Configure as Replica.

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

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

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

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

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

  11. Чтобы проверить подключение к основному устройству и включить режим реплики для новой реплики, выполните ghe-repl-setup еще раз.

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

    ghe-repl-start
    

    Warning

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

  13. Чтобы проверить состояние каждого канала репликации хранилища данных, используйте команду 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]
    

    Tip

    Вы можете одновременно задать --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

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