Сведения о конфигурации для кэширования репозитория
Можно настроить кэширование репозитория, создав специальный тип реплики, называемой кэшем репозитория. Затем можно настроить политики расположения данных, определяющие, какие сети репозитория реплицируются в кэш репозитория.
Кэширование репозитория не поддерживается при кластеризации.
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.
-
Задайте такой же пароль администратора, как на основном устройстве, и продолжайте процедуру.
-
Щелкните Create a реплика node.
-
В разделе "Добавление нового ключа 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
Warning
ghe-repl-start
Приводит к краткому сбою на основном сервере, во время которого пользователи могут видеть внутренние ошибки сервера. Чтобы предоставить более точное сообщение, запуститеghe-maintenance -s
на первичном узле перед запускомghe-repl-start
на узле-реплике, чтобы поместить устройство в режим обслуживания. После начала репликации отключите режим обслуживания с помощьюghe-maintenance -u
. Репликация Git не будет выполняться, пока основной узел находится в режиме обслуживания. -
Чтобы проверить состояние каждого канала репликации хранилища данных, используйте команду
ghe-repl-status
.ghe-repl-status
-
Чтобы включить репликацию сетей репозитория в кэш репозитория, задайте политику расположения данных. Дополнительные сведения см. в политиках расположения данных.
Политики расположения данных
Вы можете управлять расположением данных, настроив политики расположения данных для репозиториев с помощью команды spokesctl cache-policy
. Политики расположения данных определяют, какие сети репозитория реплицируются в кэши репозитория. По умолчанию сети репозитория не будут реплицироваться в кэши репозитория, пока не будет настроена политика расположения данных.
Политики расположения данных влияют только на содержимое Git. Содержимое в базе данных, например проблемы и комментарии к запросу на вытягивание, будет реплицировано на все узлы независимо от политики.
Note
Политики расположения данных не совпадают с контролем доступа. Необходимо использовать роли репозитория для управления доступом пользователей к репозиторию. Дополнительные сведения о ролях репозитория см. в разделе Роли репозиториев для организации.
Политику можно настроить для репликации всех сетей с флагом --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 в заданном расположении кэша не поддерживаются.