¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Proyecto Servidor de Backups
Solución requerida
En este caso se necesita un sistema de backup y restauración automática de servidores Linux. La idea es mantener un equipos en el cual se almacenen las Imagenes de los diferentes servidores de la red y que a su vez sea simple agregar equipos a este sistema de backup.
La automatización básica se debe dar en :
- Actualización periódica de las Imágenes de los servidores
- Recuperación de un equipo a partir de una Imagen, minimizando la intervención manual dentro del procedimiento
Esquema de implementación
Para cumplir estos requerimientos se utilizó el software System Imager
System Imager
Se trata de una herramienta que facilita la instalación y administración de toda una red local con máquinas Linux. Los cambios hechos en un PC concreto se actualizan en el resto de la red. Incluso podemos crear un disquete de arranque que permite la clonación de un equipo, de forma que hasta se particiona y formatea el disco duro de forma automática. Systemimager le permite crear imágenes de sus instalaciones Linux. Para ello, es necesario un servidor de imágenes (debería haber suficiente espacio en disco para almacenar imágenes) y un cliente cliente denominado “golden” (es decir, el sistema del que desea hacer una imagen). Esto significa que usted tiene que instalar algún software en el servidor de imágenes y en el de su cliente “golden” para ejecutar Systemimager. Systemimager, es software libre, se basa en la arquitectura cliente-servidor, por lo que deberemos disponer de una máquina que ejecutará la función de “servidor de imágenes”, y que será aquella en la cual se guardarán los clones que realicemos y, posteriormente, podrán ser instalados. La ventaja de este sistema es que podemos llegar a clonar una máquina en Europa y, a través de Internet, instalar el mismo sistema en otra situada en los Estados Unidos. A parte del código fuente, en la página web de Systemimager también podemos encontrar paquetes precompilados para Debian (y todas las otras distribuciones que utilicen el mismo sistema de paquetes, como Ubuntu) y Red Hat (RPM, también para muchas otras distribuciones como SuSE o Mandrake).
Puntos principales :
- Centralizado, todas las Imágenes se almacenan en un servidor central
- Actualiza los cambios realizados dentro de la Imagen no la Imagen completa, evitando así comprometer el ancho de banda de la red
- Automatizado, las actualizaciones de los datos de los servidores es automática y su intervención manual para su posterior recuperación es miníma
Software requerido
Sistema Operativo | Red Hat Enterprise Linux 5.5 | http://www.redhat.com |
---|---|---|
System Imager | 4.1.6 | http://wiki.systemimager.org |
Comienzo
Terminología utilizada
Image Server | Es el servidor en el cual se almacenan las imágenes de los servidores a los cuales se les realiza el backup |
---|---|
Image Client | Es cualquiera de los servidores a los cuales se les realiza backup en el imageserver |
Imagen | Se hace referencia al nombre que tendrá la imagen almacena en el Image Sever, preferentemente debera ser el hostname del Image Client |
Servidor
Pasos para la implementación
- Se realizó una instalación base del sistema operativo
- Se descargaron los paquetes oficiales de System Imager
- Se procedieron a instalar dichos paquetes de la siguiente manera
# rpm -i perl-AppConfig-1.66-1.el5.rf.noarch.rpm # rpm -i systemconfigurator-2.2.11-1.noarch.rpm # yum install perl-XML-Simple # rpm -i systemimager-common-4.1.6-1.noarch.rpm # rpm -i systemimager-server-4.1.6-1.noarch.rpm # rpm -i systemimager-i386boot-standard-4.1.6-1.noarch.rpm
Nomenclatura y estructura de archivos y directorios
- /etc/init.d/systemimager-server-rsyncd
- Script de inicio para el servicio de SystemImager, parametros : start|stop|status|restart|force-reload
- /var/lib/systemimager/
- Directorio principal donde se almacenan las Imágenes y Scripts de recuperación
- /var/lib/systemimager/images/
- Directorio donde se almacenan las Imágenes de backup
- /var/lib/systemimager/paquetes/
- Directorio donde se eligieron ubicar los archivos necesarios a instalar en los clientes
- /var/lib/systemimager/paquetes/scripts-clientes
- Scripts preparados para facilitar la puesta en marcha de los clientes
- activar_sync.sh
#!/bin/sh # Prepara systemimager para obtener la imagen desde el servidor if [ -z "$1" ]; then echo "Indique la direccion IP del servidor de imagenes" exit 1 fi si_prepareclient -server $1 -yes -kernel /boot/vmlinuz-`uname -r` -modules /lib/modules/`uname -r`/
- /var/lib/systemimager/scripts/
- Directorio donde se almacenan las Scripts de autoinstalación, no es recomendable modificar estos scripts
- /etc/systemimager/getimage.exclude
- Archivo donde configuramos los archivos y directorios que no creemos necesarios almacenar de la Imagen
# SELinux stuff /selinux/* # eventfs in SuSE /lib/klibc/events/* # mounted media devices not reported by mount /media/* # NFS stuff /var/lib/nfs/state /var/lib/nfs/*tab /var/lib/nfs/*/* # LVM caches and backups (automatically re-created at the first boot) /etc/lvm/.cache /etc/lvm/backup/* /etc/lvm/archive/* # Skip persistent names associated to the network interfaces (Ubuntu). /etc/iftab /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/75-persistent-net-generator.rules # udev network persistent naming rules (Debian). /etc/udev/rules.d/z25_persistent-net.rules /etc/udev/rules.d/z45_persistent-net-generator.rules # remove blkid mappings: this allows to use images cloned from golden clients # with raid, lvm, etc. block devices and image other clients that use different # block device types (non-raid, non-lvm, etc.) or vice versa. /etc/blkid/blkid.tab /etc/blkid.tab # Cache de Squid /var/spool/squid/* /var/cache/squid/* /var/log/squid/* # Cache de paquetes de Red Hat /var/cache/yum/* # Otros /tmp/* /var/www/html/sarg/* /var/www/squid-reports/*
Clientes
- Si el equipo cliente es un Red Hat deberemos ejecutar lo siguiente
# rpm -i perl-AppConfig-1.66-1.el5.rf.noarch.rpm # rpm -i systemconfigurator-2.2.11-1.noarch.rpm # yum install perl-XML-Simple # rpm -i systemimager-common-4.1.6-1.noarch.rpm # rpm -i systemimager-i386initrd_template-4.1.6-1.noarch.rpm # rpm -i systemimager-client-4.1.6-1.noarch.rpm
- En cambio si el equipo cliente es un Debian deberemos ejecutar lo siguiente
# apt-get install systemconfigurator # dpkg -i systemimager-initrd-template-i386_4.1.6_all.deb systemimager-common_4.1.6_all.deb systemimager-client_4.1.6_all.deb
Para preparar el cliente System Imager
# si_prepareclient --server ip_systemimager Welcome to the SystemImager si_prepareclient command. This command may modify the following files to prepare your golden client for having it's image retrieved by the imageserver. It will also create the /etc/systemimager directory and fill it with information about your golden client. All modified files will be backed up with the .before_systemimager-4.1.6 extension. /etc/services: This file defines the port numbers used by certain software on your system. Entries for rsync will be added if necessary. /tmp/filet3MvOH: This is a temporary configuration file that rsync needs on your golden client in order to make your filesystem available to your SystemImager server. inetd configuration: SystemImager needs to run rsync as a standalone daemon on your golden client until it's image is retrieved by your SystemImager server. If rsyncd is configured to run as a service started by inetd, it will be temporarily disabled, and any running rsync daemons or commands will be stopped. Then, an rsync daemon will be started using the temporary configuration file mentioned above. See "si_prepareclient --help" for command line options. Continue? (y/[n]): *********************************** WARNING *********************************** This utility starts an rsync daemon that makes all of your files accessible by anyone who can connect to the rsync port of this machine. This is the case until you reboot, or kill the 'rsync --daemon' process by hand. By default, once you use si_getimage to retrieve this image on your imageserver, these contents will become accessible to anyone who can connect to the rsync port on your imageserver. See rsyncd.conf(5) for details on restricting access to these files on the imageserver. See the systemimager-ssh package for a more secure method of making images available to clients. *********************************** WARNING *********************************** Continue? (y/[n]): Using "sfdisk" to gather information about disk: /dev/sda Using "sfdisk" to gather information about disk: /dev/sdb WARNING: cannot find the version of LVM or LVM version is not supported! WARNING: Couldn't find module "af_packet", assuming it's built into the kernel. >>> Copying modules to new initrd from: /lib/modules/2.6.32-5-686... >>> Copying modules configuration from: /lib/modules/2.6.32-5-686... skipping directory kernel skipping directory misc >>> Appending insmod commands to ./my_modules_dir/INSMOD_COMMANDS... >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/thermal/thermal_sys.ko >> insmod /lib/modules/2.6.32-5-686/kernel/fs/nls/nls_base.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/acpi/thermal.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/usb/core/usbcore.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/scsi/scsi_mod.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/ata/libata.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/net/phy/libphy.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/block/floppy.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/usb/host/ehci-hcd.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/ata/ata_piix.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/usb/host/uhci-hcd.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/net/tg3.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/ata/ata_generic.ko >> insmod /lib/modules/2.6.32-5-686/kernel/lib/crc-t10dif.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/scsi/sd_mod.ko >> insmod /lib/modules/2.6.32-5-686/kernel/fs/exportfs/exportfs.ko >> insmod /lib/modules/2.6.32-5-686/kernel/fs/xfs/xfs.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/input/serio/serio_raw.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/input/mouse/psmouse.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/platform/x86/wmi.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/acpi/button.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/input/evdev.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/char/tpm/tpm_bios.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/acpi/processor.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/input/misc/pcspkr.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/char/tpm/tpm.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/char/tpm/tpm_tis.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/char/hw_random/rng-core.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/acpi/video.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/i2c/i2c-core.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/i2c/algos/i2c-algo-bit.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/gpu/drm/drm.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/gpu/drm/drm_kms_helper.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/gpu/drm/i915/i915.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/block/loop.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/md/dm-mod.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/md/dm-log.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/md/dm-region-hash.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/md/dm-mirror.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/md/dm-snapshot.ko >> insmod /lib/modules/2.6.32-5-686/kernel/fs/fuse/fuse.ko >> insmod /lib/modules/2.6.32-5-686/kernel/fs/mbcache.ko >> insmod /lib/modules/2.6.32-5-686/kernel/fs/jbd/jbd.ko >> insmod /lib/modules/2.6.32-5-686/kernel/fs/ext3/ext3.ko >> insmod /lib/modules/2.6.32-5-686/kernel/fs/ext2/ext2.ko >> insmod /lib/modules/2.6.32-5-686/kernel/net/802/stp.ko >> insmod /lib/modules/2.6.32-5-686/kernel/net/bridge/bridge.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/cpufreq/cpufreq_conservative.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/cpufreq/cpufreq_powersave.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/cpufreq/cpufreq_stats.ko >> insmod /lib/modules/2.6.32-5-686/kernel/drivers/cpufreq/cpufreq_userspace.ko >> insmod /lib/modules/2.6.32-5-686/kernel/arch/x86/kernel/cpu/cpufreq/speedstep-lib.ko >> insmod /lib/modules/2.6.32-5-686/misc/vboxdrv.ko >> insmod /lib/modules/2.6.32-5-686/misc/vboxnetflt.ko >> insmod /lib/modules/2.6.32-5-686/misc/vboxnetadp.ko >> insmod /lib/modules/2.6.32-5-686/kernel/net/core/pktgen.ko >> insmod /lib/modules/2.6.32-5-686/kernel/net/netfilter/x_tables.ko >>> Choosing filesystem for new initrd: cpio >>> Creating new initrd from staging dir: /tmp/.systemimager.0 >> cd /tmp/.systemimager.0 && find . ! -name "*~" | cpio -H newc --create | gzip -9 > /etc/systemimager/boot/initrd.img 170149 blocks >> ls -l /etc/systemimager/boot/initrd.img -rw-r--r-- 1 root root 36636427 Aug 20 16:14 /etc/systemimager/boot/initrd.img >> Evaluating initrd size to be added in the kernel boot options >> (e.g. /etc/systemimager/pxelinux.cfg/syslinux.cfg): >> suggested value -> ramdisk_size=95314.5 >>> Using kernel from: /boot/vmlinuz-2.6.32-5-686 >> ls -l /etc/systemimager/boot/kernel -rw-r--r-- 1 root root 2287264 Aug 20 16:14 /etc/systemimager/boot/kernel Starting or re-starting rsync as a daemon..... done! This client is ready to have its image retrieved. You must now run the "si_getimage" command on your imageserver. Your client has been successfully prepared. Boot kernel (copied from this Linux distribution) and an initrd.img (generated by the initrd_template package) can be found in /etc/systemimager/boot. Automatically create configuration file for systemconfigurator: >> /etc/systemconfig/systemconfig.conf
Luego de ejecutado este paso, dentro de nuestro equipo cliente nos quedara un proceso como este
9782 ? Ss 0:00 rsync --daemon --port=873 --config=/tmp/filet3MvOH
Donde en el archivo /tmp/filet3MvOH tendremos algo como esto
# # "SystemImager" # # This file: /tmp/filet3MvOH # list = yes timeout = 900 dont compress = *.gz *.tgz *.zip *.Z *.ZIP *.bz2 *.deb *.rpm *.dbf uid = root gid = root hosts allow = ip_systemimager/mascara log file = /tmp/filek4mnqb [root] path = / exclude = /tmp/filet3MvOH /tmp/filek4mnqb
Aclaración : este es un archivo temporal que se genera automáticamente y su nombre no es importante.
También hay que configurar en /etc/crontab
02 1 * * * root /usr/local/bin/activar_sync.sh {ip_systemimager}
Para que re-ejecute el servicio cliente de ImageServer, ya que cada vez que se completa una recuperación de imagen se baja el servicio cliente.
/usr/local/bin/activar_sync.sh
#!/bin/sh # prepara systemimager para obtener la imagen desde el servidor if [ -z "$1" ]; then echo "Indique la direccion IP del servidor de imagenes" exit 1 fi si_prepareclient -server $1 -yes -kernel /boot/vmlinuz-`uname -r` -modules /lib/modules/`uname -r`/
Dentro del servidor para capturar la Imagen del Cliente
# si_getimage --golden-client ip_cliente --image nombre_de_la_imagen