lvs和HA的高可用性

Heartbeat實現Lvs高可用和HA高可用

效果圖如下

1heartbeat的介紹

Heartbeat 項目是 Linux-HA 工程的一個組成部分,它實現了一個高可用集羣系統。心跳服務和集羣通信是高可用集羣的兩個關鍵組件,在 Heartbeat 項目裏,由 heartbeat 模塊實現了這兩個功能。下面描述了 heartbeat 模塊的可靠消息通信機制,並對其實現原理做了一些介紹

heartbeat Linux-HA)的工作原理:heartbeat最核心的包括兩個部分,心跳監測部分和資源接管部分,心跳監測可以通過網絡鏈路和串口進行,而且支持冗 餘鏈路,它們之間相互發送報文來告訴對方自己當前的狀態,如果在指定的時間內未受到對方發送的報文,那麼就認爲對方失效,這時需啓動資源接管模塊來接管運 行在對方主機上的資源或者服務。[1]

高可用集羣是指一組通過硬件和軟件連接起來的獨立計算機,它們在用戶面前表現爲一個單一系統,在這樣的一組計算機系統內部的一個或者多個節點停止工作,服務會從故障節點切換到正常工作的節點上運行,不會引起服務中斷。從這個定義可以看出,集羣必須檢測節點和服務何時失效,何時恢復爲可用。這個任務通常由一組被稱爲心跳的代碼完成。在Linux-HA裏這個功能由一個叫做heartbeat的程序完成。

消息通信的模型

 Heartbeat包括以下幾個組件: 

heartbeat – 節點間通信校驗模塊   

CRM - 集羣資源管理模塊  

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

LRM - 本地資源管理模塊  

StonithDaemon - 提供節點重啓服務  

logd - 非阻塞的日誌記錄  

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

  Recovery Manager - 應用故障恢復 

2、實現web服務器的高可用性

1)基本的網卡配置參數略

[root@hua1 ~]# vim /etc/sysconfig/network (改主機名)

[root@hua1 ~]# hostname hua1.a.com (使主機名立即生效)

[root@hua1 ~]# vim /etc/hosts (配置dns指向)

192.168.145.99      hua1.a.com

192.168.145.100     hua2.a.com

2)實現heartbeat高可用需要一些軟件實現,需要安裝上去

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

[root@hua1 ~]# yum localinstall 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 perl-MailTools-1.77-1.el5.noarch.rpm libnet-1.1.4-3.el5.i386.rpm --nogpgcheck (localinstall本地安裝,--nogpgcheck,無簽名檢測)

[root@hua1 ~]# rpm -pql heartbeat-2.1.4-9.el5.i386.rpm (查看解壓後的文件夾有那些。)

[root@hua1 ~]# cd /etc/ha.d/ (這個目錄是heartbeat的主配置目錄)

[root@hua1 ha.d]# cd /usr/share/doc/heartbeat-2.1.4/ (安裝後的配置文件)

3[root@hua1 heartbeat-2.1.4]# cp ha.cf authkeys haresources  /etc/ha.d/ (把配置文件拷貝過來)

4[root@hua1 ha.d]# vim ha.cf  (編輯這個心跳文件參數,編輯如下)

95 bcast   eth1   (心跳線的網卡用廣播形式)

213 node    hua1.a.com  

214 node    hua2.a.com (兩個節點的地址)

5[root@hua1 ~]# dd if=/dev/random bs=512 count=1 |openssl md5 (隨機產生一個參數用md5加密)

0+1 records in

0+1 records out

128 bytes (128 B) copied, 0.000308478 seconds, 415 kB/s

9bf2f23aae3a63c16ea681295ffd7666

6[root@hua1 ha.d]# vim authkeys (編輯認證文件)

auth 3

3 md5 9bf2f23aae3a63c16ea681295ffd7666

[root@hua1 ha.d]# chmod 600 authkeys  (改變它的權限爲600,不然重啓不成功)

7[root@hua1 ha.d]# vim haresources (編輯資源文件)

45 hua1.a.com  192.168.145.101/24/eth0  httpd 

8[root@hua1 ha.d]# cp /etc/init.d/httpd /etc/ha.d/resource.d/ (把httpd的服務器腳本拷貝過來,因爲http已經不需要自己啓動了,它受heartbeat的控制)

[root@hua2 ha.d]# service httpd status (保證它是關閉的)

httpd 已停

9)編輯apache的網頁,兩臺都要編輯

[root@hua2 ha.d]# cd /var/www/html/

[root@hua2 html]# ll

總計 4

-rw-r--r-- 1 root root 5 12-27 19:19 index.html

[root@hua2 html]# more index.html 

hua3

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

[root@hua1 html]# ll

total 4

-rw-r--r-- 1 root root 4 Dec 27 20:01 index.html

[root@hua1 html]# more index.html 

123

[root@hua1 heartbeat]# service httpd stop

[root@hua1 heartbeat]# chkconfig httpd off

9)現在可以啓用heartbeat的服務,觀察日誌

[root@hua1 ~]# tail -f /var/log/messages

[root@hua1 html]# service httpd status (這時http服務已經啓動了)

httpd (pid  5021) is running...

[root@hua1 html]# ifconfig (這時查看端口發現已經把vip地址資源掙用過來了)

10)另一臺啓動失敗,主要原因是沒改權限

[root@hua2 html]# chmod 600 /etc/ha.d/authkeys 

[root@hua2 html]# service heartbeat start

logd is already running

Starting High-Availability services: 

2012/12/29_02:19:34 INFO:  Resource is stopped

                                                           [確定]

11)模式失效

[root@hua1 ha.d]# cd /usr/lib/heartbeat/     (/usr/share/heartbeat

這兩個目錄都可以模擬

[root@hua1 heartbeat]# ./hb_standby (模擬斷掉)

[root@hua2 html]# watch -n 1 "service httpd status" (動態觀察http的狀態)

[root@hua2 html]# ifconfig (查看地址已經沒有了,跑到另一臺機器上去了)

[root@hua1 heartbeat]# ./hb_takeover  (模擬有好了,能把資源又徵用過來了)

[root@hua1 heartbeat]# pwd

/usr/lib/heartbeat

3、實現director的高可用性

1)配置基本的網卡,還有一個虛擬的vip網卡地址,掩碼是255.255.255.255(兩臺都一樣)

[root@mail ~]# route -n

2)root@mail ~]# route add -host 192.168.145.101 dev lo:0 (添加一條特殊路由,指向vip的地址)

3)原來做的基礎上把所做過的服務停掉

[root@hua1 ~]# service heartbeat stop

                                                           [確定]

[root@mail html]# chkconfig --list httpd

httpd           0:關閉 1:關閉 2:關閉 3:關閉 4:關閉 5:關閉 6:關閉

[root@mail html]# service httpd stop

停止 httpd:                                               [確定]

4)現在是控制ipvsadm的服務了

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

[root@hua2 ~]# cd /mnt/cdrom/Cluster

[root@hua2 Cluster]# yum install ipvsadm-1.24-10.i386.rpm 

[root@hua1 ~]# cp /etc/init.d/ipvsadm /etc/ha.d/resource.d/

[root@hua1 ~]# ipvsadm -C

[root@hua1 ~]# ipvsadm -A -t 192.168.145.101 -s rr

Zero port specified for non-persistent service

[root@hua1 ~]# ipvsadm -A -t 192.168.145.101:80 -s rr

[root@hua1 ~]# ipvsadm -a -t 192.168.145.101:80 -r 192.168.145.200 -g

[root@hua1 ~]# ipvsadm -a -t 192.168.145.101:80 -r 192.168.145.201 -g

[root@hua1 ~]# ipvsadm -ln

[root@hua1 ~]# service ipvsadm save

scp hua1.a.com:/etc/sysconfig/ipvsadm /etc/sysconfig/ipvsadm (把一臺的配置拷貝到另一個服務器上了)

4、實現動態的轉發規則表

意義:就是當後方的所管理的服務器有異常時,就能被前方的管理集羣所察覺到,並作出相應的改變。

1)需要一個軟件包,安裝上去。

[root@hua1 ~]# yum localinstall heartbeat-ldirectord-2.1.4-9.el5.i386.rpm --nogpgcheck

[root@hua1 ~]# rpm -pql heartbeat-ldirectord-2.1.4-9.el5.i386.rpm 

2[root@hua1 ~]# cp /etc/init.d/ldirectord /etc/ha.d/resource.d/ (把要管理的服務器腳本拷貝過去)

3[root@hua1 ~]# cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/

4[root@hua1 ~]# vim /etc/ha.d/ldirectord.cf  

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

hua1.a.com 192.168.145.101/24/eth0 ldirectord::ldirectord.cf

6)兩臺的web服務器要根據ldirector上的東西編寫測試頁面。

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

[root@hua1 html]# echo "yes" >.hua.htm

7)做完後不用重啓,能夠自動加載,這時查看規則已經能查看到了,因爲這時檢測不到後方的web工作

8)然後開啓一個web的服務就能發現權值變成了1.

[root@mail html]# service httpd start

9)如何在編輯/etc/ha.d/ldirectord.cf   這個文件時,把quiescent (靜默模式)改爲了no,如何發現後方的檢測頁面不能檢測到則會把規則直接刪掉

[root@mail html]# service httpd stop (把一臺的服務停掉,然後就發現,規則沒有了)

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