DRBD+heartbeat+httpd實現HA羣集

Distributed Replicated Block Device(DRBD)是一個用軟件實現的、無共享的、服務器之間鏡像塊設備內容的存儲複製解決方案,可以被用於高可用羣集(HA)中。它類似於一個網絡RAID-1功能。當數據寫入本地文件系統時,數據還會被髮送到網絡中另一臺主機上,以相同的形式記錄在一個文件系統中。本地(主節點)與遠程主機(備節點)的數據可以保證實時同步。當本地系統出現故障時,遠程主機上還會保留有一份相同的數據,可以繼續使用。在高可用羣集(HA)中使用DRBD功能,可以代替使用一個共享盤陣。因爲數據同時存在於本地主機和遠程主機上。切換時,遠程主機只要使用它上面的那份備份數據,就可以繼續進行服務了。


如果主服務器宕機,造成的損失是不可估量的。要保證主服務器不間斷服務,就需要對服務器實現冗餘。而heartbeat就爲我們提供了廉價的、可伸縮的高可用集羣方案。


結合heartbeatdrbd既可以實現不僅保證了服務器的高可用而且也有效的將數據進行了完全的備份。


接下來就要實現一個heartbeat+DRBD+httpd的高可用性羣集。

拓撲:(其中每個node都有兩塊硬盤,其中一塊硬盤用來存放web的數據,Linux version 2.6.18-164.el5)

203048811.jpg


準備工作:

[root@node1 ~]# vim /etc/sysconfig/network

HOSTNAME=node1.a.com


[root@node1 ~]# vim /etc/hosts

# Do not remove the following line, orvarious programs

# that require network functionality willfail.

127.0.0.1 node1.a.comnode1 localhost.localdomain localhost

::1 localhost6.localdomain6 localhost6

192.168.2.10 node1.a.com

192.168.2.20 node2.a.com


爲了便於安裝軟件包,使用本地yum

[root@node1 ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo

1 [rhel-Server]

2 name=Red Hat Enterprise Linux Server

3 baseurl=file:///mnt/cdrom/Server

4 enabled=1

5 gpgcheck=1

6 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release

7 [rhel-Cluster]

8 name=Red Hat Enterprise Linux Cluster

9 baseurl=file:///mnt/cdrom/Cluster

10enabled=1

11gpgcheck=1

12gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release


掛載光盤

[root@node1 ~]# mkdir /mnt/cdrom

[root@node1 ~]# mount /dev/cdrom /mnt/cdrom/

mount: block device /dev/cdrom iswrite-protected, mounting read-only


安裝apache

[root@node1 ~]# yum install httpd –y


確保httpd服務關閉並且不隨系統啓動自啓動

[root@node1 ~]# service httpd status

httpd is stopped

[root@node1 ~]# chkconfig --list |grephttpd

httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off


203402421.jpg

安裝所有軟件包(heartbeat相關軟件下載地址http://down.51cto.com/data/988719

[root@Director1 heartbeat]# yum localinstall *.rpm --nogpgcheck y


拷貝幾個需要的配置文件

[root@node1 heartbeat]# cd /usr/share/doc/heartbeat-2.1.4/

[root@node1 heartbeat-2.1.4]#cp ha.cf haresources authkeys /etc/ha.d/

[root@node1 heartbeat-2.1.4]#cd /etc/ha.d/



編輯ha.cf文件來聲明HA羣集的成員以及心跳探測的方法

[root@Director1 ha.d]# vim ha.cf

91 bcast eth1 # Linux /////eth1口發送廣播來進行Director之間的心跳探測


聲明HA羣集內的成員

211 node node1.a.com

212 node node2.a.com



設置Director加入HA羣集的驗證方式

[root@node1 ha.d]# chmod 600 authkeys

[root@node1 ha.d]# vim authkeys

23 auth 3 /////使用第三種驗證方式

24#1 crc

25#2 sha1 HI!

26 3 md5 node /////啓用這種驗證方式


[root@node1 ha.d]# vim haresources /////設置heartbeat的資源清單

44 node1.a.com 192.168.2.100/24/eth0 httpd


將httpd的管理權限交與heartbeat

[root@node1 ha.d]# cp /etc/init.d/httpd resource.d/



203751790.jpg

安裝DRBD(DRBD相關軟件下載地址http://vault.centos.org/5.7/extras/i386/RPMS/

[root@node1 drbd]# yum localinstall *.rpm--nogpgcheck –y


拷貝樣例文件

[root@node1 drbd]# cd /usr/share/doc/drbd83-8.3.8/

[root@node1 drbd83-8.3.8]#cp drbd.conf /etc/drbd.conf

cp: overwrite `/etc/drbd.conf'? y

[root@node1 drbd83-8.3.8]#cat /etc/drbd.conf

# You can find an example in /usr/share/doc/drbd.../drbd.conf.example


include"drbd.d/global_common.conf";

include "drbd.d/*.res";

[root@node1 drbd83-8.3.8]#cd /etc/drbd.d/

[root@node1 drbd.d]# cp global_common.conf global_common.conf.bak /////將原來的文件做個備份

[root@node1 drbd.d]# vim global_common.conf


1global {

2 usage-count yes;

3 # minor-countdialog-refresh disable-ip-verification

4}

5

6common {

7 protocol C;

8

9 startup {

10 wfc-timeout 120;

11 degr-wfc-timeout 120;

12 }

13 disk {

14 on-io-error detach;

15 fencing resource-only;

16

17 }

18 net {

19 cram-hmac-alg"sha1";

20 shared-secret "mydrbdlab";

21 }

22 syncer {

23 rate 100M;

24 }

25

26 }



定義資源

[root@node1 drbd.d]# vim web.res

1resource web {

2 on node1.a.com {

3 device /dev/drbd0;

4 disk /dev/sdb;

5 address 192.168.3.10:7789;

6 meta-disk internal;

7 }

8

9 on node2.a.com {

10 device /dev/drbd0;

11 disk /dev/sdb;

12 address 192.168.3.20:7789;

13 meta-disk internal;

14 }

15 }


在啓動DRBD之前,需要創建供DRBD記錄信息的數據塊.分別在兩臺主機上執行

[root@node1 ~]# drbdadm create-md web


啓動DRBD

[root@node1 ~]# service drbd start

[root@node1 ~]# chkconfig drbd on


到此,在node2上重複以上的過程,這裏不再列出

查看DRBD的狀態

[root@node1 ~]# cat /proc/drbd

version: 8.3.8(api:88/proto:86-94)

GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build [email protected], 2010-06-04 08:04:16

0:cs:Connected ro:Secondary/Secondary ds:Inconsistent/Diskless C r----

ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:5242684


也可以用下面這種方式查看

[root@node1 ~]# drbd-overview

0:web Connected Secondary/Secondary Inconsistent/Diskless C r----


現在兩臺主機都是備機狀態,都是”不一致”狀態,這是由於DRBD無法判斷哪一方爲主機,以哪一方的磁盤數據作爲標準數據。所以我們需要初始化,在node1上執行:

[root@node1 ~]# drbdsetup /dev/drbd0 primary -o

[root@node1 ~]# cat /proc/drbd

version: 8.3.8(api:88/proto:86-94)

GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build [email protected], 2010-06-04 08:04:16

0:cs:Connected ro:Primary/Secondary ds:UpToDate/Diskless C r----

ns:0 nr:0 dw:0dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:5242684



將硬盤格式化

[root@node1 ~]# mkfs -t ext3 -L drbdweb /dev/drbd0


掛載到web默認站點目錄下

[root@node1 ~]# mount /dev/drbd0 /var/www/html/

[root@node1 ~]# df

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/sda2 9920624 2671432 6737124 29% /

/dev/sda1 101086 11373 84494 12% /boot

tmpfs 30264 0 30264 0% /dev/shm

/dev/drbd0 5160380 141440 4756808 3% /var/www/html


新建一個測試頁面

[root@node1 ~]# echo "Hello World..." >/var/www/html/index.html


如果不使用heartbeat的情況下,DRBD只能手工切換主從關係

現在修改heartbeat的配置文件,使DRBD可以通過heartbeat自動切換

[root@node1 ~]# vim /etc/ha.d/haresources

44 node1.a.com 192.168.2.100/24/eth0 drbddisk::web Filesystem::/dev/drbd0::/var/www/html::ext3 httpd


啓動heartbeat(在兩個節點上都要啓動)

[root@node1 ~]# service heartbeat start

logd is already running

Starting High-Availability services:

2013/10/25_18:31:11 INFO: Resource isstopped

[ OK ]

[root@node1 ~]# chkconfig heartbeat on



驗證

正常情況下資源在node1上

205118478.jpg

205118903.jpg


node1節點宕掉時

[root@node1 ~]# cd /usr/lib/heartbeat

[root@node1 heartbeat]# ./hb_standby

2013/10/25_18:38:20 Going standby [all].

205212306.jpg

205212352.jpg



node1恢復正常時

205314788.jpg



至此,heartbeat+DRBD+httpd的HA羣集已經搭建完成。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章