Instalación y Configuración de Bacula en CentOS 7
-
Upload
junior-cianuro-jackson -
Category
Documents
-
view
68 -
download
1
description
Transcript of Instalación y Configuración de Bacula en CentOS 7
Instalación y configuración de Bacula en CentOS 7
Bacula es un conjunto de programas Open Source, permite administrar los respaldos,
restauración y verificación de datos en una red heterogénea. Bacula es relativamente fácil
de usar y eficiente, a la vez que ofrece muchas funcionalidades avanzadas para la
administración de los datos almacenados, lo cual facilita hallar y recuperar archivos
perdidos o dañados.
Se basa en una arquitectura Cliente-Servidor que resulta eficaz y fácil de manejar, dada la
amplia gama de funciones y características que brinda; copiar y restaurar ficheros dañados
o perdidos.
Considere los siguiente al leer este manual:
La versión de bacula que se instala es la 5.2
Se usara la versión de postgresql 9.2
Algunos comandos que se muestran necesitaran de privilegios de
superusuario, considere usar sudo o ejecutar el comando como
superusuario
Instalaremos Bacula de acuerdo al siguiente esquema:
Servidor 1. Tendra los servicios:
bacula-dir
bacula-sd
PostgreSQL
bconsole
Servidor 2.Nuestro cliente, tendra los servicios:
bacula-fd
En el diagrama tenemos un 3er servidor con el servicio NFS, considere esto
un paso opcional.
19.01.2015 3 Comentarios Share
ComponentesLos componentes de Bacula son:
Bacula-directorEs el servicio (bacula-dir) que gestiona la lógica de los procesos de respaldo y administra los
demás servicios que componen Bacula. El servicio bacula-dir hace uso de un servicio de
base de datos donde guarda información importante del servicio (Trabajos, Listas de
archivos respaldados, etc. Conocido como catalogo) y esta debe estar accesible a bacula-dir.
En el archivo de configuración de este servicio se especifica dónde y cómo acceder al resto
de los servicios.
Bacula-storageEste servicio (bacula-sd) es el encargado de manejar los dispositivos de almacenamiento
físicos que se usaran para resguardar los respaldos, tales como: discos locales, grabadoras
de CD o DVD, unidades de cinta, volúmenes NAS o SAN, etc.
Su fichero de configuración define los dispositivos de almacenamiento disponibles y los
directores (bacula-dir) que pueden utilizarlo.
Bacula-fileMediante este servicio (bacula-fd) Bacula obtiene los ficheros que necesita respaldar, éste
es el componente que hay que instalar en las máquinas que necesiten respaldo. Realiza la
función de agente cliente.
Bacula-consoleEste es el cliente de administración que se conecta al bacula-dir. En el podemos realizar
trabajos de restauración o ejecución de respaldos manuales, monitorear el estatus de los
servicios que componen Bacula.
InstalaciónEmpecemos con nuestra instalación.
Base de datosTodo el conjunto de elementos que forman Bacula trabaja en sincronía y es totalmente
compatible con bases de datos como MySQL, SQLite y PostgreSQL.
Usaremos el gestor de base de datos PostgreSQL 9.2 en donde se guardara el catalogo de
archivos que se respaldan y otras variables importantes para Bacula.
Instalación del servicio
$ yum install postgresql-server
Inicio automático del servicio
$ systemctl enable postgresql.service
Iniciar las bases de datos y el servicio
$ postgresql-setup initdb$ systemctl start postgresql.service
Configuración del servicio
$ vim /var/lib/pgsql/data/postgresql.conflisten_addresses = 'localhost'port = 5432max_connections = 100client_min_messages = noticelog_min_messages = noticelog_min_error_statement = errorlog_connections = onlog_line_prefix = '%t %u %d'
Configuraciones de acceso
$ vim /var/lib/pgsql/data/pg_hba.conf# TYPE DATABASE USER CIDR-ADDRESS METHOD# "local" is for Unix domain socket connections onlylocal all all peer# IPv4 local connections:host all all 127.0.0.1/32 md5# IPv6 local connections:host all all ::1/128 md5
Aplicar los cambios
$ systemctl restart postgresql.service
Instalación de los componentesInstalamos los paquetes de bacula que necesitamos en el servidor
$ yum install bacula-console bacula-director bacula-storage
Configuración de la base de datos baculaBacula nos ofrece scripts para configurar la base de datos para el catalogo. Estos comandos
son para configurar la base de datos de bacula en Postgresql
$ su postgres -c "/usr/libexec/bacula/create_bacula_database postgresql"$ su postgres -c "/usr/libexec/bacula/make_bacula_tables postgresql"$ su postgres -c "/usr/libexec/bacula/grant_bacula_privileges postgresql"
Asignamos una contraseña al usuario bacula de postgresql
$ su postgres -c "psql"postgres=# ALTER USER bacula WITH LOGIN ENCRYPTED PASSWORD 'MiContraseña';
Otras configuraciones
$ gpasswd -a bacula postgres
Configuración de los componentesLos archivos de configuración se encuentran en el directorio /etc/bacula
Bacula-sdPrimero empezamos con la configuración del servicio de almacenamiento, este servicio se
encarga de administrar los medios de almacenamiento físicos, el archivo de configuración
encuentra nombrado generalmente como bacula-sd.conf.
En la sección Storage definimos opciones como el puerto del servicio, directorios donde se
alojaran el PID de servicio, cola de tareas, etc. También definimos cuantos trabajos
máximos ejecutara el Storage.
Storage { Name = bacula-sd SDPort = 9103 WorkingDirectory = "/var/spool/bacula" Pid Directory = "/var/run" Maximum Concurrent Jobs = 50 # Ajustar el máximo de trabajos}
En esta parte definimos la contraseña con la cual bacula-dir se conectara con nuestro
servicio bacula-sd.
Director { Name = bacula-dir Password = "PasswordSuperSecretoSD" # Contraseña de bacula-sd}
Comentamos la siguiente sección.
#Director {# Name = bacula-mon# Password = "dsd"# Monitor = yes#}
En esta sección definimos las características de nuestro medio de almacenamiento.
Configuramos el Device con el nombre de DiscoNFS, sera un medio de almacenamiento de
tipo File (este tipo pueden ser medios externos de almacenamiento montados en el
sistema).
Device { Name = DiscoNFS # Nombre de nuestro dispositivo Media Type = File # Tipo de medio Archive Device = /mnt/backups # Punto de montaje LabelMedia = yes; Random Access = Yes; AutomaticMount = no; RemovableMedia = no; AlwaysOpen = no;}
Punto de montaje NFS
Como parte de la arquitectura de configuración de ejemplo montaremos un recurso
compartido NFS (previamente configurado) en /mnt/backups que nos servirá para guardar
los respaldos.
Considere esto un paso opcional, usted puede solo usar un directorio
valido de su sistema para alojar los respaldos. Bacula recomienda instalar
el servicio bacula-sd en un servidor standalone.
$ yum -y install nfs-utils
Iniciamos los servicios
systemctl restart rpcbindsystemctl start nfs-locksystemctl start nfs-idmapsystemctl start nfs-mountd
Habilitamos los servicios
$ systemctl enable rpcbind$ systemctl enable nfs-lock$ systemctl enable nfs-idmap$ systemctl enable nfs-mountd
Montando la carpeta NFS
sudo mount -v -t nfs -o sec=sys,proto=tcp 192.168.x.x:/volume/backups /mnt/backups
Si no tenemos ningún problema procedemos a editar el archivo fstab para que el sistema
monte la carpeta al iniciar.
$ vim /etc/fstab192.168.x.x:/volume1/backups /mnt/backups nfs timeo=14,intr,_netdev 0 0
Bacula-dirAhora empezaremos la configuración del Bacula director, este se encuentra nombrado
como bacula-dir.conf, en este archivo encontraremos las siguientes opciones para
configurar.
En la sección Director dentro del archivo de configuración, configuramos el máximo de
trabajos concurrentes y la contraseña para bacula-dir (Esta contraseña se usa para
conectarse desde la consola de administración, bconsole).
Director { Name = bacula-dir DIRport = 9101 QueryFile = "/etc/bacula/query.sql" WorkingDirectory = "/var/spool/bacula" PidDirectory = "/var/run" Maximum Concurrent Jobs = 1 # Numero máximo de trabajos concurrentes Password = "MiSuperPaswordBaculaDIR" # Contraseña de bacula-dir Messages = Daemon
}
La sección FileSet es donde se define los archivos y directorios que se respaldaran, así
como los que serán excluidos, se puede declarar mas de un FileSet.
FileSet es requerido en la definicion Job.
Vamos a declarar un FileSet con el nombre Linux Set, este tendra un cifrado de tipo SHA1 e
ira comprimido con GZIP.
FileSet { Name = "Linux Set" # Nombre Include { Options { signature = SHA1 # Tipo de cifrado compression = GZIP # Tipo de compresión } File = / # Archivos que se respaldaran File = /boot }Exclude { # Archivos que no se respaldaran File = /tmp File = /proc File = /dev File = /sys File = /net File = /misc File = /lost+found }}
En la sección Schedule, se especifica el tipo, fecha y hora en que se realizara los trabajos de
respaldo. En la variable Run definimos primero el tipo de respaldo (completo, diferencial o
incremental) y después su ciclo de ejecución (definido tipo crontab).
Schedule es requerido en la definición Job.
Definamos un schedule con el nombre CicloServidores que ejecutara un tipo de respaldo
completo (Full) todos los primer domingo de cada mes, ejecutara un respaldo diferencial
(Differential) a partir del segundo al quinto domingo de cada mes y un respaldo incremental
de lunes a sábado (Incremental); todos las tareas se ejecutan a las 23 horas.
Schedule { Name = "CicloServidores" # Nombre Run = Full 1st sun at 23:00 # Full – Mensual Run = Differential 2nd-5th sun at 23:00 # Diferencial – Semanal Run = Incremental mon-sat at 23:00 # Incremental – Diario}
En la sección Storage se configura las credenciales del servicio de almacenamiento (bacula-
sd). También se define el dispositivo (device) donde se realizará el respaldo.
jahrmandoBlog de Jesús Armando UchDEV • SYSADMIN • LINUX
Acerca de
Bitacora
Archivo
Contacto
Configuramos el Storage con el nombre LocalStorage, configuramos las credenciales de
acceso, dirección de red y el dispositivo que configuramos en bacula-sd.
Storage { Name = LocalStorage # Nombre Address = 192.168.x.x # No usar localhost SDPort = 9103 Password = "PasswordSuperSecretoSD" # Contraseña de bacula-sd Device = DiscoNFS # Nombre del dispositivo Media Type = File # Tipo de medio}
En la directiva Address es importante no usar localhost o la ip 127.0.0.1, si
tienes corriendo el servicio bacula-sd en el mismo servidor del bacula-dir
(como es nuestro caso) usa la IP LAN o nombre de dominio asignado al
servidor.
En la sección Catalog definimos la base de datos que previamente configuramos en
PostgreSQL.
Le asignamos el nombre MiCatalogo y configuramos los accesos.
Catalog { Name = MiCatalogo # Nombre del catalogo dbname = "bacula"; dbuser = "bacula"; dbpassword = "PasswordSuperSecretoDB"}
El recurso Pool define el conjunto de volúmenes asociados a un trabajo (Job), es decir es
una agrupación de volúmenes de respaldo que se asocian a un trabajo.
Como buena practica podemos crear un Pool por cliente.
Creamos un Pool con el nombre PoolCliente01 y configuramos de la siguiente forma.
Pool { Name = PoolCliente01 # Nombre Pool Type = Backup # Tipo backup Recycle = yes # Bacula reutilizara volumenes expirados. AutoPrune = yes # Borra los trabajos en volumenes expirados Action On Purge = Truncate # Trunca los datos cuando se ejecuta purge Volume Retention = 2 months # Expiracion de datos Maximum Volume Bytes = 10G # Maxima capacidad por volumen Maximum Volumes = 5 # Numero de volumenes en el pool Label Format = "VolCliente01-" # Formato para autonombrar los volumenes}
Ahora en la sección Client se define al cliente (bacula-fd), aquí se especifica las credenciales
que se utilizara para conectarse, también se define la política de retención de datos y
procesos/trabajos.
Client { Name = cliente01 # Nombre Address = cliente01.example.com # IP ó dominio
FDPort = 9102 Catalog = MiCatalogo # Catalogo definido Password = "PasswordSuperSecretoFD" # Contraseña de acceso del cliente File Retention = 2 months # Días de retención Job Retention = 3 months # Expira un trabajo}
Y por ultimo (y no menos importante) el recurso Job, aquí se define un trabajo de respaldo
ó restauración y se definen otros atributos como bajo que cliente se realizará el respaldo
(Client), el conjunto de datos a respaldar (FileSet), el esquema de agrupación de los
volúmenes (Pool), los horarios de ejecución (Schedule) y donde se almacenaran los datos
físicamente (Storage).
Para cada cliente debemos generar dos tipos de Job:
Backup. Respaldo
Restore. Restauración
También existe el sección JobDefs que nos sirve como una plantilla para usar en los Job,
esto es util porque aveces entre los Job pueden compartir ciertos parámetros y no seria
necesario declararlos en todos.
# Plantillas para los JobJobDefs { Name = "BackupServerLinux" # Nombre Type = Backup # Tipo de trabajo Level = Incremental # Nivel Schedule = "CicloServidores" # Ciclo de ejecución Storage = LocalStorage # Donde se guarda el respaldo Messages = Standard # Tipo de notificación FileSet = "Linux Set" # Archivos que respaldara Priority = 10 # Prioridad Write Bootstrap = "/var/spool/bacula/%c_server.bsr" # Log del trabajo}JobDefs { Name = "RestoreServerLinux" # Nombre Type = Restore # Tipo de trabajo Storage = LocalStorage FileSet = "Linux Set" Messages = Standard Where = /tmp/bacula-restores # Directorio de restauración}## Definicion de trabajos#Job { Name = "BackupCliente01" # Nombre JobDefs = "BackupServerLinux" # Plantilla de Job Client = cliente01 # Cliente que lo usara Pool = PoolCliente01 # Pool de volumenes que usara}Job { Name = "RestoreCliente01" JobDefs = "RestoreServerLinux" Client = cliente01 Pool = PoolCliente01}
En la variable Where del JobDefs “RestoreServerLinux” es donde señalamos en que directorio
del cliente se va restaurar los archivos.
Firewall
Tenemos que abrir los puertos de los servicios bacula-dir (9101) y bacula-sd (9103) en
protocolo TCP.
Iptables:
$ vim /etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dport 9101 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 9103 -j ACCEPT$ service iptables restart
Firewalld:
$ firewall-cmd --zone=public --add-service=bacula --permanent$ firewall-cmd --reload
Bacula-fd (Cliente)Una vez terminado con la configuración del director y haber declarado los clientes que se
conectaran para ser respaldados procedemos a instalar en los clientes (bacula-fd).
InstalaciónLa instalación de Bacula-fd es diferente entre el centos 6.x y 5.x, esta radica en que en
CentOS 5.x no se encuentra en los repositorios conocidos y se tiene que instalar desde las
fuentes.
En Centos 6.x, 7
En centos 6.x y 7 podemos encontrar bacula-fd desde los repositorios base, esto hace mas
rapida la instalación y configuraciones del cliente.
Instalación del servicio
$ yum -y install bacula-client
En Centos 5.x
Como se menciono anteriormente en CentOS 5.x realizaremos la instalación desde la
fuente de binarios. Haremos los siguiente:
Instalación de compiladores al sistema.
$ yum install gcc gcc-c++ autoconf automake
Descargamos las fuentes de Bacula y descomprimimos la fuente.
$ wget http://sourceforge.net/projects/bacula/files/bacula/5.0.2/bacula-5.0.2.tar.gz/download$ tar -zxf bacula-5.0.2.tar.gz
Nos cambiamos al directorio donde descomprimimos las fuentes, creamos una variable de
sistema CFLAGS que nos servirá en la compilación y después procedemos a configurar la
instalación y compilar.
$ cd bacula-5.0.2$ CFLAGS="-g -Wall"$ ./configure --sbindir=/usr/sbin --sysconfdir=/etc/bacula --with-pid-dir=/var/run --with-subsys-dir=/usr/libexec/bacula --with-working-dir=/var/spool/bacula --enable-client-only$ make$ make install
Configuraciones de arranque del servicio bacula-fd.
Agregar la siguiente linea: # chkconfig: - 87 26 en el archivo
/etc/init.d/bacula-fd
$ cp /usr/sbin/bacula-fd /etc/init.d/$ vim /etc/init.d/bacula-fd#! /bin/sh# chkconfig: - 87 26## bacula This shell script takes care of starting and stopping# the bacula daemons........
ConfiguraciónLa configuración están en bacula-fd.conf. Aquí definimos una clave de acceso para el cliente.
Agregamos la contraseña que definimos en la sección Client del bacula-dir.
Director { Name = bacula-dir Password = "PasswordSuperSecretoFD" # Contraseña del cliente}
Se comenta esta sección.
#Director {# Name = bacula-mon# Password = "vMN"# Monitor = yes#}
Activando el servicio.
En CentOS 7
$ systemctl enable bacula-fd$ systemctl start bacula-fd
En CentOS 6.x y 5.x
$ chkconfig bacula-fd on$ service bacula-fd start
Firewall
Configuraciones de firewall, abrimos el puerto 9102.
Iptables
$ vim /etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dport 9102 -j ACCEPT$ service iptables restart
Firewalld
$ firewall-cmd --permanent --zone=public --add-port=9102/tcp
Bacula-console (Consola)Existen varias opciones para administrar Bacula, una de ellas es por medio de bconsole,
donde por medio de lineas de comando interactuamos con bacula-dir.
Este programa la tenemos que instalar desde el equipo donde tengamos pensado realizar
las tareas de administrador, no necesariamente se tiene que alojar en el servidor.
Instalación desde repositorios. (RHEL, CentOS, Fedora)
$ yum install bacula-console
En su archivo de configuración agregamos la contraseña de acceso de bacula-dir que
definimos anteriormente.
Director { Name = bacula-dir DIRport = 9101 address = 192.168.x.x # IP ó dominio Password = "MiSuperPaswordBaculaDIR" # Contraseña de bacula-dir}
Administración básica
Generar un respaldo manualmente
$ bconsole* run # Ejecutamos un Job de respaldo (backup)Select Job resource (1-3): 1 # Seleccionamos el Job de backup del clienteOK to run? (yes/mod/no): yes # Ejecutamos la tareaJob queued. JobId=1* exit
Las tareas de respaldo se irán generando automáticamente de acuerdo a las tareas que se
definieron en la configuraciones del servicio bacula-dir.
Generar una restauración
Las restauraciones se pueden realizar desde varios puntos o imágenes de archivos que se
hayan generado.
$ bconsole* restore # Ejecutamos una tarea de restauraciónTo select the JobIds, you have the following choices: 1: List last 20 Jobs run ..
#howto #centos #bacula
5: Select the most recent backup for a client .. 13: CancelSelect item: (1-13): 5 # Seleccionamos el 5 para generar el mas reciente.Defined Clients: 1: cliente01Select the Client (1-11): 1 # Seleccionamos al cliente$ ls # Listamos los archivos respaldadoshome/$ mark home # Marcamos los que deseemos restaurar5 files marked.$ done # Terminamos de seleccionarOK to run? (yes/mod/no): yes # Ejecutamos la tarea configuradaJob queued. JobId=2* exit
Mas informaciónbacula.org
server-world.info
« prev next »
Amavisd-new - Permitir adjuntos.EXE a través de archivos …2 comentarios • hace un mes
Jesus Armando Uch — En la siguientelinea puedes agregar las extensionesque creas pertinente entregar: [ …
Crear usuario de lectura (read-only)en PostgreSQL1 comentario • hace un año
Nahum — Excelente (y)
TAMBIÉN EN BLOG JAHRMANDO
3 Comentarios Blog Jahrmando Iniciar sesión1
Compartir⤤ ordenar por el más nuevo
Únete a la discusión...
• Responder •
Abel Hernandez • hace 4 mesesal ejecutar la linea
su postgres -c "/usr/libexec/bacula/create_bacula_database postgresql"
Me dice error de autenticacion, ya corrobore el password del usuario root y es elque estoy utilizando △ ▽
• Responder •
Jesus Armando Uch • hace 4 mesesModer. > Abel Hernandez
Si no tienes problemas con tu contraseña Abel podría ser un problema deautenticacion con el servicio postgresql, asegurate tener la configuraciónpg_hba.conf como se describe en el post. Después verifica que puedes entrar a la consola sql de postgrescorrectamente:1. $ sudo su - postgres -c "psql" △ ▽
• Responder •
anix • hace 6 mesesMuchas gracias, tu aporte me fue de mucha ayuda!!!!!!!
1△ ▽
¿QUE ES ESTO?
Suscribirse✉ Agrega Disqus a tu sitiod Privacidadὑ�
Recomendar
Compartir ›
Compartir ›
Compartir ›