Сведения о конфигурации для кэширования репозитория
Можно настроить кэширование репозитория, создав специальный тип реплики, называемой кэшем репозитория. Затем можно настроить политики расположения данных, определяющие, какие сети репозитория реплицируются в кэш репозитория.
Кэширование репозитория не поддерживается при кластеризации.
DNS для кэшей репозитория
Основной экземпляр и кэш репозитория должны иметь разные DNS-имена. Например, если основной экземпляр находится в github.example.com, вы можете присвоить кэшу имя europe-ci.github.example.com или github.asia.example.com.
Чтобы компьютеры CI извлекали данные из кэша репозитория вместо основного экземпляра, можно использовать параметр конфигурации Git url.<base>.insteadOf. Дополнительные сведения см. в разделе git-config документации.
Например, глобальный .gitconfig для компьютера CI будет включать эти строки.
[url "https://europe-ci.github.example.com/"]
insteadOf = https://github.example.com/
Затем, когда ему будет предложено получить https://github.example.com/myorg/myrepo, Git вместо этого будет извлекать данные из https://europe-ci.github.example.com/myorg/myrepo.
Настройка кэша репозитория
-
Настройте новый экземпляр данных GitHub Enterprise Server на требуемой платформе. Этот экземпляр будет вашим кэш репозитория. Дополнительные сведения см. в разделе Настройка экземпляра GitHub Enterprise Server.
-
Задайте такой же пароль администратора, как на основном устройстве, и продолжайте процедуру.
-
Щелкните Создать узел реплики.
-
В разделе "Добавление нового ключа 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 -
Если вы настраиваете кэш репозитория в дополнение к одной или нескольким существующим репликам, используйте
-a--addили аргумент.ghe-repl-setup -a PRIMARY-IP
-
-
Чтобы настроить кэш репозитория, используйте
ghe-repl-nodeкоманду и включите необходимые параметры.-
Задайте
cache-locationдля кэша репозитория, заменив CACHE-LOCATION буквенно-цифровым идентификатором, например регионом, в котором развернут кэш. Значение CACHE-LOCATION не должно быть ни одной из поддоменов, зарезервированных для использования с изоляцией поддомена, напримерassetsилиmedia. Список зарезервированных имен см. в разделе Включение изоляции поддомена. -
cache-domainЗадайте для кэш репозитория, заменив EXTERNAL-CACHE-DOMAIN на клиенты Git имени узла, которые будут использоваться для доступа к кэш репозитория. Если вы не указываетеcache-domain, GitHub Enterprise Server присвоит значение CACHE-LOCATION в качестве поддомена имени узла, настроенного для вашего экземпляра. Дополнительные сведения см. в разделе Настройка имени узла для экземпляра. -
Если вы еще не сделали этого, задайте имя центра обработки данных на первичных и любых устройствах реплики, заменив DC-NAME именем центра обработки данных.
ghe-repl-node --datacenter DC-NAME -
Новые кэши будут пытаться заполнить из другого кэша в том же центре обработки данных.
datacenterЗадайте значение для кэш репозитория, заменив REPLICA-DC-NAME именем центра обработки данных, в котором развертывается узел.
ghe-repl-node --cache CACHE-LOCATION --cache-domain EXTERNAL-CACHE-DOMAIN --datacenter REPLICA-DC-NAME -
-
Чтобы начать репликацию хранилищ данных, используйте команду
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 -
Чтобы включить репликацию сетей репозитория в кэш репозитория, задайте политику расположения данных. Дополнительные сведения см. в политиках расположения данных.
Политики расположения данных
Вы можете управлять расположением данных, настроив политики расположения данных для репозиториев с помощью команды spokesctl cache-policy. Политики расположения данных определяют, какие сети репозитория реплицируются в кэши репозитория. По умолчанию сети репозитория не будут реплицироваться в кэши репозитория, пока не будет настроена политика расположения данных.
Политики расположения данных влияют только на содержимое Git. Содержимое в базе данных, например проблемы и комментарии к запросу на вытягивание, будет реплицировано на все узлы независимо от политики.
Примечание.
Политики расположения данных не совпадают с контролем доступа. Необходимо использовать роли репозитория для управления доступом пользователей к репозиторию. Дополнительные сведения о ролях репозитория см. в разделе Роли репозиториев для организации.
Политику можно настроить для репликации всех сетей с флагом --default. Например, эта команда создаст политику для репликации одной копии каждой сети репозитория в набор кэшей репозитория, который имеет cache_location «kansas».
ghe-spokesctl cache-policy set --default 1 kansas
Чтобы настроить репликацию для сети репозитория, укажите репозиторий, который является корневым для сети. Сеть репозитория включает репозиторий и все вилки репозитория. Невозможно реплицировать часть сети без репликации всей сети.
ghe-spokesctl cache-policy set <owner/repository> 1 kansas
Вы можете переопределить политику, которая реплицирует все сети и исключить определенные сети, указав для сети число реплик, равное нулю. Например, эта команда указывает, что любой кэш репозитория в расположении «kansas» не может содержать копии этой сети.
ghe-spokesctl cache-policy set <owner/repository> 0 kansas
Счетчики реплик со значением больше 1 в заданном расположении кэша не поддерживаются.