上次文章在兩臺主機實現heartbeat高可用後,這篇文章詳述了高可用系統架構下drbd的共享存儲實現方案。html
drbd 工做原理 mysql
DRBD是一種塊設備,能夠被用於高可用(HA)之中.它相似於一個網絡RAID-1功能.當你將數據寫入本地 文件系統時,數據還將會被髮送到網絡中另外一臺主機上.以相同的形式記錄在一個文件系統中。 本地(主節點)與遠程主機(備節點)的數據能夠保證明時同步.當本地系統出現故障時,遠程主機上還會 保留有一份相同的數據,能夠繼續使用.在高可用(HA)中使用DRBD功能,能夠代替使用一個共享盤陣.由於數據同時存在於本地主機和遠程主機上,切換時,遠程主機只要使用它上面的那份備份數據,就能夠繼續進行服務了。linux
Rhel6 drbd 配置sql
系統環境:rhel6 x86_64 selinux and iptables disabled網絡
軟件下載:http://oss.linbit.com/drbd架構
Primary:172.25.28.7 vm7.example.comflex
Secondary:172.25.28.8 vm8.example.comui
#######################################################spa
yum install gcc flex rpm-build kernel-devel -y 解決軟件依賴性htm
[root@vm7 drbd-8.4.3]# tar zxf drbd-8.4.3.tar.gz
[root@vm7 drbd-8.4.3]# ./configure --enable-spec --with-km
[root@vm7 drbd-8.4.3]# cp ~/drbd-8.4.3.tar.gz /root/rpmbuild/SOURCE 在家目錄生成 rpmbuild 編譯所需路徑
[root@vm7 drbd-8.4.3]# rpmbuild -bb drbd.spec #編譯生成 drbd rpm 包
rpmbuild -bb drbd-km.spec #編譯 drbd 內核模塊
[root@vm7 x86_64]# cd /root/rpmbuild/RPMS/x86_64
[root@vm7 x86_64]# rpm -ivh *.rpm
拷貝生成的 rpm 包到另外一主機,並安裝軟件包:
[root@vm7 x86_64]# scp *.rpm 172.25.28.8:
[root@vm8 ~]# rpm -ivh drbd-* 在 secondary安裝ruanjianbao
如下配置在兩臺主機上完成:
編輯/etc/drbd.d/drbd.res,修改以下:
resource mysqldata {
meta-disk internal;
device /dev/drbd1;
syncer {
verify-alg sha1;
}
on vm1.example.com {
disk /dev/vdb;
address 172.25.28.7:7789;
}
on vm4.example.com{
disk /dev/vdb;
address 172.25.28.8:7789;
}
}
在兩臺主機上分別執行如下命令:
drbdadm create-md mysqldata
/etc/init.d/drbd start
在兩臺主機上查看同步狀態:
watch cat /proc/drbd
數據同步結束後建立文件系統:
mkfs.ext4 /dev/drbd1
drbdsetup /dev/drbd1 primary
掛載文件系統:
mount /dev/drbd1 /var/www/html
效果:兩臺主機實現共同存儲數據在/dev/drbd1設備裏面
注意:兩臺主機上的/dev/drbd1 不能同時掛載,只有狀態爲 primary 時,才能被掛載使用,而此時另外一方的狀態爲 secondary。這個實驗要添加一塊磁盤/dev/vdb
Heartbeat與drbd存儲整合:在這裏認爲高可用主機爲vm7、vm8
兩臺高可用主機/etc/ha.d/haresources添加以下內容
Vm7.example.com IPaddr::172.25.28.100/24/eth0 drbddisk::mysqldata Filesystem::/dev/drbd1::/var/lib/mysql::ext4 mysqld
Vm8.example.com IPaddr::172.25.28.100/24/eth0 drbddisk::mysqldata Filesystem::/dev/drbd1::/var/lib/mysql::ext4 mysqld