Skip to main content

Configurar el caché de un repositorio

Puedes configurar el caché de un repositorio si creas un aplicativo nuevo, conectando el caché del repositorio a tu aplicativo primario y configurando la replicación de redes de repositorio al caché del repositorio.

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

  1. Configurar un aparato GitHub Enterprise Server nuevo en la plataforma que desees. Este aplicativo será tu caché de repositorio. Para más información, vea "Configuración de una instancia de GitHub Enterprise Server".

  2. Establece una contraseña de administrador que coincida con la contraseña del aparato principal y continúa.

  3. Haga clic en Configurar como réplica. Opciones de instalación con vínculo para configurar la nueva instancia como una réplica

  4. En "Agregar nueva clave SSH", escribe tu clave SSH. Adición de la clave SSH

  5. Haga clic en Add key.

  6. Conéctate a la dirección IP del caché de tu repositorio utilizando SSH.

    $ ssh -p 122 admin@REPLICA IP
    7. 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
    1. 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.
  7. 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.

    $ ghe-repl-setup PRIMARY IP
  8. 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é. Establece también un nombre de centro de datos para esta memoria caché. Las cachés nuevas intentarán inicializarse desde otra caché del mismo centro de datos.

    $ ghe-repl-node --cache CACHE-LOCATION --datacenter REPLICA-DC-NAME
  9. Para iniciar la replicación de los almacenes de datos, use el comando ghe-repl-start.

    $ ghe-repl-start

    Advertencia: 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, ejecute ghe-maintenance -s en el nodo principal antes de ejecutar ghe-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 con ghe-maintenance -u. La replicación de Git no progresará mientras el nodo primario esté en modo de mantenimiento.

    11. Para comprobar el estado del canal de replicación de cada almacén de datos, use el comando `ghe-repl-status`.
    $ ghe-repl-status
  10. 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.

Nota: 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 obtener más información sobre el acceso al 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.