基于heartbeatV2版本的ha-gui工具对httpd做高可用集群(1)
一、簡述
Heartbeat通過插件技術實現了集群間的串口、多播、廣播和組播通信,在配置的時候可以根據通信媒介選擇采用的通信協議,heartbeat啟動的時候檢查這些媒介是否存在,如果存在則加載相應的通信模塊。這樣開發人員可以很方便地添加新的通信模塊,比如添加紅外線通信模塊。對于高可用集群系統,如果集群間的通信不可靠,那么很明顯集群本身也不可靠。Heartbeat采用UDP協議和串口進行通信,它們本身是不可靠的,可靠性必須由上層應用來提供。那么怎樣保證消息傳遞的可靠性呢?Heartbeat通過冗余通信通道和消息重傳機制來保證通信的可靠性。Heartbeat檢測主通信鏈路工作狀態的同時也檢測備用通信鏈路狀態,并把這一狀態報告給系統管理員,這樣可以大大減少因為多重失效引起的集群故障不能恢復。例如,某個工作人員不小心撥下了一個備份通信鏈路,一兩個月以后主通信鏈路也失效了,系統就不能再進行通信了。通過報告備份通信鏈路的工作狀態和主通信鏈路的狀態,可以完全避免這種情況。因為這樣在主通信鏈路失效以前,就可以檢測到備份工作鏈路失效,從而在主通信鏈路失效前修復備份通信鏈路。Heartbeat通過實現不同的通信子系統,從而避免了某一通信子系統失效而引起的通信失效。最典型的就是采用以太網和串口相結合的通信方式。這被認為是當前的最好實踐,有幾個理由可以使我們選擇采用串口通信:(1)IP通信子系統的失效不太可能影響到串口子系統。(2)串口不需要復雜的外部設備和電源。(3)串口設備簡單,在實踐中非常可靠。(4)串口可以非常容易地專用于集群通信。(5)串口的直連線因為偶然性掉線事件很少。不管是采用串口還是以太網IP協議進行通信,heartbeat都實現了一套消息重傳協議,保證消息包的可靠傳遞。實現消息包重傳有兩種協議,一種是發送者發起,另一種是接收者發起。對于發送者發起協議,一般情況下接收者會發送一個消息包的確認。發送者維護一個計時器,并在計時器到時的時候重傳那些還沒有收到確認的消息包。這種方法容易引起發送者溢出,因為每一臺機器的每一個消息包都需要確認,使得要發送的消息包成倍增長。這種現像被稱為發送者(或者ACK)內爆(implosion)。對于接收者發起協議,采用這種協議通信雙方的接收者通過序列號負責進行錯誤檢測。當檢測到消息包丟失時,接收者請求發送者重傳消息包。采用這種方法,如果消息包沒有被送達任何一個接收者,那么發送者容易因NACK溢出,因為每個接收者都會向發送者發送一個重傳請求,這會引起發送者的負載過高。這種現像被稱為NACK內爆(implosion)。Heartbeat實現的是接收者發起協議的一個變種,它采用計時器來限制過多的重傳,在計時器時間內限制接收者請求重傳消息包的次數,這樣發送者重傳消息包的次數也被相應的限制了,從而嚴格的限制了NACK內爆。二、對httpd做高可用集群
? ?1.環境說明 ? ?
? ?我們通過192.168.1.210對外提供web服務,兩個客戶端的ip地址分別為192.168.1.200和192.168.1.201,在192.168.1.202上提供了nfs服務為兩臺web服務器提供共享存儲
? ?2.前期準備工作
? ? ?由于heartbeat是基于主機名通信的,需要對兩臺服務器配置主機名,并能夠對實現主機名的解析
在/etc/hosts文件中添加如下行 192.168.1.201node2.wangfeng7399.com node2 192.168.1.200node1.wangfeng7399.com node1 ? ? ? 為了實驗的方便性,本處我們基于ssh的密鑰認證,實現兩臺主機登陸不需要密碼
? ?3.在node1和node2上分別準備httpd,本處可以通過yum安裝也可以通過編譯源碼安裝,關于安裝過程,本處不在累贅,如想了解過程,其移步至本人的博客http://wangfeng7399.blog.51cto.com/3518031/1379373
? ?4.時間同步,本處使用的互聯網的時間服務器,也可以自建時間服務器,關于如何自建時間服務器,將會在后續推出,敬請期待
[root@node1 ha]# ntpdate time.windows.com ? ?查看兩邊的服務器時間是否同步
? ?5.安裝heartbeat
? ? ?①.解決依賴關系,由于centos6.5提供的為heartbeatV3版本,本處不能直接通過yum安裝
? ? ?說明:libnet包在eprl源中,請確保安裝epel源
? ? ②.安裝heartbeatV2版本的rpm包
? ?6.配置heartbeat
①.準備配置文件
[root@node1 ha.d]# cd /usr/share/doc/heartbeat-2.1.4/ [root@node1 heartbeat-2.1.4]# cp ha.cf authkeys /etc/ha.d/ ? ? ?②.修改配置文件
對ha.cf詳解 #debugfile /var/log/ha-debug 是否開啟調試功能,已經調試功能的文件位置 logfile /var/log/ha-log 日志文件的保存位置 keepalive 1 每個多長時間發送一次心跳信息,默認單位為s,也支持以ms為單位 deadtime 10 在檢測不到對方心跳,替換的時間 warntime 8 警告時間 initdead 120啟動heartbeat后多長時間開始檢查心跳 udpport 694 基于那個端口檢測心跳信息 crm on 以crm的模塊開啟 bcast eth0 # Linux linux廣播的端口 mcast eth0 225.0.0.169410多播的地址 ucast eth0 192.168.1.2組播的地址 compression bz2 壓縮傳輸算法 on 主節點啟動是否自動切換回主節點 ping 192.168.1.253仲裁設備,可以指向網關 #ping_group group1 10.10.10.25410.10.10.253仲裁設備組 #debug 1debug的級別 compression_threshold 2壓縮的最低大小,單位為kb node node1.wangfeng7399.com node節點,切記,本處不能使用ip地址 node node2.wangfeng7399.com node節點,切記,本處不能使用ip地址
? 7.為用戶hacluster創建密碼,在安裝heartbeat-gui時,會自動安裝此用戶
? ?8.將配置好的文件復制一份到node2節點上
? ?9.準備nfs服務器,并使apache用戶對其有讀寫執行的權限,并準備主頁
[root@localhost ~]# vi /etc/exports /www/html 192.168.1.0/24(rw) [root@localhost ~]# setfacl -m u:apache:rwx /www/html/
? ?10.通過圖形界面配置相關信息 ? ?
[root@node1 ha.d]# hb_gui & ? ?11.配置過程
? ?12.測試
? ?可以看到我們實現了高可用的效果
? ?切記:1.一定要注意添加順序,順序很重要,一定不要把順序弄亂
? ? ? ? ?2.httpd和nfs一定不能開機自啟動
? ?未完,我們下一次對mysql和lvs做高可用集群,書接下文http://wangfeng7399.blog.51cto.com/3518031/1398676
轉載于:https://blog.51cto.com/wangfeng7399/1397530
總結
以上是生活随笔為你收集整理的基于heartbeatV2版本的ha-gui工具对httpd做高可用集群(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LUA闭包概念演示
- 下一篇: archive for required