什麼是高可用集羣html
高可用集羣是指一組經過硬件和軟件鏈接起來的獨立計算機,它們在用戶面前表現爲一個單一系統,在這樣的一組計算機系統內部的一個或者多個節點中止工做,服務會從故障節點切換到正常工做的節點上運行,不會引發服務中斷。從這個定義能夠看出,集羣必須檢測節點和服務什麼時候失效,什麼時候恢復爲可用。這個任務一般由一組被稱爲「心跳」的代碼完成。在Linux-HA裏這個功能由一個叫作heartbeat的程序完成。node
Heartbeat簡介linux
Heartbeat是Linux-HA工程的一個組件,自1999年開始到如今,發佈了衆多版本,是目前開源Linux-HA項目最成功的一個例子,在行業內獲得了普遍的應用,這裏分析的是2007年1月18日發佈的版本2.0.8。sql
隨着Linux在關鍵行業應用的逐漸增多,它必將提供一些原來由IBM和SUN這樣的大型商業公司所提供的服務,這些商業公司所提供的服務都有一個關鍵特性,就是高可用集羣。apache
Heartbeat 工做原理vim
heartbeat (Linux-HA)的工做原理:heartbeat最核心的包括兩個部分,心跳監測部分和資源接管部分,心跳監測能夠經過網絡鏈路和串口進行,並且支持冗 餘鏈路,它們之間相互發送報文來告訴對方本身當前的狀態,若是在指定的時間內未收到對方發送的報文,那麼就認爲對方失效,這時需啓動資源接管模塊來接管運 行在對方主機上的資源或者服務。瀏覽器
--------------------------以上部分截取自百度百科--------------------------bash
演示環境:服務器
CentOS6.5:網絡
lvs1 lvs01.ssc.com eth0 10.19.166.197
lvs2 lvs02.ssc.com eth0 10.19.166.198
VIP信息:10.19.166.20
注意:主機名要一致
請 uname -n //查看本身環境的主機名,我這裏的主機名lvs01.ssc.com,lvs02.ssc.com
關閉:
selinux disabled
iptables off
包組與類庫:
Compatibility libraries
Development tools
Server Platform Development
注意:請提早安裝好這些包和庫(減小後面安裝rpm包出現各類問題)
一、修改本機的hostname, # vi /etc/sysconfig/network 以下圖:
修改 lvs1,lvs2主機的hosts,# vim /etc/hosts,以下圖:
注:裏面依次填入 IP,主機名,主機名短格式名稱
對ping下短格式名稱是否能ping通
二、利用ssh密鑰打通兩臺主機的連接,作爲兩主機的互信機制
1)生成ssh密鑰
2)把 lvs1 的公鑰copy到 lvs2 ,把lvs2的公鑰copy到lvs1,下圖拿lvs1舉例,總之就是雙方互通;
測試是否打通
3)同步兩臺節點服務器的系統時間(注:系統時間必須一致)(兩臺節點服務器都要設置)
沒有ntpdate的,請先安裝ntpdate,安裝方式爲: # yum install tnpdate -y
同步網絡上的時間服務器,如國家受權中心服務器IP:210.72.145.44(注意:不過總是同步報錯)
因此我這裏用的是上海交大的網絡中心NTP服務器的地址,202.120.2.101 (已測可用)
在crontab 裏添加一條每五分鐘自動執行的任務,保證兩臺服務器的時間與網絡時間一致,這點很重要
三、安裝heartbeat(我這裏的包,最後放在附件打包給你們,包是馬哥作的,請支持原做者,如需更多學習資料,請報名馬哥教育)
注:這裏只演示lvs1這臺服務器,lvs2同理,只是把lvs1這些包,拷過去安裝就行;
這裏把我heartbeat rpm包,已經分別放在了兩臺測試服務器的 /opt目錄下
1)安裝帶有libnet的epel源(這個源是我在網上找的,一併打包給各位)
2)yum 安裝相關依賴包
3)安裝heartbeat rpm包
四、組播IP地址介紹,摘自馬哥文檔
組播IP地址用於標識一個IP組播組。IANA(internet assigned number authority)把D類地址空間分配給IP組播,其範圍是從224.0.0.0到239.255.255.255。以下圖所示(二進制表示),IP組播地址前四位均爲1110八位組⑴ 八位組⑵ 八位組⑶ 八位組⑷1110
XXXX XXXXXXXX XXXXXXXX XXXXXXXX組播組能夠是永久的也能夠是臨時的。組播組地址中,有一部分由官方分配的,稱爲永久組播組。永久組播組保持不變的是它的ip地址,組中的成員構成能夠發生變化。永久組播組中成員的數量均可以是任意的,甚至能夠爲零。那些沒有保留下來供永久組播組使用的ip組播地址,能夠被臨時組播組利用。
224.0.0.0~224.0.0.255爲預留的組播地址(永久組地址),地址224.0.0.0保留不作分配,其它地址供路由協議使用。
224.0.1.0~238.255.255.255爲用戶可用的組播地址(臨時組地址),全網範圍內有效。
239.0.0.0~239.255.255.255爲本地管理組播地址,僅在特定的本地範圍內有效。經常使用的預留組播地址列表以下:
224.0.0.0 基準地址(保留)
224.0.0.1 全部主機的地址
224.0.0.2 全部組播路由器的地址
224.0.0.3 不分配
224.0.0.4dvmrp(Distance Vector Multicast Routing Protocol,距離矢量組播路由協議)路由器
224.0.0.5 ospf(Open Shortest Path First,開放最短路徑優先)路由器
224.0.0.6 ospf dr(Designated Router,指定路由器)
224.0.0.7 st (Shared Tree,共享樹)路由器
224.0.0.8 st主機
224.0.0.9 rip-2路由器
224.0.0.10 Eigrp(Enhanced Interior Gateway Routing Protocol,加強網關內部路由線路協議)路由器 224.0.0.11 活動代理
224.0.0.12 dhcp服務器/中繼代理
224.0.0.13 全部pim (Protocol Independent Multicast,協議無關組播)路由器
224.0.0.14 rsvp (Resource Reservation Protocol,資源預留協議)封裝
224.0.0.15 全部cbt 路由器
224.0.0.16 指定sbm(Subnetwork Bandwidth Management,子網帶寬管理)
224.0.0.17 全部sbms
224.0.0.18 vrrp(Virtual Router Redundancy Protocol,虛擬路由器冗餘協議)
239.255.255.255 SSDP協議使用
五、查看heartbeat默認端口(注此端口是IANA分給heartbeat固定端口)
heartbeat v1的配置(修改這按個文件的配置信息):
主配置文件:ha.cf
認證密鑰:authkey,其權限必須爲組合其它無權訪問;
用於資源的文件:haresources
1)拷貝文件到/etc/ha.d/目錄中
2)修改 authkeys 權限,# chmod 600 authkeys ,不然heartbeat沒法啓動
3)修改配置文件 ha.cf,我這裏只啓用這幾項,並作了修改;
相關配置參數的講解(版權,馬哥) logfile /var/log/ha-log #指名heartbaet的日誌存放位置 #mcast eth0 225.100.90.101 694 1 0 #採用網卡eth0的Udp多播來組織心跳,通常在備用節點不止一臺時使用。Bcast、ucast和mcast分別表明廣播、單播和多播,是組織心跳的三種方式,任選其一便可。 auto_failback on #用來定義當主節點恢復後,是否將服務自動切回,heartbeat的兩臺主機分別爲主節點和備份節點。主節點在正常狀況下佔用資源並運行全部的服務,遇到故障時把資源交給備份節點並由備份節點運行服務。在該選項設爲on的狀況下,一旦主節點恢復運行,則自動獲取資源並取代備份節點,若是該選項設置爲off,那麼當主節點恢復後,將變爲備份節點,而原來的備份節點成爲主節點 node lvs01.ssc.com #主節點主機名,能夠經過命令「uname –n」查看。 node lvs02.ssc.com #備用節點主機名 ping 10.19.166.1 #選擇ping的節點,ping 節點選擇的越好,HA集羣就越強壯,能夠選擇固定的路由器做爲ping節點,可是最好不要選擇集羣中的成員做爲ping節點,ping節點僅僅用來測試網絡鏈接
4)修改authkeys配置
注:這裏的加密方式是隨機的。(選用的方式和使用的方式必須保持一致)
# openssl rand -hex 8 //生成8位密鑰,如上圖所示
5)修改 haresources 文件
lvs01.ssc.com //集羣節點
10.19.166.20/31/eth0/10.19.255.255 //VIP地址/掩碼位數/網卡/
httpd //apache啓動程序,如未安裝請yum install httpd -y 安裝
6)拷貝lvs1 上的 ha.cf haresources authkeys 到lvs2上的/etc/ha.d/目錄中
7)在apache 默認路徑建立頁面測試文件 index.html內容隨便寫,啓動httpd服務,curl測試網頁是否可以訪問成功; (注:lvs1,lvs2 兩臺服務器都要設置),測試完成後,手動中止httpd服務(必須中止)。
8)啓動heartbeat服務,(lvs2主機也啓動)
查看啓動狀態:
同時查看80端口也已經自動啓動
9)打開瀏覽器測試網頁
咱們接下來中止 lvs1的heartbeat後,咱們看到已經自動轉到lvs2
OK,就是這樣~