Installation et Configuration d’un DRBD croisé sur Xenserver¶
Installer DRBD¶
Export du proxy
export https_proxy=http://proxy:3128
export http_proxy=http://proxy:3128
Récupérer le paquet DRBD depuis notre site, L’installer et activer le module.
cd /root
wget http://srvinstallation.tranquil.it/logiciels/drbd/drbd-utils-8.4.3-2.x86_64.rpm
rpm -i drbd-utils-8.4.3-2.x86_64.rpm
modprobe drbd
#systemctl enable drbd #possible uniquement à partir de Xenserver 7
Indication
le module drbd est natif à partir de xenserver 7.0
Reconfigurer les interfaces réseaux¶
Nous utiliserons eth1 sur chaque Xen pour la réplication DRBD.
Note
Ces interfaces devront être seulement utilisées pour le trafic DRBD, la couche Xen ne la gère pas.
sur l’un des Xenserver :
xe pif-list device=eth1
Un uuid est retourné pour chaque eth1 des 2 Xenservers
uuid ( RO) : 082915b1-af96-74cd-f955-2517d3f794b9
device ( RO): eth1
currently-attached ( RO): true
VLAN ( RO): -1
network-uuid ( RO): c3c23dfe-1a7a-d121-adc0-ca4046917607
uuid ( RO) : 67077c00-1a56-799d-13d3-a067a6fb3cdb
device ( RO): eth1
currently-attached ( RO): true
VLAN ( RO): -1
network-uuid ( RO): c3c23dfe-1a7a-d121-adc0-ca4046917607
Il faut supprimer les définitions de ces PIF et le NETWORK afin que ce ne soit pas la couche Xen qui se charge de ces interfaces.
xe pif-unplug uuid=082915b1-af96-74cd-f955-2517d3f794b9
xe pif-unplug uuid=67077c00-1a56-799d-13d3-a067a6fb3cdb
xe pif-forget uuid=082915b1-af96-74cd-f955-2517d3f794b9
xe pif-forget uuid=67077c00-1a56-799d-13d3-a067a6fb3cdb
xe network-destroy uuid=c3c23dfe-1a7a-d121-adc0-ca4046917607
À faire sur srvxen1
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
XENMANAGED=no
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.0.0.1
NETMASK=255.255.255.0
MTU=9000
Activer l’interface réseau
ifup eth1
Relancer xapi pour vérifier le tout
service xapi restart
À faire sur srvxen2
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
XENMANAGED=no
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.0.0.2
NETMASK=255.255.255.0
MTU=9000
Activer l’interface réseau
ifup eth1
Relancer xapi pour vérifier le tout
service xapi restart
Configurer DRBD¶
Note
À faire sur les deux serveurs
Partie LVM¶
Configurer les filtres¶
Modifier les filtres LVM dans /etc/lvm/lvm.conf
et
/etc/lvm/master/lvm.conf
pour les version 7.0.
Commenter la ligne
filter = [ "r|/dev/xvd.|", "r|/dev/VG_Xen.*/*|"]
Lorsque vous avez un Raid software et que le disque logique se traduit par /dev/mdX, remplacer par
filter = ["a|/dev/drbd.*|","a|/dev/md.*|","r|.*|"]
Autrement, remplacer /dev/md.* par la partition qui possède les Volumes Group ou Logical Volume (VG et LV)
Créer la partition LVM¶
pvcreate /dev/md0
vgcreate xenserver /dev/md0
Avant de créer les LVM, il faut prendre en compte que le volume groupe ne fait pas 4 To:
La commande
vgs
affiche
xenserver 1 0 0 wz--n- 3,64T 3,64T
créer les volumes LVM en conséquence
lvcreate -n drbd1 -L 1,81T xenserver
lvcreate -n drbd2 -L 1,81T xenserver
Partie iptables¶
Modifier le pare-feu :file:` vi /etc/sysconfig/iptables`
#drbd
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 7790 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 7791 -j ACCEPT
Puis redémarrer iptables
service iptables.service restart
Partie DRBD¶
Créer un fichier /etc/drbd.d/drbd1.res
resource drbd1 {
protocol B;
on srvxen1.test.lan {
device /dev/drbd1;
disk /dev/xenserver/drbd1;
address 10.0.0.1:7790;
meta-disk internal;
}
on srvxen2.test.lan {
device /dev/drbd1;
disk /dev/xenserver/drbd1;
address 10.0.0.2:7790;
meta-disk internal;
}
}
Créer un fichier /etc/drbd.d/drbd2.res
resource drbd2 {
protocol B;
on srvxen1.test.lan {
device /dev/drbd2;
disk /dev/xenserver/drbd2;
address 10.0.0.1:7791;
meta-disk internal;
}
on srvxen2.test.lan {
device /dev/drbd2;
disk /dev/xenserver/drbd2;
address 10.0.0.2:7791;
meta-disk internal;
}
}
Modifier le fichier /etc/drbd.d/global_common.conf
global {
usage-count no;
}
common {
disk{
no-disk-barrier;
no-disk-flushes;
resync-rate 120M;
al-extents 3389;
}
startup {
degr-wfc-timeout 15;
}
net {
sndbuf-size 0;
no-tcp-cork;
max-buffers 80k;
max-epoch-size 20000;
unplug-watermark 16;
}
}
Monter le DRBD et lancer les synchros¶
Attention
À ne faire qu’au premier lancement des DRBD !!!
Sur srvxen1
Créer le bloc drbd1
drbdadm create-md drbd1
drbdadm up drbd1
drbdadm -- --overwrite-data-of-peer primary drbd1
Attention
Ne lancer la commande ci-dessus que sur srvxen1, la commande --overwrite-data-of-peer
n’est qu’à faire lors de la première fois ou en situation de split brain.
Créer le bloc drbd2
drbdadm create-md drbd2
drbdadm up drbd2
Sur srvxen2
Créer le bloc drbd2
drbdadm create-md drbd2
drbdadm up drbd2
drbdadm -- --overwrite-data-of-peer primary drbd2
Attention
Ne lancer la commande ci-dessus que sur srvxen2, la commande --overwrite-data-of-peer
n’est qu’à faire lors de la première fois ou en situation de split brain.
Créer le bloc drbd1
drbdadm create-md drbd1
drbdadm up drbd1
La commande drbd-overview
montre la synchro en cours.
Known issue¶
Erreur de DRBD¶
Si lors du drbdadm up ou create vous rencontrez l’erreur suivante :
open(/dev/xenserver/drbd2) failed: No such file or directory
assurez-vous que les volume group (vg) soient bien up. Pour ce faire
vgchange -ay
Après un reboot, le drbd ne remonte pas et le sr non plus¶
Vérifier que l’interface réseau du drbd est bien up
ifup eth1
Réactiver les vg
vgchange -ay
Enfin, démarrer le drbd
systemctl start drbd
Vous pouvez lancer dans le xencenter sur le sr un « repair » ou bien en ligne de commande
xe pbd-plug uuid=$(xe pbd-list sr-name-label=NOM_SR --minimal)
Dans les version xen 6.5, les raid logiciels ne sont pas correctement renseignés dans le kernel
modprobe raid5 #mettre la bonne version
Assembler de force les disques. Attention à bien les connaître avant de lancer cette commande
mdadm --assemble --force /dev/md0 /dev/sd[abcd]1
Optimisation iscsi drbd et OS avec carte réseau 10GB¶
Attention
Ces configuration sont à adapter suivant votre matériel et système
Configuration drbd optimisée¶
Optimisation global pour drbd sur carte 10Gg
Modifier le fichier vi /etc/drbd.d/global_common.conf
global {
usage-count no;
}
common {
disk{
md-flushes no;
disk-barrier no;
disk-flushes no;
al-extents 3839;
c-max-rate 4000M;
}
syncer {
rate 4000M;
al-extents 3833;
}
startup {
degr-wfc-timeout 15;
}
net {
sndbuf-size 512k;
no-tcp-cork;
max-buffers 20000;
max-epoch-size 20000;
unplug-watermark 16;
}
}
Optimisation disque et réseaux a mettre dans le fichier rc.local¶
Optimisation disque raid type hdd/sas pour virtualisation Xenserver Dans le cas ci dessous sdb et sdc sont des volumes raid disques SAS
echo deadline > /sys/block/sdb/queue/scheduler
echo 1500 > /sys/block/sdb/queue/iosched/write_expire
echo 0 > /sys/block/sdb/queue/iosched/front_merges
echo 150 > /sys/block/sdb/queue/iosched/read_expire
echo 1500 > /sys/block/sdb/queue/iosched/write_expire
echo deadline > /sys/block/sdc/queue/scheduler
echo 1500 > /sys/block/sdc/queue/iosched/write_expire
echo 0 > /sys/block/sdc/queue/iosched/front_merges
echo 150 > /sys/block/sdc/queue/iosched/read_expire
echo 1500 > /sys/block/sdc/queue/iosched/write_expire
Optimisation disque raid type ssd pour virtualisation Xenserver Dans le cas ci dessous sdd est un volume raid disques ssd
echo "0" > /sys/block/sdd/queue/rotational
echo "0" > /sys/block/sdd/queue/add_random
echo "2" > /sys/block/sdd/queue/rq_affinity
echo "deadline" > /sys/block/sdd/queue/scheduler
echo "975" > /sys/block/sdd/queue/nr_requests
echo "975" > /sys/block/sdd/queue/read_ahead_kb
echo "975" > /sys/block/sdd/device/queue_depth
echo "150" > /sys/block/sdd/queue/iosched/read_expire
echo "0" > /sys/block/sdd/queue/iosched/front_merges
echo "1500" > /sys/block/sdd/queue/iosched/write_expire
blockdev --setra 16584 /dev/sdd
optimisation carte réseau 10Gb pour interface iscsi et drbd adapter ethX à l’interface de la carte réseaux 10Gb à faire sur la baie San et Xenserver ces paramètre sont a appliquer à chaque reboot
ifconfig eth4 txqueuelen 300000
ethtool -K ethX rx on
ethtool -K ethX tx on
ethtool -K ethX sg on
ethtool -K ethX tso on
ethtool -K ethX gso on
ethtool -K ethX gro off
modprobe tcp_cubic
sysctl -w net.ipv4.tcp_congestion_control=cubic
sysctl -w net.core.somaxconn = 1000
sysctl -w net.core.netdev_max_backlog = 300000
sysctl -w net.core.rmem_max = 16777216
sysctl -w net.core.wmem_max = 16777216
sysctl -w net.ipv4.tcp_max_syn_backlog = 8096
sysctl -w net.ipv4.tcp_slow_start_after_idle = 0
sysctl -w net.ipv4.tcp_tw_reuse = 1
sysctl -w net.ipv4.ip_local_port_range = 10240 65535
sysctl -w net.ipv4.tcp_rmem ="4096 87380 16777216"
sysctl -w net.ipv4.tcp_wmem ="4096 65536 16777216"
sysctl -w sysctl -w net.ipv4.tcp_mtu_probing=1
sysctl -w net.ipv4.route.flush = 1
sysctl -w net.ipv4.tcp_timestamps=0
sysctl -w net.ipv4.tcp_fin_timeout=15
sysctl -w net.ipv4.tcp_sack=0
sysctl -w net.ipv4.tcp_moderate_rcvbuf=1
sysctl -w vm.vfs_cache_pressure=50