Difference between revisions of "HowTo/InstallBacula"

From LunaSys
Jump to navigation Jump to search
(Created page with "Bacula Principes Bacula est composé de différents modules, dont les 3 principaux suivants : - Director: coordonne les storage et les clients, maintient les meta-data, exé...")
 
Line 1: Line 1:
Bacula
+
=== Principes ===
 
 
Principes
 
  
 
Bacula est composé de différents modules, dont les 3 principaux suivants :
 
Bacula est composé de différents modules, dont les 3 principaux suivants :
Line 9: Line 7:
 
Installation
 
Installation
  
Director Daemon
+
=== Director Daemon ===
  
 +
<pre>
 
yum install -y mlocate vim wget mysql-server bacula-director-mysql
 
yum install -y mlocate vim wget mysql-server bacula-director-mysql
 
/etc/init.d/mysqld restart
 
/etc/init.d/mysqld restart
Line 24: Line 23:
 
iptables -I INPUT 4 -m tcp -p tcp -m state --state NEW --dport 80 -j ACCEPT
 
iptables -I INPUT 4 -m tcp -p tcp -m state --state NEW --dport 80 -j ACCEPT
 
service iptables save
 
service iptables save
 +
</pre>
  
 +
<pre>
 
mkdir /var/www/html/bacula-web
 
mkdir /var/www/html/bacula-web
 
cd /var/www/html/bacula-web
 
cd /var/www/html/bacula-web
Line 32: Line 33:
 
chcon -R system_u:object_r:httpd_sys_content_t:s0 .
 
chcon -R system_u:object_r:httpd_sys_content_t:s0 .
 
Voir les infos du director ici
 
Voir les infos du director ici
Storage Daemon
+
<pre>
 +
 
 +
=== Storage Daemon ===
  
 +
<pre>
 
yum install -y bacula-storage-mysql bacula-client
 
yum install -y bacula-storage-mysql bacula-client
 
chkconfig bacula-sd on
 
chkconfig bacula-sd on
Line 43: Line 47:
 
iptables -I INPUT 4 -m tcp -p tcp -m state --state NEW --dport 9103 -j ACCEPT
 
iptables -I INPUT 4 -m tcp -p tcp -m state --state NEW --dport 9103 -j ACCEPT
 
service iptables save
 
service iptables save
 +
</pre>
 +
 
Il faut changer les passwords dans /etc/bacula/bacula-sd.conf, et modifier la ressource "Device" afin de donner le chemin de stockage des volumes
 
Il faut changer les passwords dans /etc/bacula/bacula-sd.conf, et modifier la ressource "Device" afin de donner le chemin de stockage des volumes
 +
 +
<pre>
 
...
 
...
 
Storage {                            # definition of myself
 
Storage {                            # definition of myself
Line 66: Line 74:
 
}
 
}
 
...
 
...
Client (File Daemon)
+
</pre>
  
 +
=== Client (File Daemon) ===
 +
 +
<pre>
 
yum install -y bacula-client
 
yum install -y bacula-client
 
chkconfig bacula-fd on
 
chkconfig bacula-fd on
Line 76: Line 87:
 
iptables -I INPUT 4 -m tcp -p tcp -m state --state NEW --dport 9103 -j ACCEPT
 
iptables -I INPUT 4 -m tcp -p tcp -m state --state NEW --dport 9103 -j ACCEPT
 
service iptables save
 
service iptables save
 +
</pre>
 +
 
La configuration par défaut est OK, il faut seulement changer les passwords dans /etc/bacula/bacula-fd.conf
 
La configuration par défaut est OK, il faut seulement changer les passwords dans /etc/bacula/bacula-fd.conf
 +
<pre>
 
...
 
...
 
Director {
 
Director {
Line 84: Line 98:
 
}
 
}
 
...
 
...
 +
</pre>
 +
 
HowTo?
 
HowTo?
  

Revision as of 11:42, 15 April 2012

Principes

Bacula est composé de différents modules, dont les 3 principaux suivants : - Director: coordonne les storage et les clients, maintient les meta-data, exécute les jobs, reçoit les connections de la console. - Storage: stock les data sous forme de pools et volumes. - Client (ou File Daemon): installé sur les serveurs a sauvegarder, reçoit les ordres du director et se connecte au storage pour y stocker ses data. Installation

Director Daemon

yum install -y mlocate vim wget mysql-server bacula-director-mysql
/etc/init.d/mysqld restart
/usr/libexec/bacula/create_bacula_database
/usr/libexec/bacula/make_bacula_tables
chkconfig bacula-dir on
chkconfig mysql-server on
/etc/init.d/bacula-dir restart
/etc/init.d/mysqld restart
yum install -y php php-gd php-gettext php-mysql httpd
/etc/init.d/httpd restart
chkconfig httpd on
iptables -I INPUT 4 -m tcp -p tcp -m state --state NEW --dport 80 -j ACCEPT
service iptables save
mkdir /var/www/html/bacula-web
cd /var/www/html/bacula-web
wget http://bacula-web.dflc.ch/tl_files/downloads/bacula-web.5.2.2.tar.gz
tar xzvf bacula-web.5.2.2.tar.gz
chown apache:apache -R .
chcon -R system_u:object_r:httpd_sys_content_t:s0 .
Voir les infos du director ici
<pre>

=== Storage Daemon ===

<pre>
yum install -y bacula-storage-mysql bacula-client
chkconfig bacula-sd on
chkconfig bacula-fd on
/etc/init.d/bacula-fd restart
/etc/init.d/bacula-sd restart
iptables -I INPUT 4 -m tcp -p tcp -m state --state NEW --dport 9101 -j ACCEPT
iptables -I INPUT 4 -m tcp -p tcp -m state --state NEW --dport 9102 -j ACCEPT
iptables -I INPUT 4 -m tcp -p tcp -m state --state NEW --dport 9103 -j ACCEPT
service iptables save

Il faut changer les passwords dans /etc/bacula/bacula-sd.conf, et modifier la ressource "Device" afin de donner le chemin de stockage des volumes

...
Storage {                             # definition of myself
  Name = sd-kaminari-1
  ...
}
...
Director {
  Name = bacula-dir
  Password = "<password>"
}
...
Device {
  Name = FileStorage
  Media Type = File
  Archive Device = /storage
  LabelMedia = Yes;
  Random Access = Yes;
  AutomaticMount = Yes;
  RemovableMedia = no;
  AlwaysOpen = no;
}
...

Client (File Daemon)

yum install -y bacula-client
chkconfig bacula-fd on
/etc/init.d/bacula-fd restart
# The following 4 rules are required only for local hosts
iptables -I INPUT 4 -m tcp -p tcp -m state --state NEW --dport 9101 -j ACCEPT
iptables -I INPUT 4 -m tcp -p tcp -m state --state NEW --dport 9102 -j ACCEPT
iptables -I INPUT 4 -m tcp -p tcp -m state --state NEW --dport 9103 -j ACCEPT
service iptables save

La configuration par défaut est OK, il faut seulement changer les passwords dans /etc/bacula/bacula-fd.conf

...
Director {
  Name = bacula-mon
  Password = "<password>"
  Monitor = yes
}
...

HowTo?

Ajouter un host et client

Sur le directeur, éditer /etc/bacula/bacula-dir.conf 1/ Rajouter le client: ... Client {

 Name = <client name>
 Address = <client address>
 FDPort = 9102
 Catalog = MyCatalog
 Password = "<filedaemon password>"
 File Retention = 30 days
 Job Retention = 6 months
 AutoPrune = yes

} ... 2/ Rajouter le job: ... Job {

 Name = "<job name>"
 JobDefs = "<job template>"
 Client = <client name>

} ... Pour un file daemon remote

Sur le file daemon, rajouter une entrée dns locale pour lui faire croire que le storage est en localhost (en fait un tunnel) vim /etc/hosts 127.0.0.1 kaminari-2.gre.winsoft.fr Et ajouter le user bacula-tun avec la clé publique du kaminari-1 adduser bacula-tun su bacula-tun cd mkdir .ssh cat <kaminari-1 pubkey> > .ssh/authorized_keys chmod og-wrx -R .ssh restorecon -R .ssh Afin de créer le tunnel avant l'exécution d'un job, le script suivant sera exécuté par Bacula sur le director. vim /usr/local/sbin/bacula-tunnel.sh

  1. !/bin/bash

HOST=$1 PORT=$2

STORAGE_HOST=kaminari-2.gre.winsoft.fr

ssh -f -L $PORT:localhost:9102 -R 9101:localhost:9101 -R 9103:$STORAGE_HOST:9103 bacula-tun@$HOST 'sleep 60' >/dev/null 2>/dev/null Ne pas oublier de le rendre executable: chmod u+x /usr/local/sbin/bacula-tunnel.sh Dans /etc/bacula/bacula-dir.conf, on rajoutera la directive Run Before Job comme suivant (le host zim03 et le port 9110 sont bien sur a modifier): ... Job {

 Name = "zim03"
 ...
 Run Before Job = "/usr/local/sbin/bacula-tunnel.sh zim03.zap-meeting.com 9110"
 ...

} ... Backup de bases MySQL?

Sur le file daemon: vim /root/.my.cnf [client] user=root password=xxxxx protocol=tcp vim /usr/local/sbin/backupdbs.sh

  1. !/bin/bash

BACKUPLOCATION=/mnt/backup

mkdir -p $BACKUPLOCATION

  1. back up all the mysql databases, into individual files so we can later restore
  2. them separately if needed.

mysql --defaults-extra-file=/root/.my.cnf -B -N -e "show databases" | while read db do

  BACKUPFILE=$BACKUPLOCATION/$db.mysql
  echo "Backing up $db into $BACKUPFILE"
  /usr/bin/mysqldump --defaults-extra-file=/root/.my.cnf $db > $BACKUPFILE

done Puis: chmod 400 /root/.my.cnf mkdir /mnt/backup Finalement, dans le job (sur le director), rajouter /mnt/backup au File Set Connexion avec la console

Fichier de configuration: vim bacula-console.conf Director {

  Name = bacula-dir
  DIRport = 9101
  Address = <director address>
  Password = "<director password>"

} CLI

bconsole -c bacula-console.conf Quelques commandes utiles: messages récupère les derniers messages non lus status affiche le statut du director, des storage ou des clients run permet de démarrer un job help GUI

bat -c bacula-console.conf