Cygal.net.pl

Systemy, Sieci i takie tam :)

Centos 6 DRBD + OCFS2

Poniżej przedstawię w jaki sposób uruchomić DRBD oraz ocfs2 na systemie operacyjnym CentOS 6.4
Zacznijmy od początku. Czym w takim razie jest DRBD?. Sama nazwa mówi nam wszystko “DRBD” oznacza Distributed Replicated Block Device
jest rozwiązaniem softwarowym umożliwiającym replikację urządzeń blokowych takich jak dyski twarde,
partycje, woluminy logiczne z wykorzystaniem sieci.

Czym zatem jest ocfs2?. Jest to klastrowy system plików, każdy węzeł ma bezpośredni dostęp do wszystkich urządzeń blokowych
takich jak dyski twarde, najczęściej poprzez szybką sieć lokalną SAN, co zapewnia bardzo wysoką wydajność, bez potrzeby
używania pośrednich serwerów. Wersja OCFS2 wspiera semantykę POSIX, listy dostępu ACL, rozszerzone atrybuty oraz quota.

1) Instalujemy Kernel-uek oraz ocfs2-tools

cd /etc/yum.repos.d
wget –no-check-certificate https://public-yum.oracle.com/public-yum-ol6.repo
rpm –import http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
yum install kernel-uek ocfs2-tools

Edytujemy gruba /boot/grub/menu.lst

vim  /boot/grub/menu.lst

title CentOS (2.6.39-400.214.3.el6uek.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.39-400.214.3.el6uek.x86_64 ro root=/dev/mapper/vg_test-root rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_test/root rd_NO_MD rd_LVM_LV=vg_test/swap SYSFONT=latarcyrheb-sun16  KEYBOARDTYPE=pc KEYTABLE=pl2 rd_NO_DM
initrd /initramfs-2.6.39-400.214.3.el6uek.x86_64.img

2) Konfiguracja O2CB  
 
Edytujemy /etc/sysconfig/o2cb

Vim /etc/sysconfig/o2cb

# O2CB_ENABELED: 'true' means to load the driver on boot.
O2CB_ENABLED=true

# O2CB_BOOTCLUSTER: If not empty, the name of a cluster to start.
O2CB_BOOTCLUSTER=ocfs2

Startujemy demona o2cb

/etc/init.d/o2cb start

Na razie ignorujemy błędy

Konfigurujemy cluster
o2cb_ctl -C -n ocfs2 -t cluster
o2cb_ctl -C -n server1 -t node  -a cluster=ocfs2 -a ip_address=192.168.199.1 -a ip_port=7777
o2cb_ctl -C -n server2 -t node  -a cluster=ocfs2 -a ip_address=192.168.199.2 -a ip_port=7777

Restartujemy
/etc/init.d/o2cb restart
/etc/init.d/ocfs2 start

Dodajemy demony do serwisów startowych Centosa
chkconfig –level 35 o2cb on
chkconfig –level 35 ocfs2 on

3) Instalacja DRBD

a)
pobieramy źródła i  wypakowywyjemy
wget http://oss.linbit.com/drbd/8.3/drbd-8.3.10.tar.gz
tar -xvzf drbd-8.3.10.tar.gz

tworzymy drzewo katalogów dla rpmbuilda
mkdir -p rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

cd drbd-8.3.10

b)
instalujemy potrzebne paczki

yum -y install gcc make automake autoconf flex rpm-build kernel-devel

./configure –with-km –with-utils
make rpm

instalujemy drbd ze stworzonych paczek RPM

cd /root/rpmbuild/RPMS/x86_64
rpm -ivh drbd-*

c) sprawdzamy czy jest załadowany moduł drbd

lsmod | grep drbd

jeżeli nie to go włączamy

modprobe drbd

konfigurujemy dedykowany interfejs do komunikacji miedzy nodami

vim /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
IPADDR=192.168.199.1
NETMASK=255.255.255.0
NM_CONTROLLED=no
BOOTPROTO=static

Dodajemy potrzebne wpisy do /etc/hosts

vim /etc/hosts

10.212.18.231   test1
10.212.18.232   test2

Edytujemy drbd.conf

vim /etc/dred.conf

edytujemy go zgodnie z tym co mamy w systemie czyli IPki, partycje:


resource r0 {
on test1 {
device     /dev/drbd0;
disk       /dev/sdb1;
address    192.168.199.1:7788;
flexible-meta-disk  internal;

on test2 {
device    /dev/drbd0;
disk      /dev/sdb1;
address   192.168.199.2:7788;
meta-disk internal;

}

d) ustawiamy uprawnienia

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

e) inicjujemy drbd

drbdadm create-md r0

jeżeli wcześniej został założony file system drbd zwróci komunikat typu

Found ext3 filesystem
1048376 kB data area apparently used
1048308 kB left usable by current configuration
Device size would be truncated, which
would corrupt data and result in
‘access beyond end of device’ errors.
You need to either
* use external meta data (recommended)
* shrink that filesystem first
* zero out the device (destroy the filesystem)

wówczas możemy wyczyścić partyjce w następujący sposób

dd if=/dev/zero bs=1M count=1 of=/dev/sdb; sync

po tej operacji ponownie inicjalizujemy drbd

drbdadm create-md r0

wymuszamy na jednym z nodów chwilowego mastera

drbdadm — –overwrite-data-of-peer primary r0

czekamy aż się synchronizuje
watch -n 1 cat /proc/drbd

6) zakładamy filesystem

mkfs.ocfs2 -b 4K -C 32K -N 3 -L drbd /dev/drbd0

tworzymy punkt montowania
mkdir drbd

montujemy
mount -t ocfs2 /dev/drbd0 /drbd/

dodajemy drbd do autostartu
chkconfig drbd on

dodajemy modprobe drbd do autostartu
echo “/sbin/modprobe drbd” >> /etc/rc.local

tworzymy plik testowy
touch test.txt

robimy umonta partycji drbd na masterze

umount /drbd

przestawiamy go na slave
drbdadm secondary r0

na drugim nodzie ustawiamy teraz master
drbdadm primary r0

montujemy drbd
mount /dev/drbd0 /drbd/

sprawdzamy czy plik test.txt sie zareplikował, jeżeli tak to robimy umont przestawiamy noda na slave i włączamy master na głównym nodzie oraz montujemy zasób /drbd

4) tworzymy skrypt dla monitoringu zabbix

mkdir -p /var/empty/zabbix/
vim /root/skrypty/drbd_status.sh
[bash]
#!/bin/bash
zabbix_home="/var/empty/zabbix"
log_file=$zabbix_home/drbd_status.log

state=`drbdadm role r0`
cstate=`drbdadm cstate r0`
dstate=`drbdadm dstate r0`

echo > $log_file
date >> $log_file
echo "usr=$USER" >> $log_file
echo "mode=$state" >> $log_file
echo "status=$cstate" >> $log_file
echo "synch=$dstate" >> $log_file
[/bash]

chmod +x drbd_status.sh

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *


Time limit is exhausted. Please reload CAPTCHA.