Acerca de la configuración para el almacenamiento en caché de repositorio
Ahora puedes configurar el almacenamiento de repositorios en caché si creas un tipo especial de réplica llamado caché de repositorio. Entonces, puedes configurar las políticas de ubicación de datos que rijan qué redes de repositorio se replican en el caché del mismo.
El caché de repositorio no es compatible con el clústering.
DNS para cachés de repositorio
La instancia principal y el caché de repositorio deben tener nombres de DNS diferentes. Por ejemplo, si la instancia principal está en github.example.com
, puedes decidir llamar europe-ci.github.example.com
o github.asia.example.com
a una memoria caché.
Para que las máquinas de CI realicen capturas desde la memoria caché del repositorio en lugar de la instancia principal, puedes usar la opción de configuración url.<base>.insteadOf
de Git. Para más información, vea git-config
en la documentación de Git.
Por ejemplo, el .gitconfig
global para la máquina de CI incluiría estas líneas.
[url "https://europe-ci.github.example.com/"]
insteadOf = https://github.example.com/
Después, cuando se le solicite que capture https://github.example.com/myorg/myrepo
, Git capturará desde https://europe-ci.github.example.com/myorg/myrepo
.
Configurar el caché de un repositorio
-
Configura una instancia de GitHub Enterprise Server nueva en la plataforma que desees. Esta instancia será tu caché de repositorio. Para más información, consulta Configurar una instancia del servidor de GitHub Enterprise.
-
Establece una contraseña de administrador que coincida con la contraseña del aparato principal y continúa.
-
Haga clic en Crear un nodo de réplica.
-
En "Agregar nueva clave SSH", escribe tu clave SSH.
-
Haga clic en Add key.
-
Conéctate a la dirección IP del caché de tu repositorio utilizando SSH.
ssh -p 122 admin@REPLICA-IP
-
A fin de generar un par de claves para la replicación, use el comando
ghe-repl-setup
con la dirección IP del dispositivo principal y copie la clave pública que devuelve.ghe-repl-setup PRIMARY_IP
-
Para agregar la clave pública a la lista de claves autorizadas en el dispositivo principal, vaya a
https://PRIMARY-HOSTNAME/setup/settings
y agregue a la lista la clave que ha copiado de la réplica. -
Para comprobar la conexión con el modo principal y habilitar el modo de réplica para la memoria caché del repositorio, vuelve a ejecutar
ghe-repl-setup
.-
Si la memoria caché del repositorio es el único nodo adicional, no se requieren argumentos.
ghe-repl-setup PRIMARY-IP
-
Si va a configurar una caché del repositorio además de una o varias réplicas existentes, use el argumento
-a
o--add
.ghe-repl-setup -a PRIMARY-IP
-
-
Para configurar la caché del repositorio, usa el comando
ghe-repl-node
e incluye los parámetros necesarios.-
Establece
cache-location
para la caché del repositorio, reemplazando CACHE-LOCATION por un identificador alfanumérico, como la región donde se implementa la memoria caché. El valor CACHE-LOCATION no debe ser ninguno de los subdominios reservados para su uso con aislamiento de subdominio, comoassets
omedia
. Para ver una lista de nombres reservados, consulta Habilitar el aislamiento de subdominio. -
Establece un
cache-domain
para la memoria caché del repositorio, reemplazando EXTERNAL-CACHE-DOMAIN por el nombre de host que los clientes de Git usarán para acceder a la caché del repositorio. Si no especificas un valorcache-domain
, GitHub Enterprise Server anteponerá el valor CACHE-LOCATION como subdominio al nombre de host configurado para la instancia. Para más información, consulta Configuración del nombre de host para la instancia. -
Si aún no lo ha hecho, establezca el nombre del centro de datos en el dispositivo principal y cualquier dispositivo de réplica, reemplazando DC-NAME por un nombre de centro de datos.
ghe-repl-node --datacenter DC-NAME
-
Las cachés nuevas intentarán inicializarse desde otra caché del mismo centro de datos. Establece un valor
datacenter
para la memoria caché del repositorio, reemplazando REPLICA-DC-NAME por el nombre del centro de datos donde vas a implementar el nodo.
ghe-repl-node --cache CACHE-LOCATION --cache-domain EXTERNAL-CACHE-DOMAIN --datacenter REPLICA-DC-NAME
-
-
Para iniciar la replicación de los almacenes de datos, use el comando
ghe-repl-start
.ghe-repl-start
Warning
ghe-repl-start
produce una breve interrupción en el servidor principal, durante la cual los usuarios pueden experimentar errores internos del servidor. Para proporcionar un mensaje más descriptivo, ejecuteghe-maintenance -s
en el nodo principal antes de ejecutarghe-repl-start
en el nodo de réplica para poner el dispositivo en modo de mantenimiento. Una vez que la comience la replicación, inhabilite el modo de mantenimiento conghe-maintenance -u
. La replicación de Git no progresará mientras el nodo primario esté en modo de mantenimiento. -
Para comprobar el estado del canal de replicación de cada almacén de datos, use el comando
ghe-repl-status
.ghe-repl-status
-
Para habilitar la replicación de las redes de repositorio en el caché del mismo, configura una política de ubicación de datos. Para obtener más información, consulta Directivas de ubicación de datos.
Políticas de ubicación de datos
Puedes controlar la ubicación de los datos mediante la configuración de directivas de ubicación de datos para los repositorios con el comando spokesctl cache-policy
. Las políticas de ubicación de datos determinan qué redes de repositorios se replican en qué cachés de repositorio. Predeterminadamente, ninguna red de repositorio se replicará en ninguno de los cachés de repositorio sino hasta que se configuren las políticas de ubicación.
Las directivas de ubicación de datos solo afectan al contenido de Git. El contenido de la base de datos, como comentarios sobre problemas y solicitudes de incorporación de cambios, se replicará en todos los nodos independientemente de la directiva.
Note
Las directivas de ubicación de datos no son lo mismo que el control de acceso. Debes usar roles de repositorio para controlar qué usuarios pueden acceder a un repositorio. Para más información sobre los roles de repositorio, consulta Roles de repositorio para una organización.
Puedes configurar una directiva para replicar todas las redes con la marca --default
. Por ejemplo, este comando creará una directiva para replicar una sola copia de cada red de repositorio en el conjunto de cachés de repositorio cuyo cache_location
es «kansas».
ghe-spokesctl cache-policy set --default 1 kansas
Para configurar la replicación para una red de repositorio, especifica aquél que sea la raíz de la red. Una red de repositorio incluye un repositorio y todas las bifurcaciones de este. No puedes replicar parte de una red sin replicarla integralmente.
ghe-spokesctl cache-policy set <owner/repository> 1 kansas
Puedes anular una política que replica todas las redes y excluye redes específicas si especificas un conteo de réplica de cero para la red. Por ejemplo, este comando especifica que cualquier caché de repositorio en la ubicación "kansas" no puede contener copias de esa red.
ghe-spokesctl cache-policy set <owner/repository> 0 kansas
Los recuentos de réplica mayores a uno un alguna ubicación de caché no son compatibles.