DRBD (Distributed Replicated Block Device) คือซอฟต์แวร์ที่สามารถทำสำเนาข้อมูลให้กับฮาร์ดดิสก์ (หรืออุปกรณ์เก็บข้อมูลอื่นๆ) สองลูกให้ข้อมูลเหมือนกันทุกประการผ่านทางเครือข่าย การสำเนาข้อมูลไม่ใช่แค่ไฟล์แต่ลึกลงไปถึงระดับ block ของฮาร์ดดิสก์ บางคนอาจใช้คนว่า RAID1 ผ่านทางเครือข่าย จุดประสงค์ก็เพื่อสำรองข้อมูลไปยังสถานที่ปฏิบัติงานสำรอง (disaster recovery site – DR site) ถ้าสถานที่ทำงานหลักมีปัญหาสามารถย้ายไปทำในที่สำรองได้เพื่อให้การปฏิบัติงานทำได้อย่างต่อเนื่อง
ในการทดลองนี้ผมจะใช้ 2 เครื่องนะครับและจำลอง Harddisk ไว้ 2 ลูกทั้ง 2 เครื่อง (sda + sdb)
ตรวจสอบความพร้อมของ Disk
ทำให้ทั้ง 2 เครื่องรู้จักกันด้วย hostname (ในขั้นตอนการ config ผมจะอ้าง hostname แทน IP นะครับ)
ขั้นตอนการติดตั้ง DRBD
All Server
1 > ติดตั้ง Epel Packages
rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
2 > อัพเดท repo
yum -y update3 > ติดตั้ง DRBD
[root@host1 ~]# yum -y install drbd83-utils kmod-drbd83 [root@host2 ~]# yum -y install drbd83-utils kmod-drbd834 > สร้างพาทิชั่นสำหรับ DRBD
[root@host1 ~]# fdisk -cu /dev/sdb [root@host2 ~]# fdisk -cu /dev/sdb
5 > สร้าง ไฟล์ clusterdb_res.res
[root@host1 ~]# vi /etc/drbd.d/clusterdb_res.res
resource clusterdb_res { protocol C; handlers { pri-on-incon-degr “/usr/lib/drbd/notify-pri-on-incon-degr.sh;/usr/lib/drbd/notifyemergency-reboot.sh;echo b > /proc/sysrq-trigger; reboot -f”; pri-lost-after-sb “/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notifyemergency-reboot.sh; echo b > /proc/sysrq-trigger ;reboot -f”; local-io-error “/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergencyshutdown.sh; echo o > /proc/sysrq-trigger ; halt -f”;fence-peer “/usr/lib/drbd/crm-fence-peer.sh”; } startup { degr-wfc-timeout 120; # 2 minutes. outdated-wfc-timeout 2; # 2 seconds. } disk { on-io-error detach; } net { cram-hmac-alg “sha1”; shared-secret “clusterdb”; after-sb-0pri disconnect; after-sb-1pri disconnect; after-sb-2pri disconnect; rr-conflict disconnect; } syncer { rate 10M; al-extents 257; on-no-data-accessible io-error; } on host1 { device /dev/drbd0; disk /dev/sdb1; address 192.168.0.221:7788; flexible-meta-disk internal; } on host2 { device /dev/drbd0; disk /dev/sdb1; address 192.168.0.222:7788; meta-disk internal; } }
6 > ทำการคัดลอกไฟล์ไปที่ host2
[root@host1 ~]# scp /etc/drbd.d/clusterdb_res.res host2:/etc/drbd.d/clusterdb_res.res
7 > สร้าง drbd partition
[root@host1 ~]# drbdadm create-md clusterdb_res [root@host2 ~]# drbdadm create-md clusterdb_res
8 > เปิดใช้งาน drbd
[root@host1 ~]# service drbd start [root@host2 ~]# service drbd start
สามารถตรวจสอบความพร้อมใช้
service drbd status
9 > สังเกตุว่าในตอนนี้ สถานะจะเป็น Secondaty/Secondary ซึ่งเราจำเป็นต้องทำให้เครื่องใดเครื่องหนึ่งเป็น Primary เพื่อที่จะ Mount มาใช้งาน
[root@host1 ~]# drbdadm primary –force data [root@host1 ~]# drbdadm — –overwrite-data-of-peer primary all
สังเกตุว่าสถานะตอนนี้จะเป็น Primary/Secondary แล้วนะครับ
10 > ทำการ Format partition
[root@host1 ~]# mkfs -t ext4 /dev/drbd0
ทดสอบ Mount เพื่อใช้งาน
[root@host1 ~]# mkdir -p /home/putter [root@host1 ~]# mount /dev/drbd0 /home/putter/
เราจะสามารถ Mount ได้เฉพาะเครื่องที่เป็น Primary เท่านั้นหากต้องการเปลี่ยนจาก Primary เป็น Secondary
[root@host1 ~]# drbdadm secondary clusterdb_res [root@host2 ~]# drbdadm — –overwrite-data-of-peer primary all
** หากใครได้เปิดใช้ firewall ก็เปิด port tcp 7788 ด้วยครับ
ข้อมูลเพิ่มเติม
http://www.drbd.org/
http://www.raspberrypithai.com/2013/01/10/drbd-raspberry-pi/