DRBD+Heratbeat+NFS高可用文件共享存儲

1、概述node

一、架構圖mysql

wKiom1MKup_CAId7AADWASgYJQM011.jpg

二、軟件簡介c++

Heartbeat(Linux-HA)的工做原理:heartbeat最核心的包括兩個部分,心跳監測部分和資源接管部分,心跳監測能夠經過網絡鏈路和串口進行,並且支持冗餘鏈路,它們之間相互發送報文來告訴對方本身當前的狀態,若是在指定的時間內未到對方發送的報文,那麼就認爲對方失效,這時需啓動資源接管模塊來接管運 行在對方主機上的資源或者服務。web

DRBD:drbd是一個軟件來實現數據實時、同步、異步的數據鏡像塊存儲複製解決方案,主要功能是經過Linux內核實現。DRBD相似網絡RAID-1功能寫入本地的文件會經過網絡以相同方式寫在另外一文件系統。sql

3、資源分配api

系統:CentOS6.5_x64服務器

主機網絡

角色架構

IP地址異步

masternfs

主NFS

eth0:192.168.0.202/24

backupnfs

備NFS

eth0:192.168.0.203/24


VIP

192.168.0.204/24

4、配置兩臺hosts記錄

[root@masternfs ~]# vi /etc/hosts

192.168.0.202 masternfs

192.168.0.203 backupnfs

2、安裝配置DRBD(兩臺服務器配置基本同樣)

安裝epel源:

rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

下載drbd軟件:http://oss.linbit.com/drbd/

1、安裝依賴包

1
[root@masternfs ~] # yum install -y gcc gcc-c++ make perl kernel-devel kernel-headers flex drbd84-utils kmod-drbd84

2、安裝DRBD並加載到內核

1
2
3
4
5
6
7
8
9
10
11
12
[root@masternfs ~] # tar zxvf drbd-8.4.4.tar.gz
[root@masternfs ~] # cd drbd-8.4.4
[root@masternfs ~] # ./configure --prefix=/usr/local/drbd --with-km #--with-km,啓用內核模塊
[root@masternfs ~] # make KDIR=/usr/src/kernels/2.6.32-358.23.2.el6.x86_64/ #指定內核源碼路徑
[root@masternfs ~] # make install
[root@masternfs ~] # chkconfig --add drbd
[root@masternfs ~] # chkconfig drbd on
[root@masternfs ~] # cp drbd/drbd.ko /lib/modules/`uname -r`/kernel/lib/ #加載DRBD模塊到內核中
[root@masternfs ~] # modprobe drbd
[root@masternfs ~] # lsmod |grep drbd  #由此查看drbd模塊已經加載
drbd                 333755  0
libcrc32c              1246  1 drbd

3、配置DRBD

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[root@masternfs ~] # cd /usr/local/drbd/
[root@masternfs ~] # vi /usr/local/drbd/etc/drbd.d/global_common.conf
global {
         usage-count yes ;
}
common {
         protocol C;
disk {
         on-io-error detach;
}
syncer {
         rate 100M;
  }
}
resource web {
         on masternfs {
         device /dev/drbd0 ;
         disk /dev/sdb1 ;
         address 192.168.0.202:7899;
         meta-disk internal;
   }
         on backupnfs {
         device /dev/drbd0 ;
         disk /dev/sdb1 ;
         address 192.168.0.203:7899;
         meta-disk internal;
   }
}

4、建立供DRBD記錄信息數據塊

1
2
3
4
5
6
7
8
[root@masternfs ~] # drbd admcreate-md web
Writing meta data...
initializing activity log
NOT initializing bitmap
New drbd meta data blocksuccessfully created.
success
[root@masternfs ~] # mkdir -p /usr/local/drbd/var/run/drbd  #建立資源目錄
[root@masternfs ~] # service drbd start

wKioL1MKu26hXBLeAAJBmNxqZ34318.jpg

5默認沒有分主備節點的,須要設置

1
2
3
4
5
[root@masternfs ~] # cat /proc/drbd
version: 8.4.4(api:1 /proto :86-101)
GIT- hash :599f286440bd633d15d5ff985204aff4bccffadd build by phil@Build64R6, 2013-10-1415:33:06
  0: cs:Connected ro:Secondary /Secondaryds :UpToDate /UpToDate C r-----
ns:64 nr:112 dw:176 dr:6088 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1wo:f oos:0


1
2
[root@masternfs ~] # drbdadm -- --overwrite-data-of-peer primary web
[root@db-backup ~] # drbdadm secondary web   #backupnfs服務器設置從節點

 #再查看狀態已是主從

1
2
[root@masternfs ~] # drbd-overview
   0:mysql /0 Connected Primary /Secondary UpToDate /UpToDate C r-----

說明:
cs:兩臺數據鏈接狀態

ro:兩臺主機的狀態

ds:磁盤狀態是「UpToDate/UpToDate」,同步狀態。

6、格式化並掛載分區

1
2
3
[root@masternfs ~] # mkfs.ext4 /dev/drbd0
[root@masternfs ~] # mkdir /web
[root@masternfs ~] # mount /dev/drbd0 /web

3、安裝配置NFS

1
2
3
4
5
6
7
[root@masternfs ~] # yum install -y nfs-utils
[root@masternfs ~] # vi /etc/exports
/web 192.168.0.0 /24 (rw,no_root_squash)
[root@masternfs ~] # service rpcbind start
[root@masternfs ~] # service nfs start
[root@masternfs ~] # chkconfig rpcbind on
[root@masternfs ~] # chkconfig nfs on

4、安裝配置Heartbeat

1
2
3
4
[root@masternfs ~] # yum install heartbeat* -y
[root@masternfs ~] # cd /usr/share/doc/heartbeat-3.0.4/
[root@masternfsheartbeat-3.0.4] # cp ha.cf authkeys haresources /etc/ha.d/
[root@masternfsheartbeat-3.0.4] # cd /etc/ha.d/
1
2
3
4
5
6
7
8
9
10
11
12
13
[root@masternfs ha.d] # vi ha.cf
logfile /var/log/ha-log
logfacility local0    #若是未定義上述日誌,默認寫入/var/log/message
keepalive 2       #心跳間隔
deadtime 30       #死亡閥值
warntime 10       #警告時間
initdead 120      #首次啓動heartbeat,等待多久才啓動主服務資源
udpport  694      #鏈接端口
bcast eth0            #使用什麼方式組織心跳,最好用ucast方式
auto_failback off     #當主節點故障恢復後,自動獲取資源並取代從節點
node masternfs        #主節點主機名
node backupnfs        #備份節點主機名
ping 192.168.0.1      #選擇ping節點,ping的越好對HA集羣越穩定,建議使用網關

1
2
3
[root@masternfs ~] # vi /etc/ha.d/authkeys
auth 2
2 sha1 HI!

1
[root@masternfs ~] # masternfs IPaddr::192.168.0.204/24/eth0 drbddisk::web Filesystem::/dev/drbd0::/web::ext4 killnfsd

參數說明:

masternfsIPaddr::192.168.0.204/24/eth0  #主機名,後跟虛擬IP地址、接口

drbddisk::web  #管理drbd資源

Filesystem::/dev/drbd0::/web::ext4 killnfsd   #文件系統,目錄及格式,後跟nfs資源腳本

#killnfsd腳本

1
2
[root@masternfs ~] # echo "killall -9 nfsd ; /etc/init.d/nfs restart ; exit 0" >>/etc/ha.d/resource.d/killnfsd
[root@masternfs ~] # chmod +x /etc/ha.d/resource.d/killnfsd

1
2
3
[root@masternfs ~] # chmod 600 /etc/ha.d/authkeys  #不修改權限會報錯
[root@masternfs ~] # service heartbeat start
[root@masternfs ~] # chkconfig heartbeat on

5、測試高可用性

1、停掉masternfs服務器heartbeat服務,是否虛擬IP正常切換,可經過ip addr命令查看。

2、經過一臺測試機, mount -t nfs 192.168.0.204:/web/media,當故障切換時,nfs無間斷提供服務,提供完美冗餘。

3、經過ha-log日誌能夠看出主釋放資源,備接管資源。

wKiom1MKu9mjQSMdAALJS0t2_G8628.jpg

wKioL1MKu8GThAhJAAN1E7fwAyY840.jpg





相關文章
相關標籤/搜索