Archive

Archive for August 3rd, 2011

Bacula

August 3rd, 2011 2 comments

Bacula es un sistema para crear respaldos con el cual podemos automatizar esta tediosa tarea. No esta excento de monitoreo ya que debemos de aseguararnos que lo que hallamos programado se realice pero al menos no tendremos que copiar ese monton de archivos.

Ademas los respaldos se pueden configurar para hacerse de manera incremental asi solo se guardaran los archivos nuevos o modificados.

Vamos mostrar como es la instalacion y la configuracion basica. Tendremos un servidor y un cliente que es de donde sacaremos el respaldo.

Instalacion

apt-get install bacula bacula-director bacula-sd bacula-fd

Recomiendo tambien instalar los paquetes para mysql y ahi guardar el catalogo.

Configuracion
Antes de configurar les recomiendo que cada uno de los servidores tenga su nombre de host unico para poder indentificarlos, esto tambien estara ligado a los archivos de configuracion de bacula, aunque los nombres de los servicios de bacula se pueden cambiar. Tambien les recomiendo ampliamente escribir el mismo password para cada uno de los servicios, ya se que algun purista me va a decir que eso no es correcto pero les aseguro que les evitara algun dolor de cabeza sobretodo si es la primera vez que hacen estas configuraciones.

Storage Daemon
Comenzaremos con el Storage Daemon que es el programa donde se define en que lugar guardaremos los respaldos.

/etc/bacula/bacula-sd.conf

Storage {                             # definition of myself
  Name = userver-sd
  SDPort = 9103                  # Director's port
  WorkingDirectory = "/var/lib/bacula"
  Pid Directory = "/var/run/bacula"
  Maximum Concurrent Jobs = 20
  #SDAddress = 0.0.0.0
}

Director {
  Name = userver-dir
  #Password = "x63UhIUXvBtpJuegoai8xTGHSKrkOXbvX"
  Password = "abcd890"
}

Director {
  Name = userver-mon
  #Password = "nPVAjms5-mqVKI0UcVYhjb0Bu4rmf3h_H"
  Password = "abcd890"
  Monitor = yes
}

Device {
  Name = FileStorage
  Media Type = File
  Archive Device = /usr/src/backup/bacula
  LabelMedia = yes;                   # lets Bacula label unlabeled media
  Random Access = Yes;
  AutomaticMount = yes;               # when device opened, read it
  RemovableMedia = no;
  AlwaysOpen = no;
}

Si se fijan deje como comentario SDAddress = 0.0.0.0 tuve algunos problemas cuando se querian conectar los clientes. Practicamente no hay que modificar esta parte.

Los passwords los ponemos iguales, aqui la parte mas importante es la definicion de los medios de almacenamiento aqui podemos ver que tenemos uno que se llama Name = FileStorage este nombre lo volveremos a ver en algun otro archivo de configuracion, este es el nombre default se lo pueden cambiar pero recuerdenlo para mas tarde. La parte Archive Device = /usr/src/backup/bacula es donde se van a crear los archivos de respaldo, esto puede ser un directorio o algun disco que este montado en el sistema.

File Daemon
El file daemon es el programa que enviar los archivos solicitados para ser respaldados.

/etc/bacula/bacula-fd.conf

Director {
  Name = userver-dir
  Password = "abcd890"
}

#
# Restricted Director, used by tray-monitor to get the
#   status of the file daemon
#
Director {
  Name = userver-mon
  Password = "abcd890"
  Monitor = yes
}

Practicamente solo hay que cambiar los passwords. Solo debemos de verificar el nombre del director en caso de que lo hallamos cambiado.

Director
El director se encargar de hacer los respaldos manda llamadar al File Daemon de cada cliente configurado y al Storage Daemon para almacenar los archivos. En esta parte se definen los cloiente que van a ser respaldados.

/etc/bacula/bacula-dir.conf

Debido a que la configuracion de este archivo es mas extensa, lo vamos a dividir en varias partes.

Director {                            # define myself
  Name = userver-dir
  DIRport = 9101                # where we listen for UA connections
  QueryFile = "/etc/bacula/scripts/query.sql"
  WorkingDirectory = "/var/lib/bacula"
  PidDirectory = "/var/run/bacula"
  Maximum Concurrent Jobs = 1
  Password = "abcd890"         # Console password
  Messages = Daemon
  DirAddress = 0.0.0.0
}

Solo debemos verificar el password y el nombre ya estos se utilizan en los clientes y en los demas programas que componen a bacula. Deben dejar intactos los trabajos y definiciones que ya estan que el trabajo por default es el de respaldar el catalogo donde se van guardando las configuraciones y trabajos ejecutados por el director, esta base de datos es necesaria para poder restaurar mas adelante.

Client {
  Name = cliente-fd
  Address = 192.168.20.100
  FDPort = 9102
  Catalog = MyCatalog
  Password = "abcd890"
  File Retention = 30 days
  Job Retention = 6 months
  AutoPrune = yes
}

Deifnimos el cliente que vamos a respaldar, retendremos los archivos por 30 dias y los trabajos por 6 meses.

Storage {
  Name = File
# Do not use "localhost" here
  Address = 192.168.20.1                # N.B. Use a fully qualified name here
  SDPort = 9103
  Password = "abcd890"
  Device = FileStorage
  Media Type = File
}

Deifnimos el almacenamiento recuerden poner el mismo password. El nombre del dispositivo Device = FileStorage de debe ser igual al que se puso en bacula-sd.conf. Tambien podemos cambiar el nombre Name = File si lo deseamos. Como dice el comentario debemos poner un nombre de dominio o poner la direccion ip del servidor.

Pool {
  Name = File
  Pool Type = Backup
  Recycle = yes                       # Bacula can automatically recycle Volumes
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 365 days         # one year
  Maximum Volume Bytes = 50G          # Limit Volume size to something reasonable
  Maximum Volumes = 100               # Limit number of Volumes in Pool
}

En esta parte se define un conjunto de unidades de respaldo en nuestro caso este conjunto seran archivos que son creados el directorio que definimos a estos conjuntos bacula les llama volumenes, estamos definiendo que el tamaño maximo de un volumen sera de 50GB y que el numero maximo de volumenes es de 100, estos volumenes solo duraran cuando mucho 1 año.

Podemos definir varios Pools para el caso de que querramos que los respaldos se hagan en diferentes partes, es decir si tuvieramos un cliente1 y cliente2 podemos decirle que los ponga en directorios o discos duros diferentes.

FileSet{
  Name = "Servidor1"
  Include {
    Options{
       signature = MD5
       compression = GZIP
    }
    File = /home/respaldo
    File = /var/www

Definimos los archivos que queremos respaldar del cliente podemos definir tambien directorios.

Schedule {
  Name = "WeeklyCycle"
  Run = Full 1st sun at 23:55
  Run = Differential 2nd-5th sun at 23:55
  Run = Incremental mon-sat at 23:55
}

Se define cada cuanto tiempo se haran los respaldo. Recomiento no cambiarlo. Se hara un respaldo completo el primer domingo de cada mes, uno diferencial del segundo domingo y un respaldo incremental de lunes a sabado.

Job{
  Name = "Cliente1"
  JobDefs = "Cliente1Job"
}

Creamos el trabajo Cliente1 y decimos que la descripcion de ese trabajo se llama Cliente1Job.

JobDefs {
  Name = "Cliente1Job"
  Type = Backup
  Level = Incremental
  Client = cliente1-fd
  FileSet = "Servidor1"
  Schedule = "WeeklyCycle"
  Storage = File
  Messages = Standard
  Pool = File
  Priority = 10
  Write Bootstrap = "/var/lib/bacula/%c.bsr"
}

Si se fijan en esta definicion se concentran las demas partes que hemos escrito.

Con esto terminamos la parte del director, ahora lo que resta es reiniciar los servicios.

Configuracion del cliente

Para el caso del cliente solo necesitamos el File Daemon.

apt-get install bacula-fd

/etc/bacula/bacula-fd.conf

Director{
  Name = userver-dir
  Password = "abcd890"
}

Solo agregaremos el nombre del director y su password. Reiniciamos el servicio y listo.

Consola
La consola sirve para monitorear y ejecutar los trabajos si asi lo queremos.

Director {
  Name = userver-dir
  DIRport = 9101
  address = localhost
  Password = "abcd890"
}

Recuerden que se pone el mismo nombre de director y el password.
Para entrar a la consola solo escribimos bconsole en la terminal de linux.

Y con esto ya tenemos configurado un servidor de respaldos automaticos. Pueden ir agregando cliente con forme lo vayan necesitando.

Espero a ver sido lo suficientemente claro.

Saludos.

Categories: Linux, Software Tags: