Outils pour utilisateurs

Outils du site


serveur_bacula2

Bacula et dépendances

backports

On va installer la version 5 qui est sur le “backports”.

mail

# aptitude install exim4

mysql

# aptitude install mysql-server

director

# aptitude -t lenny-backports install bacula-director-mysql

console

# aptitude -t lenny-backports bacula-console

sd et fd

# aptitude -t lenny-backports install bacula-fd bacula-sd-mysql

Bacula

ipv4

Si on “blacklist ipv6” , alors “bacula” doit être forcé afin de ne fonctionner qu'en ipv4… sinon, les communications echouent silencieusement (les jobs ne se terminent jamais).

Exemple de conf, pour “bacula-dir.conf” :

# TJ ---------
#DirAddress = 127.0.0.1
#DIRport = 9101                # where we listen for UA connections
DirAddresses = { ipv4 = { addr = 0.0.0.0; } }

Adapter pour chaque daemon.

compiler bacula-sd

Dans la version 5.0.2 de bacula-sd, il y a un bug genant: il ne peut pas executer plusieurs “job” sur un “device”… grrrr

Donc, on doit “installer” la version 5.0.3 … et voila comment j'ai fait.

Sur Debian Lenny/Squeeze 64 bit:

Télécharger les sources “bacula-5.0.3.tar.gz” par là: http://www.bacula.org/en/?page=downloads

Déposer l'archive dans /usr/local/src

$ cd /usr/local/src
...
$ tar xvzf bacula-5.0.3.tar.gz
$ cd bacula-5.0.3

Pré-requis qui m'ont été nécessaire:

# aptitude install gcc make g++ 
# aptitude -t testing install libsqlite3-dev

On va compiler en “static” avec “sqlite”: mais on ne s'interesse vraiment qu'a bacula-sd , et pas aux autres…

$ ./configure --with-sqlite3 --enable-build-dird=no --enable-static --disable-libtool CFLAGS="-O2" CXXFLAGS="-O2"
$ make

Mais on n'installe pas!!!

Ce qui nous interesse est simplement là: /usr/local/src/bacula-5.0.3/src/stored/bacula-sd

$ su
# /etc/init.d/bacula-sd stop
# mv /usr/sbin/bacula-sd /usr/sbin/DPKG-bacula-sd
# ln -s /usr/local/src/bacula-5.0.3/src/stored/bacula-sd /usr/sbin/.
# /etc/init.d/bacula-sd start

Et voila. Le risque, c'est qu'au prochain upgrade, on est besoin de recréer le lien symbolique, a moins que le bug soit corrigé!

Oups

Pour “Ubuntu 6.06.2 LTS”, j'ai ça:

...
Compiling bscan.c
make[1]: *** No rule to make target `../cats/libbacsql.a', needed by `bscan'.  Stop.
make[1]: Leaving directory `/home/thierry/tmp/bacula-5.0.3/src/stored'
...

Que faire ?

Je renonce a “sqlite” et remplace par “mysql”, avec en passant:

# aptitude install libmysqlclient15-dev

Note: “bacula-sd” n'a pas besoin de base de données… donc, je m'en fous.

Webacula

installation

apache

# aptitude install apache2 libapache2-mod-php5 php5-mysql
# aptitude install php5-gd
:!: ne pas oublier “php5-mysql” !
# a2enmod rewrite
# /etc/init.d/apache2 restart

download

$ cd /usr/local/src
$ wget .... webacula-5.0.2.tar.gz
$ tar xvzf ....

etc…

Zend Framework

$ wget .... ZendFramework-1.10.8-minimal.tar.gz

Dans /etc/php5/apache2/php.ini , ajouter au parametre include_path :

; TJ
; ------------------
include_path = "/usr/local/src/ZendFramework/library"
; ------------------

Ou bien:

# cd /var/www/webacula/library
# ln -s /usr/local/src/ZendFramework/library/Zend .
# /etc/init.d/apache2 restart

webacula

FIXME : copier dans /var/www/webacula

bconsole

# adduser www-data bacula

Test:

# su -l www-data -s /bin/sh -c "/usr/bin/bconsole -n -c /etc/bacula/bconsole.conf"

www

Dans /etc/apache2/sites-available, creer le fichier 200-webacula contenant:

Alias "/webacula"  "/var/www/webacula/html"
<Directory "/var/www/webacula/html">
 RewriteEngine on
      Options FollowSymLinks
      AllowOverride All
      Order deny,allow
      Allow from 127.0.0.1
      # your network
      Allow from 192.168.1.0/255.255.255.0

      AuthType Basic
      AuthName "Webacula"
      #AuthUserFile       /etc/apache2/conf.d/webacula.users
      AuthUserFile       /var/www/webacula/passwd/.webacula.users   # a creer!
      Require valid-user
</Directory>

Activer:

# a2ensite 200-webacula

Modifier /etc/php5/apache2/php.ini pour avoir:

max_execution_time = 600
memory_limit = 256M
# apache2ctl graceful

FIXME: modifier conf de bacula-dir.conf ???

Dans /var/www/webacula/html/.htaccess , faire en sorte d'avoir (?) :

SetEnv APPLICATION_ENV production

Dans le fichier /var/www/webacula/application/config.ini modifier pour avoir:

...
db.config.username = webacula
db.config.password = <MOT_DE_PASSE>
...
bacula.sudo = ""
bacula.bconsole = "/usr/bin/bconsole"
...

MySQL

Dans ../install , modifier avec le fichier webacula_mysql_create_database.sh avec les parametres de son choix. Par exemple:

...
db_user="webacula"
db_password="<MOT_DE_PASSE>"
...

Et puis:

# ./webacula_mysql_create_database.sh -u root -p
Enter password:
Creation of webacula database succeeded.

Et aussi:

# ./webacula_mysql_make_tables.sh -u root -p
Enter password:
Creation of webacula MySQL tables succeeded.

Completer afin que ce compte puisse aussi modifier le “catalog” bacula ( FIXME: lire ne suffit pas ? ) :

mysql> GRANT ALL ON bacula.* TO webacula@localhost;
Query OK, 0 rows affected (0.00 sec)

www passwd

Creer le fichier de mots de passe:

# mkdir passwd
# cd passwd
# htpasswd -c .webacula.users Webacula

Fournir le mot de passe pour le compte Webacula

(Ne pas utiliser “-c”, pour creer d'autres comptes!)

FIXME : d'aprés la doc, y a des CRON a installer

En marche

C'est mieux que rien.

DataBase

MySQL

Lien: http://wiki.bacula.org/doku.php?id=faq#restore_takes_a_long_time_to_retrieve_sql_results_from_mysql_catalog

C'est extremement lent. Il faut peut envisager autre chose que MySQL !?

tmpfs

:!: En fait, le changement est *insignifiant* avec MySQL ! Donc, ne pas faire ça pour ça !

Lien: http://www.system-linux.eu/index.php?post/2009/09/10/cr%C3%A9er-un-tmpfs%2C-un-repertoire-dans-votre-ram

J'ai mounter un fichier “tmp” pour “mysql” comme ça:

# mkdir /mnt/mysql-tmp
# chmod 0777 /mnt/mysql-tmp

Dans fstab:

tmpfs   /mnt/mysql-tmp  tmpfs   defaults,size=512M      0       0

Et puis:

# mount -a

my.cnf

Tweaks des options de MySQL ? dans my.cnf ?

$ dpkg -S my-huge.cnf 

Ce que j'ai fait:

...
tmpdir          = /mnt/mysql-tmp        # <--- seulement si on utilise "tmpfs"
...
skip-locking
key_buffer = 384M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8
...
[isamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
...

Index

Lien: http://www.bacula.org/5.0.x-manuals/en/main/main/Catalog_Maintenance.html#SECTION004592000000000000000

Ce qui a fonctionné pour moi:

$ mysql -u root -p
mysql> use bacula;

Examinons avec:

mysql> show index from File;

Mais j'y comprend que dalle en fait, et donc je fais :

mysql> CREATE INDEX file_jobid_idx on File (JobId);
mysql> CREATE INDEX file_jpf_idx on File (JobId, FilenameId, PathId);

Les perfs sont booooooostés. Je peus enfin restaurer des fichiers d'une grosse base.

Shrink

Lien: http://www.mail-archive.com/bacula-users@lists.sourceforge.net/msg11973.html

Il faut que j'essaye…

# /etc/bacula/scripts/make_catalog_backup --user=<USER> --password=<MOT_DE_PASSE>

DROP de la database

# mysql --user=<USER> --password=<MOT_DE_PASSE> < bacula.sql

Compression

Lien: http://edin.no-ip.com/content/bacula-backup-with-gzip-compress-on

 Software Compression:   53.9 %

TLS

easy-rsa

package

On va recupere “easy-rsa” dans le package “openvpn”.

On est dans le cas où l'on n'installera pas le package “openvpn”, on veut juste “easy-rsa” :

$ dpkg --print-architecture
amd64

Je suis dans un DomU 64bit, donc, on recupère le package “openvpn” qui va bien.

$ cd ~/tmp
$ mkdir openvpn
$ cd openvpn
$ wget http://ftp.fr.debian.org/debian/pool/main/o/openvpn/openvpn_2.1~rc11-1_amd64.deb
$ dpkg -x openvpn_2.1~rc11-1_amd64.deb ./

install

“easy-rsa” est dans usr/share/doc/openvpn/examples/easy-rsa/2.0/ . Donc:

$ su
# mkdir /etc/bacula/easy-rsa
# cp -Rp usr/share/doc/openvpn/examples/easy-rsa/2.0/. /etc/bacula/easy-rsa
# cd /etc/bacula/easy-rsa/
# chown -R root: *

vars

Modifier “vars” car par defaut il contient:

# cat vars | grep -v "^#" | grep -v "^$"
export EASY_RSA="`pwd`"
export OPENSSL="openssl"
export PKCS11TOOL="pkcs11-tool"
export GREP="grep"
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
export KEY_DIR="$EASY_RSA/keys"
echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR
export PKCS11_MODULE_PATH="dummy"
export PKCS11_PIN="dummy"
export KEY_SIZE=1024
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"

Il me semble judicieux d'adapter au moins:

KEY_COUNTRY
KEY_PROVINCE
KEY_CITY
KEY_ORG
KEY_EMAIL

… et peut etre:

KEY_SIZE
CA_EXPIRE
KEY_EXPIRE

LA PREMIERE FOIS SEULEMENT

clean-all

Faire:

# . ./vars
# ./clean-all
# ./build-ca

car :

  1. le repertoire “./keys” va etre totalement effacé ! et c'est la que seront les futures codes!!!
  2. le “ca” va être créé

Un répertoire “./keys” est maintenant peuplé…

Important:

 Common Name : Bacula CA

Generate Diffie Hellman parameters

# ./build-dh

server

Aussi la premiere fois, il faut dire qui est le maitre des clés (en quelques sortes):

./build-key-server bacula-server
Common Name : my-bacula-server.fqdn

En “CN”, le nom fqdn. svp.

droits

Faire en sorte que “bacula” est accès aux fichiers dans “keys” (pas forcément a tous).

Donc:

# cd /etc/bacula
# chown -R :bacula easy-rsa
# cd easy-rsa
# chmod g+rxs keys

Afin d'autoriser “bacula” a lire dans le repertoire “keys” et a creer ulterieurement les fichiers avec le groupe “bacula” qui va bien.

clients

# . ./vars
# ./build-key tj-debcave

Et CN = tj-debcave

On se demerde pour envoyer les fichiers suivant:

.../keys/ca.crt
.../keys/tj-debcave.crt
.../keys/tj-debcave.key

… a la machine “tj-debcave”.

revoke

# . ./vars
# ./revoke-full tj-debcave
... <snip> ...
error 23 at 0 depth lookup:certificate revoked

La dernière ligne indique simplement que le certificat génère bien une erreur, maintenant qu'il est “revoké”.

Mais en pratique, avec Bacula, ca ne fonctionne pas.

C'est avec “openvpn” que ca fonctionne en combinaison avec : “crl-verify …”

Lien: http://openvpn.net/index.php/open-source/documentation/howto.html#revoke

bacula-console

serveur

Sur le serveur, dans bacula-dir.conf :

... <snip> ...
Director {                            # define myself
  ... <snip> ...
  # -- TLS --
  TLS Enable = yes
  TLS Require = no 
  TLS CA Certificate File = /etc/bacula/easy-rsa/keys/ca.crt
  TLS Certificate = /etc/bacula/easy-rsa/keys/bacula.crt
  TLS Key = /etc/bacula/easy-rsa/keys/bacula.key
  # ------------
}
... <snip> ...

:!: “TLS Require = no” afin de toléré l'absence de chiffrement… notamment a cause de “webacula”

un client

Dans bconsole.conf :

... <snip> ...
Director {
  ... <snip> ...
  address = bacula.fqdn
  ... <snip> ...
  # ----------
  TLS Enable = yes
  TLS Require = yes
  TLS CA Certificate File = /etc/bacula/keys/ca.crt
  TLS Certificate = /etc/bacula/keys/tj-debcave.crt
  TLS Key = /etc/bacula/keys/tj-debcave.key
  # ----------
}
... <snip> ...

:!: dans “address”, mettre l'adresse FQDN et non pas l'IP !!!

… sinon ca marche po

et faire gaffe aux droits d'accès aux fichiers.

serveur_bacula2.txt · Dernière modification : 2011/01/26 16:05 de thierry