Postulat de départ
Ubuntu server 10-04
*
Les deux serveurs :
o
ub-csr1 avec adresse IP 10.101.11.9 : serveur primaire
o
ub-csr2 avec adresse IP 10.101.11.2 : serveur secondaire
*
sur chacun des deux serveurs, la partition /dev/sda3 est celle que drbd duplique. Il s’agit d’une partition non-formatée). Toutes les données de cette partition seront perdues.
*
l’adresse mail de l’administrateur à contacter est tec@domaine.tld
Pour que la reprise de service soit transparente pour les clients, nous utiliserons une fonctionnalité de heartbeat, celle de la gestion d’une adresse flottante. Cette adresse est définie à 10.101.11.8.
De plus samba sera configuré pour passer par cette adresse flottante et pour donner un nom NetBios indépendant du nom du serveur sur lequel il est exécuté. Ce nom est « ub-csr1 ».
Installation
L’ordre d’installation à respecter concerne surtout DrBD qui doit être installé après Heartbeat.
Samba
Installez le paquet samba.
Dans l’optique d’une gestion de Samba avec Heartbeat, il faut laisser le soin à ce dernier de démarrer Samba, il faut donc faire en sorte que Samba ne soit pas lancé au démarrage :
update-rc.d -f samba remove
Il faut ensuite arrêter le service samba :
/etc/init.d/samba stop
Heartbeat
Installez le paquet heartbeat.
DRBD
Installez le paquet drbd8-utils.
Vérification de la présence du module drbd :
cat /proc/drbd
cat: /proc/drbd: Aucun fichier ou répertoire de ce type
modprobe drbd
cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by phil@fat-tyre, 2008-05-30 12:59:17
Il faut que le service drbd démarre, sinon le script de démarrage de drbd lancé par heartbeat ne fonctionne pas. Il faut donc lancer la commande :
update-rc.d drbd defaults 70
Finalisation pour faire en sorte que les outils heartbeat fonctionnent :
chgrp haclient /sbin/drbdsetup
chmod o-x /sbin/drbdsetup
chmod u+s /sbin/drbdsetup
chgrp haclient /sbin/drbdmeta
chmod o-x /sbin/drbdmeta
chmod u+s /sbin/drbdmeta
Configuration et mise en place de drbd
Éditer le fichier /etc/drbd.conf :
global {
usage-count no;
}
common {
protocol C;
syncer {
rate 3M;
verify-alg sha1;
}
handlers {
pri-lost-after-sb "reboot -f";
pri-lost "echo Déconnexion des serveurs, vérifier les logs | mail -s 'SERVEUR: Alerte DRBD' tech@domaine.com ";
out-of-sync "echo Désynchronisation des serveurs, vérifier les logs | mail -s 'SERVEUR: Alerte DRBD' tec@domaine.com ";
pri-on-incon-degr "reboot -f";
outdate-peer "/usr/lib/heartbeat/drbd-peer-outdater -t 5";
local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
}
}
resource r0 {
device /dev/drbd0;
disk /dev/sda3;
meta-disk internal;
disk {
on-io-error detach;
}
startup {
wfc-timeout 60;
degr-wfc-timeout 30;
become-primary-on ub-csr1;
}
net {
after-sb-0pri discard-older-primary;
after-sb-1pri call-pri-lost-after-sb;
after-sb-2pri call-pri-lost-after-sb;
}
on ub-csr1 {
address 10.101.9:7788;
}
on ub-csr2 {
address 10.101.2:7788;
}
}
Ce fichier de configuration doit être scrupuleusement identique sur les deux serveurs.
Lire le chapitre Au sujet de la gestion de la bande passante.
À faire sur chaque serveur en même temps
Si vous vous êtes dit que vous alliez tout installer sur un serveur puis cloner le premier serveur pour en obtenir un second identique (ce qui peut engendrer d’autres problèmes), c’est là qu’il faut que vous sachiez que les instructions qui suivent doivent être lancées sur chacun des 2 serveurs, à moins de n’utiliser dd pour l’ensemble du/des disque(s) dur(s). Ce qui peut prendre pas mal de temps…
Sinon, il faut répéter tout ce qui vient d’être fait sur le second serveur avant d’aller plus loin.
En même temps signifie simplement que la commande doit être lancée sur les 2 serveurs et que la suivante ne peut être lancée sur quelque serveur que ce soit que si la précédente a terminé sans erreur sur les 2 serveurs.
Lancer :
drbdadm create-md r0
v08 Magic number not found
md_offset 1093922816
al_offset 1093890048
bm_offset 1093853184
Found some data
==> This might destroy existing data! < == Do you want to proceed?
[need to type 'yes' to confirm]
Taper yes. Il est possible qu'une autre question demandant confirmation de destruction des données de la partition soit posée, répondez yes si vous êtes sûr de ce que vous faites.
v07 Magic number not found
v07 Magic number not found
v08 Magic number not found
Writing meta data...
initialising activity log
NOT initialized bitmap
New drbd meta data block sucessfully created.
success
Si le module drbd n’est pas chargé :
modprobe drbd
Puis :
drbdadm up r0
La commande suivante doit donner quelque chose du genre :
# cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by phil@fat-tyre, 2008-05-30 12:59:17
0: cs:Connected st:Secondary/Secondary ds:Inconsistent/Inconsistent C r---
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:149134808
Puisque drbd est lancé mais aucun serveur primaire n’est déclaré. On le voit car après st:, il est indiqué Secondary/Secondary ce qui signifie que le nœud sur lequel la commande est exécuté est secondaire (le premier avant le /) et que l’autre l’est aussi (le second après le /).
Pour ne connaître que l’état de la grappe drbd, la commande suivante suffit :
drbdadm state r0
Secondary/Secondary
À ne faire que sur le serveur primaire
Il s’agit maintenant de déclarer un des 2 serveurs comme primaire : Le serveur secondaire se synchronisera automagiquement8).
Lancer la commande :
drbdadm -- --overwrite-data-of-peer primary r0
cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by phil@fat-tyre, 2008-05-30 12:59:17
0: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
ns:2240 nr:0 dw:0 dr:2240 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:149132568
[>....................] sync'ed: 0.1% (145637/145639)M
finish: 17:15:38 speed: 2,240 (2,240) K/sec
Une fois les serveurs synchronisés,
cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by phil@fat-tyre, 2008-05-30 12:59:17
0: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---
ns:2240 nr:0 dw:0 dr:2240 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:149132568
il est temps de formater la partition drbd uniquement sur le serveur primaire (vous avez, bien évidemment pensé à revenir à un débit de synchronisation normal.) :
mkfs.ext3 /dev/drbd0
et de monter votre partition pour vérifier que tout va bien. Le montage de la partition doit utiliser /dev/drbd0 et ne doit se faire que sur le serveur primaire.
mkdir /bureautique
mount /dev/drbd0 /bureautique
Dans le cas de l’utilisation de drbd avec heartbeat et samba, le montage du disque est géré par heartbeat.
Il ne faut pas ajouter de point de montage avec /dev/drbd0 dans le fichier /etc/fstab.
Éditez le fichier /etc/ha.d/haresources :
serv1 IPaddr::10.94.101.8 drbddisk::r0 Filesystem::/dev/drbd0::/bureautique::ext3 smbd MailTo::tech@domaine.com ::Changement_d_etat_serveur
Configuration Iptables
créer un script qui se lancera au démarrage des 2 serveurs
ex: iptablesperso.sh
#!/bin/sh
iptables -A INPUT -p udp -m udp --dport 694 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 161 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 162 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 7788 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 21617 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 617 -j ACCEPT
port 694: heartbeat
port 161/162: SMTP
port 7788: DRBD
port 21617: Arkeia 8.1
port 617: Arkeia 6.0