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é...")
 
 
(3 intermediate revisions by the same user not shown)
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
   Name = sd-kaminari-1
+
   Name = sd-<hostname>
 
   ...
 
   ...
 
}
 
}
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:
 
}
 
}
 
...
 
...
HowTo?
+
</pre>
 +
 
 +
== HowTo ==
  
Ajouter un host et client
+
=== Ajouter un host et client ===
  
 
Sur le directeur, éditer /etc/bacula/bacula-dir.conf
 
Sur le directeur, éditer /etc/bacula/bacula-dir.conf
 +
 
1/ Rajouter le client:
 
1/ Rajouter le client:
 +
<pre>
 
...
 
...
 
Client {
 
Client {
Line 102: Line 120:
 
}
 
}
 
...
 
...
 +
</pre>
 +
 
2/ Rajouter le job:
 
2/ Rajouter le job:
 +
<pre>
 
...
 
...
 
Job {
 
Job {
Line 110: Line 131:
 
}
 
}
 
...
 
...
 +
</pre>
 +
 
Pour un file daemon remote
 
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)
 
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
 
vim /etc/hosts
127.0.0.1  kaminari-2.gre.winsoft.fr
+
<pre>
Et ajouter le user bacula-tun avec la clé publique du kaminari-1
+
127.0.0.1  <storage hostname>
 +
</pre>
 +
 
 +
Et ajouter le user bacula-tun avec la clé publique du <hostname>
 +
<pre>
 
adduser bacula-tun
 
adduser bacula-tun
 
su bacula-tun
 
su bacula-tun
 
cd
 
cd
 
mkdir .ssh
 
mkdir .ssh
cat <kaminari-1 pubkey> > .ssh/authorized_keys
+
cat <director pubkey> > .ssh/authorized_keys
 
chmod og-wrx -R .ssh
 
chmod og-wrx -R .ssh
 
restorecon -R .ssh
 
restorecon -R .ssh
 +
</pre>
 +
 
Afin de créer le tunnel avant l'exécution d'un job, le script suivant sera exécuté par Bacula sur le director.
 
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
 
vim /usr/local/sbin/bacula-tunnel.sh
 +
<pre>
 
#!/bin/bash
 
#!/bin/bash
  
Line 130: Line 160:
 
PORT=$2
 
PORT=$2
  
STORAGE_HOST=kaminari-2.gre.winsoft.fr
+
STORAGE_HOST=<storage hostname>
 +
</pre>
 +
 
 +
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
  
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:
 
Ne pas oublier de le rendre executable:
chmod u+x /usr/local/sbin/bacula-tunnel.sh
+
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):
 
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):
 +
<pre>
 
...
 
...
 
Job {
 
Job {
 
   Name = "zim03"
 
   Name = "zim03"
 
   ...
 
   ...
   Run Before Job = "/usr/local/sbin/bacula-tunnel.sh zim03.zap-meeting.com 9110"
+
   Run Before Job = "/usr/local/sbin/bacula-tunnel.sh <to backup hostname> 9110"
 
   ...
 
   ...
 
}
 
}
 
...
 
...
Backup de bases MySQL?
+
<pre>
 +
 
 +
Backup de bases MySQL
  
 
Sur le file daemon: vim /root/.my.cnf
 
Sur le file daemon: vim /root/.my.cnf
 +
<pre>
 
[client]
 
[client]
 
user=root
 
user=root
 
password=xxxxx
 
password=xxxxx
 
protocol=tcp
 
protocol=tcp
 +
</pre>
 +
 
vim /usr/local/sbin/backupdbs.sh
 
vim /usr/local/sbin/backupdbs.sh
 +
<pre>
 
#!/bin/bash
 
#!/bin/bash
  
Line 166: Line 206:
 
   /usr/bin/mysqldump --defaults-extra-file=/root/.my.cnf $db > $BACKUPFILE
 
   /usr/bin/mysqldump --defaults-extra-file=/root/.my.cnf $db > $BACKUPFILE
 
done
 
done
 +
</pre>
 +
 
Puis:
 
Puis:
chmod 400 /root/.my.cnf
+
chmod 400 /root/.my.cnf
mkdir /mnt/backup
+
mkdir /mnt/backup
 +
 
 
Finalement, dans le job (sur le director), rajouter /mnt/backup au File Set
 
Finalement, dans le job (sur le director), rajouter /mnt/backup au File Set
 +
 
Connexion avec la console
 
Connexion avec la console
  
 
Fichier de configuration:
 
Fichier de configuration:
 
vim bacula-console.conf
 
vim bacula-console.conf
 +
<pre>
 
Director {
 
Director {
 
   Name = bacula-dir
 
   Name = bacula-dir
Line 180: Line 225:
 
   Password = "<director password>"
 
   Password = "<director password>"
 
}
 
}
CLI
+
</pre>
 +
 
 +
=== CLI ===
 +
 
 +
bconsole -c bacula-console.conf
  
bconsole -c bacula-console.conf
 
 
Quelques commandes utiles:
 
Quelques commandes utiles:
messages récupère les derniers messages non lus
+
 
status affiche le statut du director, des storage ou des clients
+
* messages récupère les derniers messages non lus
run permet de démarrer un job
+
* status affiche le statut du director, des storage ou des clients
help
+
* run permet de démarrer un job
 +
* help
 +
 
 
GUI
 
GUI
  
bat -c bacula-console.conf
+
bat -c bacula-console.conf

Latest revision as of 11:54, 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

Storage Daemon

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-<hostname>
  ...
}
...
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   <storage hostname>

Et ajouter le user bacula-tun avec la clé publique du <hostname>

adduser bacula-tun
su bacula-tun
cd
mkdir .ssh
cat <director 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

#!/bin/bash

HOST=$1
PORT=$2

STORAGE_HOST=<storage hostname>
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 <to backup hostname> 9110"
  ...
}
...
<pre>

Backup de bases MySQL

Sur le file daemon: vim /root/.my.cnf
<pre>
[client]
user=root
password=xxxxx
protocol=tcp

vim /usr/local/sbin/backupdbs.sh

#!/bin/bash

BACKUPLOCATION=/mnt/backup

mkdir -p $BACKUPLOCATION

# back up all the mysql databases, into individual files so we can later restore
# 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