Difference between revisions of "HowTo/InstallBacula"
(2 intermediate revisions by the same user not shown) | |||
Line 33: | 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 | ||
− | <pre> | + | </pre> |
=== Storage Daemon === | === Storage Daemon === | ||
Line 54: | Line 54: | ||
... | ... | ||
Storage { # definition of myself | Storage { # definition of myself | ||
− | Name = sd- | + | Name = sd-<hostname> |
... | ... | ||
} | } | ||
Line 100: | Line 100: | ||
</pre> | </pre> | ||
− | HowTo | + | == 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 118: | Line 120: | ||
} | } | ||
... | ... | ||
+ | </pre> | ||
+ | |||
2/ Rajouter le job: | 2/ Rajouter le job: | ||
+ | <pre> | ||
... | ... | ||
Job { | Job { | ||
Line 126: | 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 | + | <pre> |
− | Et ajouter le user bacula-tun avec la clé publique du | + | 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 < | + | 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 146: | Line 160: | ||
PORT=$2 | PORT=$2 | ||
− | STORAGE_HOST= | + | 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 | ||
− | |||
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 | + | 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 182: | 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 196: | Line 225: | ||
Password = "<director password>" | Password = "<director password>" | ||
} | } | ||
− | CLI | + | </pre> |
+ | |||
+ | === CLI === | ||
+ | |||
+ | 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
Contents
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