Highly available NFS DRBD Heartbeat
Construction d’un serveur Highly available NFS DRBD Heartbeat sur Centos 6
Pour ce travail utiliser une installation minimale de CentOS 6 / RHEL 6 sur deux serveurs. J’aime utiliser l’installation minimale parce que je pense que nous avons plus de contrôle sur ce qui est installé sur le système
J’aime utiliser l’installation minimale parce que je pense que nous avons plus de contrôle de ce qu’est installé sur le système et de cette façon nous gardons le système propre et aussi léger que possible. Redhat / CentOS 6 fournit par défaut NFSv4, Kernel 2.6.32 et le système de fichiers ext4, qui va stimuler les performances de votre serveur de fichiers.
Préparation des serveurs Highly available NFS
Après nous avons le système d’exploitation installé, nous allons désactiver SELinux, et iptables et obtenir CentOS / Redhat à jour. Nous pouvons activer iptables et selinux retourner mais pour l’instant nous désactivons pour rendre les choses plus faciles.
– Desactive selinux
# vi /etc/selinux/config
SELINUX=disabled
Eteignez iptable de votre systeme de demarage
# chkconfig iptables off
– Mise a jour systeme
# yum –y update
Maintenant, nous allons installer des paquets qui seront nécessaires pour l’installation et la configuration de DRBD.
# yum install wget ntp
Nous devons faire en sorte que ntpd fonctionne toujours de garder les deux serveurs de temps synchronisés.
# chkconfig ntpd on
J’ai également toujours comme à gcc et mettre à disposition au cas où nous devons compiler tout code qui n’est pas disponible dans les paquets rpm.
# yum install gcc make
Mon éditeur de texte préféré est VIM dans lequel j’utilise tout au long de ce tutoriel (vi), vous pouvez utiliser tout autre que vous aimez.
# yum install vim-enhanced
# echo "alias vi='vim'" >> ~/.bashrc
Je suppose ici que nous avons mis en place le réseau et le nom d’hôte lors de l’installation du système d’exploitation. Si vous n’avez pas encore fait, c’est probablement le un bon moment.
Voici les fichiers que vous aurez besoin de modifier:
– Hostname / Gateway
/etc/sysconfig/network
– eth0 interface
/etc/sysconfig/network-scripts/ifcfg-eth0
– DNS resolution Serveurs
/etc/resolv.conf
Bon maintenant nous allons redémarrer les serveurs. Cela n’est nécessaire car nous avons désactivé SELinux et mis à jour le noyau, tous les autres services auraient pu être renouvelées sans un redémarrage du serveur.
# reboot
DRDB 8.3 and RHEL / CentOS 6
Comme vous le savez probablement RHEL 6 / CentOS 6 n’a pas DRBD sur tout du dépôt yum. Vous avez besoin d’un contrat de support avec RHEL pour obtenir DRBD (ils en partenariat avec LINBIT après il a été décidé de ne pas soutenir DRBD dans EL6 parce DRBD ne pas entrer dans le noyau principal jusqu’à 2.6.33 et 2.6.32 a EL6. Cependant, vous pouvez alternativement installer de paquets source ou rpm ou utiliser le référentiel yum ELRepo (http://elrepo.org).
- Option 1 – RPM Packages
# wget http://dl.atrpms.net/el6-`arch`/atrpms/stable/drbd-kmdl-`uname -r`-8.3.8.1-30.el6.`arch`.rpm
# wget http://dl.atrpms.net/el6-x86_64/atrpms/stable/drbd-8.3.8.1-30.el6.`arch`.rpm
# rpm –ivh drbd-kmdl-`uname -r`-8.3.8.1-30.el6.`arch`.rpm drbd-8.3.8.1-30.el6.`arch`.rpm
- Option 2 – ELRepo
# rpm -Uvh http://elrepo.org/elrepo-release-6-4.el6.elrepo.noarch.rpm
# vi /etc/yum.repos.d/elrepo.repo
enabled=0
# yum --enablerepo=elrepo install drbd83-utils kmod-drbd83
Maintenant mettre en place notre dispositif de DRBD. Nous allons créer un LVM 40 Go pour être utilisé par DRBD.
Tout d’abord, vérifiez que sur les deux serveurs ntpd est en marche et que le temps est égal.
[root@serveur1~]# service ntpd status
ntpd (pid 1072) is running…
[root@serveur1~]# date
Mon Aug 15 10:48:14 PDT 2014
[root@serveur2 ~]# service ntpd status
ntpd (pid 1088) is running…
[root@seurver2 ~]# date
Mon Aug 15 10:48:14 PDT 2014
Créez le volume logique sur les deux serveurs:
[root@serveur1 ~]# lvcreate -L 40GB -n drbd-main serveur1
[root@serveur2 ~]# lvcreate -L 40GB -n drbd-main serveur2
~ Notez que chacun de mes serveurs ont différents groupes de volumes (de vg_c6server1 et vg_c6server2). Si vous copiez et passé que vous devrez vous assurer que vous ne les modifiez pas à ce que vous avez nommé.
!!!!! TRES IMPORTANT – NE PAS formater et monter le volume !!!!!
Enregistrez le fichier de configuration globale d’origine sur les deux serveurs :
mv /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.sample
et créer un nouveau fichier:
# vi /etc/drbd.d/global_common.conf
global { usage-count no; }
common {
syncer { rate 10M; }
}
Créer un nouveau fichier de ressources que j’ai appelé «principal», sur les deux serveurs, ils doivent être égaux:
# vi /etc/drbd.d/main.res
Maintenant, nous devons créer les métadonnées sur les deux serveurs:
[root@serveur1]# drbdadm create-md main
[root@serveur2]# drbdadm create-md main
Et nous pouvons maintenant commencer DRBD sur les deux serveurs en même temps:
[root@serveur1 drbd.d]# service drbd start
À partir des ressources DRBD: [ d(main) s(main) n(main) ].
[root@serveur2 drbd.d]# service drbd start
Vous avez deux façons que je connais pour vérifier que DRBD fonctionne correctement:
# service drbd status
# cat /proc/drbd
version: 8.3.11 (api:88/proto:86-96)
GIT-hash: 0de839cee13a4160eed6037c4bddd066645e23c5 build by dag@Build64R6, 2011-08-08 08:54:05
0: cs:Connected ro: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 ep:1 wo:b oos:41941724
Comme vous pouvez le voir, ils disent qu’il est connecté mais ro est sens secondaire / secondaire que nous n’avons pas dit que le système qui est le serveur primaire (maître) qui contient le bloc à répliquer. Une fois que nous disons le système qui est le maître, il va commencer la synchronisation.
Nous dirons que DRBD serveur1 est le serveur primaire:
Sur le serveur1:
# drbdsetup /dev/drbd0 primary –o
# cat /proc/drbd
version: 8.3.11 (api:88/proto:86-96)
GIT-hash: 0de839cee13a4160eed6037c4bddd066645e23c5 build by dag@Build64R6, 2011-08-08 08:54:05
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r—–
ns:503808 nr:0 dw:0 dr:504472 al:0 bm:30 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:41437916
[>………………..] sync’ed: 1.3% (40464/40956)M
finish: 1:06:40 speed: 10,340 (10,280) K/sec
La synchronisation a commencé et il faudra un peu de temps pour être achevée. S’il vous plaît attendre jusqu’à ce qu’il se fait et de passer à l’étape suivante.
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r—–
ns:41941724 nr:0 dw:0 dr:41942388 al:0 bm:2560 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
Maintenant que nos serveurs sont synchronisés, nous pouvons créer notre forme /dev/drbd0 avec notre système de fichier préféré. Dans mon cas, je vais utiliser ext4.
Surn serveur1:
# mkfs.ext4 /dev/drbd0
Configuration exportations NFS pour l’intégration Heartbeat
Bon, maintenant que nous avons notre DRBD en marche. L’étape suivante consiste à mettre en place l’exportation NFS et ensuite installer heartbeat afin que nous puissions avoir un basculement automatique sur le système.
Highly available NFS permet de préparer notre premier NFS:
Sur les deux serveurs:
# mkdir /drbd # vi /etc/exports
/drbd/main *(rw)
Sur serveur1 seleument :
# mount /dev/drbd0 /drbd
# mkdir /drbd/main
Quelques informations sur votre montages NFS dans /var/lib/nfs et depuis ces informations devra être reflété nous aurons à les déplacer vers le dispositif de DRBD:
# mv /var/lib/nfs/ /drbd/
cela pourrait générer une erreur telle que: D dispositif:
mv: cannot remove `/var/lib/nfs/rpc_pipefs/cache’: Operation not permitted
mv: cannot remove `/var/lib/nfs/rpc_pipefs/nfsd4_cb’: Operation not permitted
mv: cannot remove `/var/lib/nfs/rpc_pipefs/statd’: Operation not permitted
mv: cannot remove `/var/lib/nfs/rpc_pipefs/portmap’: Operation not permitted
mv: cannot remove `/var/lib/nfs/rpc_pipefs/nfs’: Operation not permitted
mv: cannot remove `/var/lib/nfs/rpc_pipefs/mount’: Operation not permitted
mv: cannot remove `/var/lib/nfs/rpc_pipefs/lockd’: Operation not permitted
mais ne vous inquiétez pas à ce sujet, car il va créer les répertoires de toute façon.
# mv /var/lib/nfs /var/lib/nfsBackup
Puis faire un lien symbolique /var/lib/nfs à notre répertoire / drbd:
# ln -s /drbd/nfs/ /var/lib/nfs # umount /drbd
On serveur2 seleument:
# mv /var/lib/nfs/ /var/lib/nfsBackup # ln -s /drbd/nfs/ /var/lib/nfs
Le lien symbolique sera brisé depuis le / dev / drbd0 n’est pas monté. Cette affaire va travailler dans de NFS fail-over.
Heartbeat installation and configuration
Nous allons installer Heartbeat du référentiel EPEL:
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm# vi /etc/yum.repos.d/epel.repo
enabled=0
# yum --enablerepo=epel install heartbeat
Créez le fichier suivant exacte sur les serveurs :
# vi /etc/ha.d/ha.cf
# même chose ici pour les noms de noeud utiliser le même nom d’hôte de vos hôtes … ce doit être ce que les réponses -n uname.
La prochaine Consigne est de créer le fichier de ressources pour le battement de coeur sur les deux serveurs avec la même teneur exacte de nouveau:
# vi /etc/ha.d/haresources
serveur1 IPaddr::10.0.0.100/24/eth0 drbddisk::main Filesystem::/dev/drbd0::/drbd::ext4 nfslock nfs
# Premier mot est le nom d’hôte du serveur primaire, le 10.0.0.100 IP est celle que j’ai choisis pour être l’adresse IP virtuelle qui doit être déplacé à l’esclave en cas de panne.
La dernière chose est de créer le fichier d’authentification sur les serveurs de nouveau avec le même contenu:
# vi /etc/ha.d/authkeys
Ce fichier de mot de passe ne doit être lisible que par l’utilisateur root:
# chmod 600 /etc/ha.d/authkeys
Ok, maintenant nous devons être prêts à démarrer… Disons tester !!
Sur les deux serveurs démarrer le service Heartbeat :
# service heartbeat start
sur serveur1 :
[root@serveur1 ~]# ifconfig
[root@serveur1 ~]# df -h
Système de fichiers Taille Util Libre Util% Monté sur
Permet de tester la DRBD / NFS basculement maintenant
Vous pouvez arrêt serveur1 … pas un problème ou tout simplement arrêter le service battement de coeur:
# service heartbeat stop
On serveur2:
[root@serveur2 ~]# ifconfig