Skip to main content

Настройка кэша репозитория

Вы можете настроить кэш репозитория для GitHub Enterprise Server путем создания нового экземпляра, подключения кэш репозитория к основному экземпляру и настройки репликации сетей репозитория к кэш репозитория.

Сведения о конфигурации для кэширования репозитория

Можно настроить кэширование репозитория, создав специальный тип реплики, называемой кэшем репозитория. Затем можно настроить политики расположения данных, определяющие, какие сети репозитория реплицируются в кэш репозитория.

Кэширование репозитория не поддерживается при кластеризации.

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.

Настройка кэша репозитория

  1. Настройте новый экземпляр данных GitHub Enterprise Server на требуемой платформе. Этот экземпляр будет вашим кэш репозитория. Дополнительные сведения см. в разделе «Настройка экземпляра GitHub Enterprise Server».

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

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

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

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

  6. Подключитесь к IP-адресу кэша репозитория с помощью SSH.

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

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

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

    • Если кэш репозитория является единственным дополнительным узлом, аргументы не требуются.

      ghe-repl-setup PRIMARY-IP
      
    • Если вы настраиваете кэш репозитория в дополнение к одной или нескольким существующим репликам, используйте -a --add или аргумент.

      ghe-repl-setup -a PRIMARY-IP
      
  10. Чтобы настроить кэш репозитория, используйте 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
    
  11. Чтобы начать репликацию хранилищ данных, используйте команду ghe-repl-start.

    ghe-repl-start
    

    Warning

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

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

    ghe-repl-status
    
  13. Чтобы включить репликацию сетей репозитория в кэш репозитория, задайте политику расположения данных. Дополнительные сведения см. в разделе Политики расположения данных.

Политики расположения данных

Вы можете управлять расположением данных, настроив политики расположения данных для репозиториев с помощью команды 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 в заданном расположении кэша не поддерживаются.