Heartbeat+drbd

Heartbeat是Linux-HA工程的一個組件,自1999年開始到如今,發佈了衆多版本,是目前開源Linux-HA項目最成功的一個例子,在行業內獲得了普遍的應用。Heartbeat經過以太網交叉線後者串口電線來傳輸Heartbeat信號,來對集羣中的主機進行心跳監控。當主服務器出現故障的時候,沒法響應心跳信息,這個時候備用服務器就會把服務資源搶過去以實現服務的不間斷使用。Heartbeat除了重要的Heartbeat組件外還包括如下組件:html

Heartbeat包括如下幾個組件:node

heartbeat – 節點間通訊校驗模塊linux

CRM - 集羣資源管理模塊vim

CCM - 維護集羣成員的一致性api

LRM - 本地資源管理模塊服務器

StonithDaemon - 提供節點重啓服務網絡

logd - 非阻塞的日誌記錄app

apphbd - 提供應用程序級的看門狗計時器ide

Recovery Manager - 應用故障恢復測試

底層結構–包括插件接口、進程間通訊等

CTS – 集羣測試系統,集羣壓力測試

在HA集羣中備機接管服務的時候必定要保持數據的一致性,在Heartbeat中咱們能夠經過DRBD來實現服務器之間的數據的同步,代替共享磁盤陣,由於。在主節點寫入的數據會經過DRBD設備存儲到主節點的磁盤設備中,同時,這個數據也會自動發送到備用節點對應的DRBD設備,最終寫入備用節點的磁盤設備上,並且使用DRBD不須要太多的硬件的投資。

主機環境:rhel6 x86_64 selinux and iptables disabled

主機:server2.example.com 172.25.254.2

副機:server3.example.com 172.25.254.3

從oss.linbit.com/drbd下載所需的安裝包

解決依賴性: 在server主機上:

yum install gcc flex rpm-build kernel-devel -y 
tar zxf drbd-8.4.3.tar.gz 
cd  drbd-8.4.3
./configure --enable-spec --with-km

編譯生成 drbd rpm包:

rpmbuild -bb drbd.spec

提示須要將drbd包放入用戶家目錄的/rpmbuild/SOURCES/下 再次編譯:

wKiom1dishLwYtdXAAA6acG0fYI322.png

rpmbuild -bb drbd.spec

編譯 drbd 內核模塊

rpmbuild -bb drbd-km.speccd

安裝生成的rpm包

cd /root/rpmbuild/RPMS/x86_64/
yum install *

將生成的rpm包複製到server3主機上安裝:

scp /root/rpmbuild/RPMS/x86_64/* 172.25.254.3:

配置: 在/etc/drbd.d/目錄下建立任意以.res結尾的配置文件

vim /etc/drbd.d/example.res

添加以下配置: resource example { meta-disk internal; device /dev/drbd1; syncer { verify-alg sha1; } on server2.example.com { disk /dev/vda; address 172.25.254.2:7789; } on server3.example.com { disk /dev/vda; address 172.25.254.3:7789; } } 初始化drbd

drbdadm create-md example

在server3主機上作上述一樣的操做

同時啓動server2和server3主機的drbd

/etc/init.d/drbd start

將server2主機強制設爲主節點並同步數據

drbdsetup /dev/drbd1 primary --force

在兩臺主機上用cat /proc/drbd命令能夠同時看到同步狀態

wKioL1disz-ClRHbAADEBCdNeAY690.png-wh_50

同步結束後格式化drbd1磁盤

mkfs.ext4 /dev/drbd1

掛載文件系統並寫入數據

mount /dev/drbd1 /var/www/html
echo "hello.example.com" >/var/www/html/index.html

卸載文件系統並把兩臺主機都設爲secondary節點

umount /dev/drbd1
drbdadm secondary example

drbd配置完後接下來就是heartbeat的配置了。(在兩臺機子中作相同步驟:)

安裝軟件包:

yum install heartbeat-3.0.4-2.el6.x86_64.rpm heartbeat-libs-3.0.4-2.el6.x86_64.rpm heartbeat-devel-3.0.4-2.el6.x86_64.rpm ldirectord-3.9.5-3.1.x86_64.rpm -y

向/etc/ha.d/裏拷入配置文件.

cd /usr/share/doc/heartbeat-3.0.4/
cp ha.cf haresources authkeys /etc/ha.d/

更改配置文件ha.cf:

vim /etc/ha.d/ha.cf
  logfile /var/log/ha-log #日誌文件
  keepalive 2             #心跳時間
  deadtime 30             #無響應時間
  warntime 10       #警告時間
  initdead 60             #守護進程啓動後主機啓動資源須要等待的時間
  udpport 694             #端口
 cast   eth0             #使用物理網卡eth0傳輸心跳消息
 auto_failback on        #設置當主機修復後服務是否回返到主機
 node    server2.example.com
 node    server3.example.com #設置節點,主機在上副機在下
 ping 172.25.254.55      #判斷主副機的網絡情況
 respawn hacluster /usr/lib64/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster #指定用戶和用戶組

在/etc/ha.d/haresources文件配置要啓動的資源

server2.example.com  IPaddr::172.25.254.100/24/eth0 drbddisk::example Filesystem::/dev/drbd1::/var/www/html::ext4 httpd

server2.example.com: 主節點

IPaddr::172.25.254.100/24/eth0: 虛擬IP

drbddisk::example: 啓用以前配置的drbd

Filesystem::/dev/drbd1::/var/www/html::ext4: 文件系統

httpd: 服務

配置authkeys文件

 vim /etc/ha.d/authkeys

啓用明文加密的方式:

auth 1
1 crc

將authkeys文件的權限改成600

chmod 600 authkeys

測試: 經過訪問虛擬IP能夠看到以前作drbd時候所作的網頁了

wKiom1diskOQ9knzAAAiwhel6a0412.png-wh_50