Cómo configurar la copia de seguridad del servidor GitLab
GitLab es una solución absoluta para almacenar todos sus repositorios de Git. Hacer copias de seguridad es una actividad importante incluso cuando algunas personas la ignoran porque hacer copias de seguridad repetidamente es demasiado tedioso y aumenta su frustración como desarrollador. Por lo tanto, automatizar todo el proceso de realizar la copia de seguridad de sus repositorios de GitLab es una buena idea. Explicaré aquí cómo lograrlo.
En mi artículo anterior, expliqué cómo instalar un GitLab seguro en un servidor Ubuntu. En este artículo, explicaré cómo hacer una copia de seguridad de sus datos. Un enfoque básico que todo el mundo debería seguir es realizar copias de seguridad diaria, semanal y mensual porque si uno falla, tiene otro. Nunca guarde su copia de seguridad en el propio servidor de GitLab porque si el servidor falla, sus copias de seguridad también se perderán. Veamos cómo hacer una copia de seguridad de su servidor GitLab y almacenarlo en un servidor remoto.
Creando copia de seguridad
GitLab tiene una tarea incorporada para respaldar sus datos y repositorios. Pero debemos asegurarnos de ejecutar este script de respaldo como usuario de git para mantener los permisos de archivo adecuados y consistentes.
root@linoxide:/home/git/gitlab# sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production Dumping database ... Dumping PostgreSQL database gitlabhq_production ... [DONE] done Dumping repositories ... done Dumping uploads ... done Creating backup archive: 1479023906_gitlab_backup.tar ... done Deleting tmp directories ... done Deleting old backups ... skipping
La copia de seguridad se crea en la carpeta «/ home / git / gitlab / tmp / backups» debajo de la instalación de gitlab.
root@linoxide:/home/git/gitlab/tmp/backups# ll total 68 drwxr-xr-x 2 git git 4096 Nov 13 07:58 ./ drwxr-xr-x 7 git git 4096 Nov 13 07:58 ../ -rw-r--r-- 1 git git 61440 Nov 13 07:58 1479023906_gitlab_backup.tar
Copia de seguridad de los archivos de configuración
La utilidad de copia de seguridad de GitLab solo realiza copias de seguridad de los datos y los repositorios. Pero como medida de seguridad, siempre se recomienda mantener la copia de seguridad de los archivos de configuración que se pueden usar al restaurar una copia de seguridad de la aplicación GitLab. Preferí hacer una copia de seguridad de toda la carpeta de configuración «GitLab». Creé un script backup.sh para hacer una copia de seguridad de la carpeta de configuración de GitLab y guardarlo en nuestra carpeta de copia de seguridad de GitLab «/ home / git / gitlab / tmp / backups / config-backups /». Consulte mi secuencia de comandos de copia de seguridad a continuación:
#!/bin/sh umask 0077; cd /home/git/gitlab/ tar -czf /home/git/gitlab/tmp/backups/config-backups/config.$(date +%s).tgz config
Podemos agregar este script para que se ejecute en Cron para hacer una copia de seguridad de estos archivos de configuración automáticamente según sea necesario. Lo he programado para que se ejecute todos los lunes a las 2 a. M. Explicaré sobre este Cron en la sección posterior.
Habilitación de la autenticación de clave SSH entre los servidores
Necesitamos crear una clave SSH para root en la fuente de GitLab y copiar la clave pública al servidor de respaldo de GitLab para mejorar la conexión SSH entre los servidores durante la sincronización de la cuenta.
IP del servidor GitLab SRC = 104.131.169.217
IP del servidor GitLab DEST = 104.236.195.186
root@linoxide:/home/git/gitlab/tmp/backups# ssh-keygen root@linoxide:# ssh-copy-id -i /root/.ssh/id_rsa.pub root@104.236.195.186
Una vez hecho esto, puede verificar las claves de autorización en el servidor de respaldo.
root@-backupnode:~/.ssh# cat authorized_keys
Sincronizar archivos de respaldo
Aquí estamos usando un demonio de sincronización en vivo llamado lsyncd. Se utiliza para sincronizar o replicar archivos y directorios de forma local y remota después de un intervalo de tiempo específico. Utiliza Rsync y SSH en el backend. Supervisa el directorio en el servidor de origen, si se produce algún cambio o modificación en el extremo de origen, lsyncd replicará el mismo en su servidor de respaldo después de un intervalo de tiempo específico.
Solo necesitamos instalar esto en el servidor de origen. Puede instalar este paquete con un solo comando.
root@linoxide:/homes# apt-get install lsyncd
A continuación, necesitamos configurar el archivo de configuración de lsyncd para que funcione según sea necesario. En primer lugar, debemos copiar el archivo lrsync.lua de la carpeta «/ usr / share» y copiarlo en la carpeta / etc.
Creé una carpeta «lsyncd» dentro de la carpeta / etc / y copié este archivo allí.
root@linoxide-:/etc# mkdir /etc/lsyncd root@linoxide-:/etc# cp -rp /usr/share/doc/lsyncd/examples/lrsync.lua /etc/lsyncd/lsyncd.conf.lua
Agregue las siguientes líneas al archivo de configuración como en la captura de pantalla.
Cambiaremos «default.rsync» a «default.rsyncssh» para habilitar rsync sobre ssh, y debemos reemplazar la variable «target» con las variables «host» y «targetdir». Además, necesitamos crear un directorio de registro y archivos de registro / estado para que lsyncd los utilice.
root@linoxide-:/etc# mkdir -p /var/log/lsyncd/ root@linoxide-:/var/log/lsyncd# touch lsyncd.log lsyncd-status.log
Finalmente, necesitamos reiniciar y habilitar el servicio lsyncd en el servidor de origen.
root@linoxide-:/etc/lsyncd#systemctl restart lsyncd root@linoxide-:/etc/lsyncd# systemctl status lsyncd
Configuración de trabajos Cron
Nuestra siguiente tarea es configurar cronjobs en el servidor de origen para generar archivos de respaldo del repositorio de Git. Incluso podemos crear un cronjob más para borrar las copias de seguridad más antiguas de la carpeta Copia de seguridad. Automaticemos todo esto usando trabajos Cron.
He creado tres Cronjobs de la siguiente manera:
# m h dom mon dow command 0 1 * * 1 cd /home/git/gitlab && sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production 0 3 * * 1 find /home/git/gitlab/tmp/backups/*.tar -mtime +30 -exec rm {} ; 0 2 * * 1 /root/backup.sh
-
- Para crear la copia de seguridad de la aplicación y los datos de GitLab a la 1 a. M. Todos los lunes de la semana
-
- Para eliminar todas las copias de seguridad que tengan más de 30 días de la carpeta de copias de seguridad.
-
- Para hacer una copia de seguridad de la carpeta de configuración todos los lunes a las 2 a. M.
Los agregué a mi Root Cron usando el comando «crontab -e -u root».
Tenga en cuenta: Cualquier cambio de archivo en la carpeta de respaldo de GitLab se actualizará automáticamente en nuestro servidor de respaldo remoto.
Verificación de las copias de seguridad
Finalmente, he verificado nuestras copias de seguridad en el servidor de copia de seguridad al iniciar sesión en mi servidor de copia de seguridad remoto.
root@backupnode:/home/gitlab/backup# pwd /home/gitlab/backup root@backupnode:/home/gitlab/backup# ls -R .: 1479107412_gitlab_backup.tar 1479108008_gitlab_backup.tar 1479108610_gitlab_backup.tar config-backups 1479107710_gitlab_backup.tar 1479108309_gitlab_backup.tar 1479108912_gitlab_backup.tar ./config-backups: config.1479189401.tgz config.1479189661.tgz config.1479189781.tgz config.1479189901.tgz config.1479189601.tgz config.1479189721.tgz config.1479189841.tgz
Los archivos de respaldo en ambos servidores siguen siendo exactamente los mismos.
Conclusión
Estos deberían ser los conceptos básicos de cómo mantener una copia de seguridad de su servidor GitLab. Esta es la forma más sencilla de hacer una copia de seguridad de su servidor GitLab. Cada día se agregan nuevos datos a su servidor GitLab. Pero no se da cuenta de que su servidor puede fallar debido a muchas razones y, a veces, cuando se da cuenta de que todos sus datos se han perdido, todos sus repositorios ahora residen en algún lugar que obviamente no conoce. Por lo tanto, realizar una copia de seguridad de sus aplicaciones es tan importante como agregarles nuevas funciones. Es una parte del mantenimiento de su aplicación que generalmente es ignorada por la mayoría de las personas. Así que mantenga sus datos seguros y realice copias de seguridad periódicamente.