一、基礎知識:
1 簡介:
Distributed Replicated Block Device(DRBD)是一個用軟件實現的、無共享的、服務器之間鏡像塊設備內容的存儲複製解決方案。
2 原理:
DRBD的核心功能通過Linux的內核實現,最接近系統的IO棧,但它不能神奇地添加上層的功能比如檢測到EXT3文件系統的崩潰。
3 DRBD的工具:
3.1 drbdadm:高級管理工具,管理/etc/drbd.conf,向drbdsetup和drbdmeta發送指令;
3.2 drbdsetup:配置裝載進kernel的DRBD模塊,平時很少直接用;
3.3 drbdmeta:管理META數據結構,平時很少直接用;
4 DRBD的模式:
4.1 單主模式:典型的高可靠性集羣方案。
4.2 復主模式:需要採用共享cluster文件系統,如GFS和OCFS2。用於需要從2個節點併發訪問數據的場合,需要特別配置。
5 複製模式:3種模式:
5.1 協議A:異步複製協議。本地寫成功後立即返回,數據放在發送buffer中,可能丟失。
5.2 協議B:內存同步(半同步)複製協議。本地寫成功並將數據發送到對方後立即返回,如果雙機掉電,數據可能丟失。
5.3 協議C:同步複製協議。本地和對方寫成功確認後返回。如果雙機掉電或磁盤同時損壞,則數據可能丟失。
一般用協議C。選擇協議將影響流量,從而影響網絡時延。
二、案例:
1 拓撲圖:
2 案例說明:
通過heartbeat實現HA高可用性羣集,通過DRBD實現存儲複製來達到存儲的高可用性,通過NFS實現網絡文件系統共享;
3 配置步驟:
3.1 Heartbeat高可用性羣集搭建:
3.1.1(1) 配置director1羣集服務器:
配置director1的網卡地址:
外出接口網卡:
心跳網卡:
重啓網絡服務:
同步時鐘:
# hwclock -s
配置director1的主機名:
# vim /etc/sysconfig/network
# hostname dir1.abc.com //配置後需要註銷一次;
配置director1的本地DNS解析:
# vim /etc/hosts
將heartbeat的安裝包使用ftp導入director1:
掛載光盤:
# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom
使用yum安裝heartbeat相應的軟件包:
# yum localinstall -y heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm --nogpgcheck
拷貝heartheat的配置文件到相應的位置:
# cd /usr/share/doc/heartbeat-2.1.4/
# cp ha.cf /etc/ha.d/
# cp haresources /etc/ha.d/
# cp authkeys /etc/ha.d/
編輯心跳探測配置文件ha.cf:
# cd /etc/ha.d/
# vim ha.cf
//定義心跳網卡;
//聲明羣集的節點;
配置驗證鑰匙(爲了實現雙方身份驗證):
# vim authkeys
改變authkeys的權限:
# chmod 600 authkeys
3.1.1(2) 配置director2羣集服務器:
配置director2的網卡地址:
外出接口網卡:
心跳網卡:
重啓網絡服務:
同步時鐘:
# hwclock -s
配置director2的主機名:
# vim /etc/sysconfig/network
# hostname dir2.abc.com //配置後需要註銷一次;
配置director2的本地DNS解析:
# vim /etc/hosts
將heartbeat的安裝包使用ftp導入director1:
掛載光盤:
# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom
使用yum安裝heartbeat相應的軟件包:
# yum localinstall -y heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm --nogpgcheck
拷貝heartheat的配置文件到相應的位置:
# cd /usr/share/doc/heartbeat-2.1.4/
# cp ha.cf /etc/ha.d/
# cp haresources /etc/ha.d/
# cp authkeys /etc/ha.d/
編輯心跳探測配置文件ha.cf:
# cd /etc/ha.d/
# vim ha.cf
//定義心跳網卡;
//聲明羣集的節點;
配置驗證鑰匙(爲了實現雙方身份驗證):
# vim authkeys
改變authkeys的權限:
# chmod 600 authkeys
3.2 DRBD服務搭建:
3.2.1(1) 在dir1.abc.com主機中創建一個NFS共性分區:
從sda硬盤中劃分一個分區:
# fdisk /dev/sda
創建一個擴展分區:
創建一個擴展分區:
查看分區表:
保存並退出:
通過內核從新讀取分區表:
# partprobe /dev/sda
3.2.1(2) 在dir2.abc.com主機中創建一個NFS共性分區:
從sda硬盤中劃分一個分區:
# fdisk /dev/sda
創建一個擴展分區:
創建一個擴展分區:
查看分區表:
保存並退出:
通過內核從新讀取分區表:
# partprobe /dev/sda
3.2.2(1) 在dir1.abc.com中安裝DRBD相關軟件包:
導入DRBD相應的安裝包:
安裝drbd服務:
# rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm
安裝drbd的內核模塊:
# rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm
3.2.2(2) 在dir2.abc.com中安裝DRBD相關軟件包:
導入DRBD相應的安裝包:
安裝drbd服務:
# rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm
安裝drbd的內核模塊:
# rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm
3.2.3(1) 在dir1.abc.com編輯drbd文檔:
編輯drbd主配置文件:
# vim /etc/drbd.conf
讀取樣例文件內容:底行模式
編輯通用資源:
# vim /etc/drbd.d/global_common.conf
編輯詳細資源:
# vim /etc/drbd.d/web.res
初始化drbd:
# drbdadm create-md web
3.2.3(2) 在dir2.abc.com編輯drbd文檔:
編輯drbd主配置文件:
# vim /etc/drbd.conf
讀取樣例文件內容:底行模式
編輯通用資源:
# vim /etc/drbd.d/global_common.conf
編輯詳細資源:
# vim /etc/drbd.d/web.res
初始化drbd:
# drbdadm create-md web
3.2.4(1) 啓動dir1.abc.com的DRBD服務:
# service drbd start
3.2.4(1) 啓動dir2.abc.com的DRBD服務:
# service drbd start
3.2.5(1) 查看dir1.abc.com的設備狀態:
# drbd-overview
3.2.5(2) 查看dir2.abc.com的設備狀態:
# drbd-overview
3.2.6 將dir1.abc.com的設備調整爲主設備:
# drbdadm -- --overwrite-data-of-peer primary web
3.2.7 格式化/dev/drbd0:
# mkfs -t ext3 -L drbdweb /dev/drbd0
3.2.8(1) 在dir1.abc.com上對/dev/drbd0進行掛載:
創建掛載點:
# mkdir /public
掛載:
# mount /dev/drbd0 /public/
3.2.8(2) 在dir1.abc.com上對/dev/drbd0進行掛載:
創建掛載點:
# mkdir /public
3.2.9(1) 查看dir1.abc.com的drbd當前狀態:
3.2.9(2) 查看dir2.abc.com的drbd當前狀態
3.3 NFS搭建
3.3.1(1) 配置dir1.abc.com的NFS server:
NFS服務是默認安裝的,使用時直接啓動即可;
# service nfs start
# service portmap start
編寫共享清單:
# vim /etc/exports
導出共享清單:
# exportfs -rv
exporting 192.168.10.0/24:/public
-r 導出;
-v 詳細信息;
修改nfs啓動腳本:
# vim /etc/init.d/nfs
3.3.1(2) 配置dir2.abc.com的NFS server:
NFS服務是默認安裝的,使用時直接啓動即可;
# service nfs start
# service portmap start
編寫共享清單:
# vim /etc/exports
導出共享清單:
# exportfs -rv
exporting 192.168.10.0/24:/public
-r 導出;
-v 詳細信息;
修改nfs啓動腳本:
# vim /etc/init.d/nfs
3.4 編輯heartbeat資源文件:
3.4.1(1) 在dir1.abc.com節點上heartbeat資源配置:
# vim /etc/ha.d/haresources
創建nfs服務的資源控制文件:
# vim /etc/ha.d/resource.d/killnfsd
改變nfs服務的資源控制文件的權限:
# chmod 755 /etc/ha.d/resource.d/killnfsd
3.4.1(2) 在dir2.abc.com節點上heartbeat資源配置:
# vim /etc/ha.d/haresources
創建nfs服務的資源控制文件:
# vim /etc/ha.d/resource.d/killnfsd
改變nfs服務的資源控制文件的權限:
# chmod 755 /etc/ha.d/resource.d/killnfsd
3.4.2(1) 啓動dir1.abc.com節點的heartbeat的服務:
# service heartbeat start
3.4.2(2) 啓動dir2.abc.com節點的heartbeat的服務:
# service heartbeat start
3.4.3 查看heartbeat兩節點的狀態:
4 測試:
4.1 開啓一個客戶端:
配置一個臨時地址:
# ifconfig eth0 192.168.10.20
創建一個掛載點:
# mkdir /mnt/nfs
# mount 192.168.10.10:/public /mnt/nfs
查看掛載的狀態:
4.2 當heartbeat正常運行時:
查看NFS網絡文件系統:
4.3 在dir1.abc.com中將heartbeat服務關閉:
# service heartbeat stop
此時NFS網絡文件系統仍然可以使用: