2012-01-12 11 views
6

Tengo un servidor Gerrit (llamado A), y quiero configurar un espejo para un nuevo servidor (llamado B). Quiero extraer de B en lugar de usar la potencia de procesamiento de A porque A sirve como servidor principal de Gerrit y no quiero poner más carga de trabajo cuando puedo duplicarlo usando SSH desde B.La mejor manera de configurar espejo para Gerrit y todos sus repositorios Git

I Estoy usando la base de datos H2 y quiero reflejar todo el Gerrit + todos sus repositorios Git, no solo los repositorios Git porque también quiero conservar los permisos/historial de la base de datos Gerrit.

había logrado reducir el número 2 maneras posibles de hacerlo:

  1. El uso de 'réplica Gerrit' http://gerrit.googlecode.com/svn/documentation/2.1.6/cmd-replicate.html No está seguro de lo que entiende por "[--url < PATRÓN>]". ¿Dónde debería poner ejecutar este comando? ¿Está en el servidor A o B?

  2. Uso 'rsync', que está bien, pero entonces no puedo sincronizar review_site/etc/gerrit.config, ya que contiene la dirección IP del servidor A y no quieren tener que en el servidor B.

+0

Una prueba de seguimiento en Rsync. Utilicé Rsync en los directorios de Git repo y Review_Site de Gerrit. Luego ejecuté este comando en el Servidor B 'java -jar gerrit-2.1.6.war init -d/home/gerrit2/review_site /' para reinicializarlo. Luego, comienza con 'review_site/bin/gerrit.sh start'. Pero parece que faltan todos los grupos. – xbeta

Respuesta

8

algunos comentarios sobre los diferentes problemas aquí:

  1. no hay una buena manera de realizar una copia de seguridad en caliente de la base de datos y los repositorios, especialmente si está usando H2. La única opción para cerrar Gerrit y usar una herramienta de transferencia de archivos como rsync. Si usa una base de datos más robusta, como postgres, hay otra opción de respaldo. Sin embargo, todavía tiene posibles condiciones de carrera: si realiza una copia de seguridad de los repositorios antes de que se envíe un cambio y realice una copia de seguridad de la base de datos, es posible que tenga problemas. Esta es la razón por la que a largo plazo estamos trabajando para deshacernos de la base de datos y almacenar todo en los repositorios.

  2. Push vs Pull no es muy diferente en lo que respecta a la carga de la CPU en el servidor (hasta donde yo sé). Simplemente use las funciones de replicación incorporadas en Gerrit, están diseñadas para este tipo de cosas.

  3. Si el Servidor B es simplemente una copia de seguridad en caso de que el Servidor A caiga, simplemente escribiría una secuencia de comandos que detiene a Gerrit en el Servidor A en medio de la noche, rsyncs al Servidor B y vuelve a Gerrit arriba. Es lo mejor que puedes hacer en este momento, especialmente con H2.

  4. Si el servidor B está destinado a ser un esclavo de su maestro (para que algunos usuarios puedan golpearlo en lugar de todos los que golpean el servidor A), use la replicación de Gerrit y el modo esclavo - http://gerrit.googlecode.com/svn/documentation/2.1.6/config-gerrit.html#container. Tenga en cuenta que esto no respalda su base de datos o cambios en la revisión.

  5. Gerrit 2.1.6 es realmente anterior. Use al menos 2.1.8, 2.2.2 se lanzará pronto y es su mejor apuesta

  6. El comando 'gerrit replicate' está destinado a iniciar la replicación en caso de que el servidor estuviera inactivo la última vez que Gerrit trató de replicar . Las instrucciones para configurar la replicación con 2.1.6 están en http://gerrit.googlecode.com/svn/documentation/2.1.6/config-replication.html

+0

Gracias Brad. ¿Hay alguna guía para configurar el modo esclavo? Primero queremos tener una copia de seguridad del Servidor A en el Servidor B, pero si el esclavo cumple la función de tener una segunda copia completa del Servidor A en el Servidor B, estaremos encantados de hacerlo. Entonces podemos usarlo como un espejo y también una copia de seguridad del contenido del servidor A. – xbeta

+0

No, no hay mucha documentación sobre el modo esclavo que yo sepa. Como dije anteriormente, el modo Esclavo no hace una copia de seguridad de su base de datos o de cualquier cambio que esté revisando actualmente, por lo que no es una buena solución si está buscando una copia de seguridad del Servidor A. El modo esclavo tampoco funciona con H2 . Si está buscando una solución de respaldo, la nota 3 anterior es su mejor opción. – Brad

+0

Hola Brad, probé la Nota 3, y parece que rsync está funcionando bien, excepto que pierdo todos los grupos en el Servidor B después de restaurar. Usé "java -jar gerrit.war init -d/srv/server/b /" para volver a inicializarlo. Y todavía no funcionará de la manera que yo quería. Gracias. – xbeta

Cuestiones relacionadas