Linux下VS/DR+heartbeat實現高可用負載均衡服務

 

HEARBEAT介紹

Heartbeat 是可以從 Linux-HA 項目 Web 站點公開獲得的軟件包之一。它提供了所有 HA 系統所需要的基本功能,比如啓動和停止資源、監測羣集中系統的可用性、在羣集中的節點間轉移共享 IP 地址的所有者等。它通過串行線、以太網接口或者同時使用二者來監測特定服務(或多個服務)的健康狀況。當前版本支持兩節點配置,使用專門的 heartbeat“pings”來檢查服務的狀態和可用性。

LINUX heartbeat使用一個心跳協議,心跳協議意味着消息規則的在兩個或更多節點之間發送,如

果消息沒有在給定的節點間接收到,就會認爲這個節點是失效的並且運行某種失敗切換或恢復動

作,LINUX heartbeat使用標準的以太網接口來發送心跳消息。

當LINUX heartbeat被初始化設置好以後,需要選擇一個節點作爲主節點,當主節點的心跳啓動以

後,它將分配一個虛擬IP地址給主節點的網絡接口,外部的進程和應用等將按照這個方式訪問這

個節點,如果主節失效,那麼在集羣中的另一個節點將爲這個虛擬IP地址啓動一個接口並且用地址轉換保證所有訪問這個IP的請求都綁定到本機,也就是IP自動漂移到本機,這種就是IP地址

接管。

每一個虛擬IP地址都可以被看作是一個資源,它被封裝作爲程序其工作方式類似於UNIX的INIT

腳本,這意味着它能夠啓動和停止,並且它也能夠被查詢是否正在運行,用這種方式,LINUX

heartbeat能夠根據用heartbeat協議,根據節點間通信的狀態啓動或停止這些虛擬IP。

 

 

 

LINUX HEARTBEAT的配置

三個最關鍵的修改文件: <"/etc/ha.d/authkeys">

<"/etc/ha.d/haresources">

<"/etc/ha.d/ha.cf">

1 配置/etc/ha.d/ha.cf(只在一個節點上配即可,配好後copy到其它節點)

vi /etc/ha.d/ha.cf

按如下內容進行修改(文件中#開頭的行爲註釋行,更多的選項及選項的詳細說明請參考文件中的註釋及相關文檔)

debugfile /var/log/ha-debug #寫debug信息到這個文件中

logfile /var/log/ha-log          #寫運行日誌到這個文件中

keepalive 2 #設置心跳時間爲2秒

deadtime 30 #設置離最近一次心跳多長時間沒有心跳時表明節點失敗

warntime 10 #設置離最近的一次心跳多長時間沒有心跳時發出警告

initdead120        #機器重啓動或是剛開機時,網絡能正確開始工作的時間,最小設置爲deadtime的兩倍

udpport 694 #bcast/ucast方式心跳通訊所用的UDP端口

#baud 19200 #串口的波特率,使用串口作心跳時需設置

#serial /dev/ttyS0 #串口設備名,使用串口作心跳時需設置

bcast eth0 #使用哪一個設備(網卡)做心跳

#bcast eth1 eth2 #使用多個設備(網卡)做心跳時的設置

auto_failback on #當主節點從失敗狀態恢復時是否恢復其主節點的身份,即應用是否返回到其自身運行

                                 #on 返回

                                 #off 不返回,其它節點繼續作爲主節點運行

                                 #legacy 當所有節點都不支持自動返回時,將自身設爲自動返回

node gfs132  #節點的主機名或域名,需在/etc/hosts文件或

node gfs133 #所有節點都以node開始的行列出

ping 172.20.16.2 #ping節點,不屬於cluster內的節點,通常選一臺路由器或交換機作爲Ping節點,

#ipfail模塊通過此節點來驗證網絡的連通性,可指定多個Ping節點

respawn hacluster /usr/lib64/heartbeat/ipfail #由heartbeat調用並監視ipfail模塊

2 配置/etc/ha.d/haresources (只在一個節點上配即可,配好後copy到其它節點)

vi /etc/ha.d/haresources

按如下內容進行修改(文件中#開頭的行爲註釋行,更多的選項及選項的詳細說明請參考文件中的註釋及相關文檔)

gfs132 172.20.16.99 mysqld mon    #設置heartbeat管理的資源或服務

#格式爲:主節點主機名或域名 浮動IP 服務名

#主節點主機名或域名爲ha.cf中node行中指定的任一節點

#浮動IP 爲對外提供訪問的IP,主節點失敗後會自動漂移到其它節點,繼續對外提供服務.

#服務名爲 heartbeat管理的服務

#注意,此文件內容所有節點必須保持一致。

3 配置/etc/ha.d/authkeys(只在一個節點上配即可,配好後copy到其它節點)

vi /etc/ha.d/authkeys

按如下內容進行修改(文件中#開頭的行爲註釋行,更多的選項及選項的詳細說明請參考文件中的註釋及相關文檔)

auth 3 #設置認證方式

#1 crc #格式爲:auth <number>

3 md5 Hello! #<number> <authmethod>

[<authkey>] 說明:

#如果是用心跳是用交叉線直接對連兩個節點,用crc方式即可,CPU佔用最少

#如果心跳位於不安全的網絡,如通過共用交換機連接節點,則選用sha1或md5

#sha1佔用CPU資源更多,但是更安全,md5安全性及CPU佔用率居中

#sha1和md5都需要提供認證KEY,即用來加密的KEY

#注意,此文件權限必須設置爲600

4  copy以上配置文件到其它節點

scp /etc/ha.d/ha.cf /etc/ha.d/haresources /etc/ha.d/authkeys [email protected]:/etc/ha.d/

5  分別設置各節點/etc/ha.d/authkeys文件權限

chmod 600 /etc/ha.d/authkeys (文件權限必須設置爲600,否則heartbeat不能正常啓動)

#至此安裝完畢

     LINUX HEARTBEAT啓動和停止

1  LINUX HEARTBEAT啓動

在兩個節點分別運行service heartbeat start,如果能成功啓動因該回顯:

[root@ARCHITECT ~]# service heartbeat start

Starting High-Availability services:

[ OK ]

  2   LINUX HEARTBEAT停止

在兩個節點分別運行service heartbeat stop,如果能成功停止應回顯:

[root@ARCHITECT ~]# service heartbeat stop

Stopping High-Availability services:

[ OK ]

 

 

拓撲圖:

 

 

image 

 

 

HA-heartbeat-1:

 

image

掛載光盤:

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

安裝ipvsadm:

[root@node1 heartbeat-2.1.4]# yum install -y ipvsadm

寫條目:

[root@node1 ~]# ipvsadm -A -t 192.168.10.100:80 -s rr
[root@node1 ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.2 -g
[root@node1 ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.3 –g

保存

[root@node1 ~]# service ipvsadm save

[root@node1 ha.d]# service ipvsadm start
Clearing the current IPVS table:                           [  OK  ]
Applying IPVS configuration:                               [  OK  ]
[root@node1 ha.d]# service ipvsadm stop
Clearing the current IPVS table:                           [  OK  ]

安裝heartbeat:

[root@localhost ~]# yum localinstall heartbeat-2.1.4-9.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 heartbeat-pils-2.1.4-10.el5.i386.rpm –nogpgcheck

進入目錄:

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

拷貝文件:

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

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

 

[root@node1 heartbeat-2.1.4]# cp /etc/init.d/ipvsadm /etc/ha.d/resource.d/

進入/etc/ha.d/目錄:

[root@node1 heartbeat-2.1.4]# cd /etc/ha.d/
[root@node1 ha.d]# ll
total 80
-rw-r--r-- 1 root root   645 Oct 10 16:12 authkeys
-rw-r--r-- 1 root root 10539 Oct 10 16:11 ha.cf
-rwxr-xr-x 1 root root   745 Jul 24  2009 harc
-rw-r--r-- 1 root root  5905 Oct 10 16:12 haresources
drwxr-xr-x 2 root root  4096 Oct 10 16:10 rc.d
-rw-r--r-- 1 root root   692 Jul 24  2009 README.config
drwxr-xr-x 2 root root  4096 Oct 10 16:16 resource.d
-rw-r--r-- 1 root root  7862 Jul 24  2009 shellfuncs

 

編輯修改ha.cf文件:

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

 

91 #bcast  eth0            # Linux
92 #bcast  eth1 eth2       # Linux
93 #bcast  le0             # Solaris
94 bcast   eth1            # Solaris

212 #node   ken3
213 #node   kathy
214 node    node1.a.com
215 node    node2.a.com

 

生成通過md5加密的隨機數:

[root@node1 ~]# dd if=/dev/random bs=512 count=1 |openssl md5
0+1 records in
0+1 records out
128 bytes (128 B) copied, 0.000127271 seconds, 1.0 MB/s
bbdf2b9865f7d1ed1a8a781369e0e7ba    
[root@node1 ~]#

 

編輯修改authkeys文件:

[root@node1 ha.d]# vim authkeys

23 #auth 1
24 #1 crc
25 #2 sha1 HI!
26 #3 md5 Hello!
27 auth 3
28 3 md5 bbdf2b9865f7d1ed1a8a781369e0e7ba    //md5加密數

 

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

 

編輯修改haresources文件:

[root@node1 ha.d]# vim haresources

45 node1.a.com 192.168.10.100/24/eth0/192.168.10.255  ipvsadm

 

 

 

HA-heartbeat-2:

 

image

掛載光盤:

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

安裝ipvsadm:

[root@node1 heartbeat-2.1.4]# yum install -y ipvsadm

寫條目:

[root@node1 ~]# ipvsadm -A -t 192.168.10.100:80 -s rr
[root@node1 ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.2 -g
[root@node1 ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.3 –g

保存

[root@node1 ~]# service ipvsadm save

[root@node1 ha.d]# service ipvsadm start
Clearing the current IPVS table:                           [  OK  ]
Applying IPVS configuration:                               [  OK  ]
[root@node1 ha.d]# service ipvsadm stop
Clearing the current IPVS table:                           [  OK  ]

安裝heartbeat:

[root@localhost ~]# yum localinstall heartbeat-2.1.4-9.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 heartbeat-pils-2.1.4-10.el5.i386.rpm –nogpgcheck

進入目錄:

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

拷貝文件:

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

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

 

[root@node1 heartbeat-2.1.4]# cp /etc/init.d/ipvsadm /etc/ha.d/resource.d/

進入/etc/ha.d/目錄:

[root@node1 heartbeat-2.1.4]# cd /etc/ha.d/
[root@node1 ha.d]# ll
total 80
-rw-r--r-- 1 root root   645 Oct 10 16:12 authkeys
-rw-r--r-- 1 root root 10539 Oct 10 16:11 ha.cf
-rwxr-xr-x 1 root root   745 Jul 24  2009 harc
-rw-r--r-- 1 root root  5905 Oct 10 16:12 haresources
drwxr-xr-x 2 root root  4096 Oct 10 16:10 rc.d
-rw-r--r-- 1 root root   692 Jul 24  2009 README.config
drwxr-xr-x 2 root root  4096 Oct 10 16:16 resource.d
-rw-r--r-- 1 root root  7862 Jul 24  2009 shellfuncs

 

編輯修改ha.cf文件:

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

 

91 #bcast  eth0            # Linux
92 #bcast  eth1 eth2       # Linux
93 #bcast  le0             # Solaris
94 bcast   eth1            # Solaris

212 #node   ken3
213 #node   kathy
214 node    node1.a.com
215 node    node2.a.com

 

生成通過md5加密的隨機數:

[root@node1 ~]# dd if=/dev/random bs=512 count=1 |openssl md5
0+1 records in
0+1 records out
128 bytes (128 B) copied, 0.000127271 seconds, 1.0 MB/s
bbdf2b9865f7d1ed1a8a781369e0e7ba    
[root@node1 ~]#

 

編輯修改authkeys文件:

[root@node1 ha.d]# vim authkeys

23 #auth 1
24 #1 crc
25 #2 sha1 HI!
26 #3 md5 Hello!
27 auth 3
28 3 md5 bbdf2b9865f7d1ed1a8a781369e0e7ba    //md5加密數

 

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

 

編輯修改haresources文件:

[root@node1 ha.d]# vim haresources

45 node1.a.com 192.168.10.100/24/eth0/192.168.10.255  ipvsadm

 

 

 

 

 

 

 

 

 

 

web服務器上的配置:

 

web1服務器上的配置:

Ip信息:

N9ZDGG1_BN{`OV6CV2NL`4B

 

 

安裝web:

[root@localhost ~]# yum install httpd   //安裝web服務器

[root@localhost ~]# cd /var/www/html/

[root@localhost html]# vim index.html

其內容爲:

web1(192.168.10.2)

 

[root@localhost html]# service httpd restart   //重啓web服務

 

添加下列條目到/etc/sysctl.conf

[root@localhost ~]# echo "net.ipv4.conf.eth0.arp_announce = 2" >>/etc/sysctl.conf
[root@localhost ~]# echo "net.ipv4.conf.eth0.arp_ignore = 1" >>/etc/sysctl.conf

[root@localhost ~]# sysctl –p                       //使其生效

 

[root@localhost ~]# route add -host 192.168.10.100 dev lo:0  //保證用vip還回

 

 

 

web2服務器上的配置:

Ip信息:

}VBDQE50P}6GEFKTN(L@D`N

 

安裝web:

[root@localhost ~]# yum install httpd   //安裝web服務器

[root@localhost ~]# cd /var/www/html/

[root@localhost html]# vim index.html

其內容爲:

web2(192.168.10.3)

 

[root@localhost html]# service httpd restart   //重啓web服務

 

添加下列條目到/etc/sysctl.conf

[root@localhost ~]# echo "net.ipv4.conf.eth0.arp_announce = 2" >>/etc/sysctl.conf
[root@localhost ~]# echo "net.ipv4.conf.eth0.arp_ignore = 1" >>/etc/sysctl.conf

[root@localhost ~]# sysctl –p                       //使其生效

 

[root@localhost ~]# route add -host 192.168.10.100 dev lo:0  //保證用vip還回

測試:

用pc訪問:

image

 

 

刷新頁面後:

 

image

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