Instalación y Configuración de Bacula en CentOS 7

13
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 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

description

Configuración de Bacula en CentOS 7

Transcript of Instalación y Configuración de Bacula en CentOS 7

Page 1: 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

Page 2: Instalación y Configuración de Bacula en CentOS 7

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

Page 3: Instalación y Configuración de Bacula en CentOS 7

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

Page 4: Instalación y Configuración de Bacula en CentOS 7

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

Page 5: Instalación y Configuración de Bacula en CentOS 7

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

Page 6: Instalación y Configuración de Bacula en CentOS 7

}

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

Page 7: Instalación y Configuración de Bacula en CentOS 7

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

Page 8: Instalación y Configuración de Bacula en CentOS 7

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.

Page 9: Instalación y Configuración de Bacula en CentOS 7

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.

Page 10: Instalación y Configuración de Bacula en CentOS 7

$ 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.

Page 11: Instalación y Configuración de Bacula en CentOS 7

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 ..

Page 12: Instalación y Configuración de Bacula en CentOS 7

#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 »

Page 13: Instalación y Configuración de Bacula en CentOS 7

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 ›