前言
高可用集群,High Availability Cluster,簡稱HA Cluster,是指以減少服務中斷時間為目的的服務器集群技術。通過上文可以看出,LVS集群本身并不能實現高可用,比如Director Server不能檢測Real Server的健康度,一旦其中一臺或全部Real Server宕機,Director Server還會繼續轉發請求,導致站點無法訪問,同樣,如果Director Server宕機站點就更不可能正常運轉了。本文將講解如何基于heartbeat v1實現LVS集群高可用。
Heartbeat
簡介
Heartbeat是Linux-HA工程的一個組件,自1999年開始到現在,發布了眾多版本,是目前開源Linux-HA項目最成功的一個例子,在行業內得到了廣泛的應用。
工作原理
Heartbeat最核心的包括兩個部分,心跳監測部分和資源接管部分,心跳監測可以通過網絡鏈路和串口進行,而且支持冗余鏈路,它們之間相互發送報文來告訴對方自己當前的狀態,如果在指定的時間內未收到對方發送的報文,那么就認為對方失效,這時需啟動資源接管模塊來接管運行在對方主機上的資源或者服務。
基于Heartbeat v1實現LVS集群高可用
實驗拓撲
實驗環境
node1:node1.scholar.com 172.16.10.123 CentOS6.6
node2:node2.scholar.com 172.16.10.124 CentOS6.6
Real Server1:192.168.1.10(VIP)172.16.10.125(RIP) CentOS6.6
Real Server2:192.168.1.10(VIP)172.16.10.126(RIP) CentOS6.6
注意事項
配置高可用集群的前提:(以兩節點的heartbeat為例)
①時間必須保持同步
使用ntp服務器
②節點必須名稱互相通信
解析節點名稱
/etc/host
集群中使用的主機名為`uname -n`表示的主機名
③ping node
僅偶數節點才需要
④ssh密鑰認證進行通信
配置過程
時間同步
請確保兩個節點時間同步,這里不再詳細講述
解析名配置
[root@node1 ~]# vim /etc/hosts 172.16.10.123 node1.scholar.com node1 172.16.10.124 node2.scholar.com node2 [root@node1 ~]# vim /etc/sysconfig/network HOSTNAME=node1.scholar.com [root@node1 ~]# uname -n node1.scholar.com #兩個節點都需如上操作
ssh密鑰配置
[root@node1 ~]# ssh-keygen -t rsa -P '' [root@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node2 [root@node2 ~]# ssh-keygen -t rsa -P '' [root@node2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1 [root@node1 ~]# date; ssh node2 'date' #測試 Sun Jun 7 17:46:03 CST 2015 Sun Jun 7 17:46:03 CST 2015
安裝所需軟件包
#解決依賴關系 [root@node1 ~]# yum install perl-TimeDate net-snmp-libs libnet PyXML -y #需epel源支持 [root@node1 ~]# cd heartbeat2 [root@node1 heartbeat2]# ls heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm heartbeat-gui-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm heartbeat-ldirectord-2.1.4-12.el6.x86_64.rpm [root@node1 heartbeat2]# rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm [root@node1 heartbeat2]# yum install heartbeat-ldirectord-2.1.4-12.el6.x86_64.rpm -y #兩個節點都執行以上操作
配置heartbeat
準備配置文件
配置算法密鑰
[root@node1 ~]# openssl rand -hex 8 4d8fd6cb49d2047b [root@node1 ~]# vim /etc/ha.d/authkeys auth 2 2 sha1 4d8fd6cb49d2047b
配置主配置文件
[root@node1 ~]# grep -v "#" /etc/ha.d/ha.cf |grep -v "^$" logfile /var/log/ha-log #日志存放位置 keepalive 2 #指定心跳使用間隔時間 deadtime 30 #指定備用節點接管主節點服務資源超時時間 warntime 10 #指定心跳延遲的時間 initdead 120 #解決網絡啟動延時 udpport 694 #設置廣播通信端口 mcast eth0 225.0.25.1 694 1 0 #定義廣播地址 auto_failback on #定義當主節點恢復后,是否將服務自動切回 node node1.scholar.com #主節點 node node2.scholar.com #備用節點 ping 172.16.0.1 #仲裁設備
配置資源管理器
[root@node1 ~]# vim /etc/ha.d/haresources node1.scholar.com 192.168.1.10/32/eth0/192.168.1.10 ldirectord::/etc/ha.d/ldirectord.cf
將配置文件傳給備用節點
配置ldirectord
準備配置文件并配置
[root@node1 ~]# cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/ [root@node1 ~]# grep -v ^# /etc/ha.d/ldirectord.cf checktimeout=3 #探測超時時間 checkinterval=1 #探測間隔時間 autoreload=yes #修改配置文件,無需重啟服務即可重載 quiescent=yes #real server 宕機后從lvs列表中刪除,恢復后自動添加進列表 virtual=192.168.1.10:80 #VIP real=172.16.10.125:80 gate #real server real=172.16.10.126:80 gate #real server fallback=127.0.0.1:80 gate #如果RS節點都宕機,則啟用本地環回口地址 service=http #基于http協議探測 request=".health.html" #探測文件 receive="ok" #探測內容,判斷RS是否存活 scheduler=rr #調度算法 #persistent=600 #netmask=255.255.255.255
將配置文件傳給備用節點,并禁止各節點ldirectord開啟自啟
準備fallback文件
RS設置
#兩個RS各進行如下配置
配置內核參數
準備健康度探測文件和站點文件
測試頁面
啟動heartbeat
查看資源是否生效
高可用測試
刷新頁面
將RS2模擬宕機
[root@scholar ~]# service httpd stop
無論怎么刷新都是RS1的頁面
接下來我們把RS1也停掉
切回fallback頁面了
我們將node1停掉,看一下node2是否可以接管資源
[root@node1 ~]# service heartbeat stop
資源成功接管,以上訪問也不受任何影響,當然如果在次啟動node1資源會被再次搶過去,這里就不再演示
基于heartbeat v1 實現LVS高可用至此完成
The end
好了,基于heartbeat v1 實現LVS高可用就說到這里了,整個過程還是挺好玩的,配置過程中遇到問題可留言,下篇將會講解基于heartbeat v2的高可用集群,有興趣可以繼續關注呦。以上僅為個人學習整理,如有錯漏,大神勿噴~~~
原創文章,作者:書生,如若轉載,請注明出處:http://www.www58058.com/5120