這篇文章我們主要了解高可用集群概念及工作原理,以及高可用集群的邏輯架構(gòu)等。
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比興安網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式興安網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋興安地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。
ll 本文導(dǎo)航
· 什么是高可用集群?
· 高可用集群有哪些特點(diǎn)?
· 高可用集群的邏輯架構(gòu)
· 高可用集群的解決方案
· 高可用集群的工作模型
ll 要求
掌握高可用集群的基礎(chǔ)原理與邏輯架構(gòu)。
什么是高可用集群?
所謂高可用集群,即當(dāng)前服務(wù)器出現(xiàn)故障時(shí),可以將該服務(wù)器中的服務(wù)、資源、IP等轉(zhuǎn)移到另外一臺(tái)服務(wù)器上,從而滿足業(yè)務(wù)的持續(xù)性;這兩臺(tái)或多臺(tái)服務(wù)器構(gòu)成了服務(wù)器高可用集群。
對(duì)于客戶端來說,集群就像是一臺(tái)服務(wù)器,因?yàn)榧哼\(yùn)行的是同一種服務(wù),即使其中有的服務(wù)器宕機(jī)或無法通信時(shí),也不會(huì)對(duì)業(yè)務(wù)造成影響。
高可用集群有哪些特點(diǎn)?
一、高可用服務(wù)
集群最大的目的和作用就是實(shí)現(xiàn)服務(wù)的高可用性,其最終目的是保證業(yè)務(wù)不會(huì)因?yàn)榫€路、硬件、軟件故障而導(dǎo)致的服務(wù)不可用。
二、度量標(biāo)準(zhǔn)(服務(wù)可用性)
由系統(tǒng)可靠性(Availability)和可維護(hù)性(maintainabilit)來度量
計(jì)算方式:HA=MTTF(平均無故障事件)/(MTTF+MTTR(平均修復(fù)事件))*100%
99% 全年服務(wù)中斷時(shí)間不超過4天
99.9% 全年服務(wù)中斷時(shí)間不超過10個(gè)小時(shí)
99.99% 全年服務(wù)中斷時(shí)間不超過1個(gè)小時(shí)
99.999% 全年服務(wù)中斷時(shí)間不超過6分鐘
三、集群節(jié)點(diǎn)
集群存在所有主機(jī)都稱為節(jié)點(diǎn),每HA集群最低要求需有2個(gè)節(jié)點(diǎn);正常來說,節(jié)點(diǎn)數(shù)最好為奇數(shù)。在生產(chǎn)環(huán)境中,HA集群的節(jié)點(diǎn)數(shù)至少為3個(gè),可以降低發(fā)生腦裂的概率。
四、集群服務(wù)與資源
集群服務(wù)通常包括多個(gè)資源,多個(gè)資源組成某種集群服務(wù)。如MySQL高可用服務(wù),其資源包括vip、mysqld、共享存儲(chǔ)等。對(duì)于集群服務(wù)的管理,實(shí)際上就是對(duì)資源的管理。
五、腦裂、資源爭(zhēng)用、資源隔離
腦裂:因某種特殊原因造成集群分裂成兩個(gè)小集群,而這兩個(gè)小集群互相不能正常通信,此時(shí),就會(huì)發(fā)生鬧裂(Brain Split)現(xiàn)象。
資源爭(zhēng)用:當(dāng)一個(gè)集群中因特殊情況分裂成兩個(gè)小集群,且這兩個(gè)集群都不能通信時(shí),這時(shí)可能會(huì)造成資源爭(zhēng)用的情況;分裂情況發(fā)生后,如果沒有及時(shí)的決策,那么可能會(huì)因?yàn)閮蓚€(gè)小集群同時(shí)使用一個(gè)文件系統(tǒng),而造成后端共享存儲(chǔ)中文件損壞,甚至造成整個(gè)文件系統(tǒng)的崩潰。顯然,這種情況是不允許發(fā)生的。
資源隔離:主要為了解決資源爭(zhēng)用的問題。資源隔離分為節(jié)點(diǎn)級(jí)別隔離和資源級(jí)別隔離。所謂節(jié)點(diǎn)級(jí)別隔離指當(dāng)集群發(fā)生分裂時(shí),即發(fā)生腦裂現(xiàn)象后,通過STONITH機(jī)制將資源隔離,并通過仲裁機(jī)制將分裂的票數(shù)不足的集群退出集群。STONITH指通過硬件設(shè)備,使得退出的主機(jī)重啟或關(guān)機(jī),或者通過交換機(jī)阻斷退出的集群向外通信和資源通信的能力。
資源隔離的解決方案:
1、當(dāng)集群分裂成兩個(gè)小集群時(shí)會(huì)發(fā)生資源爭(zhēng)用的情況,為避免爭(zhēng)用后端存儲(chǔ)系統(tǒng)而造成災(zāi)難性的系
統(tǒng)崩潰,集群系統(tǒng)引入了投票機(jī)制,只有擁有半數(shù)以上合法票數(shù)的集群才能存活,否則就推出集群
系統(tǒng)。
2、當(dāng)集群為偶數(shù)時(shí),如果分裂,兩邊可能都掌握相等的票數(shù);因此,集群系統(tǒng)不應(yīng)該為偶數(shù),如果
是偶數(shù)則需要一個(gè)額外的ping節(jié)點(diǎn)參與投票。
3、票數(shù)不足的集群退出集群服務(wù)后,為了保證它不會(huì)爭(zhēng)用資源需要STONITH機(jī)制來進(jìn)行資源隔離。
所以,為了防止腦裂,集群節(jié)點(diǎn)數(shù)一般為奇數(shù),就算集群分裂,也不可能使得兩個(gè)集群的票數(shù)相等。
高可用集群的邏輯架構(gòu)
高可用集群的解決方案
一、基于【CentOS | RHEL】5:
1、自帶: RHCS(cman+rgmanager)
2、選用第三方:corosync+pacemaker, heartbeat(v1或v2), keepalived
二、基于【CentOS | RHEL】6:
1、RHCS(cman+rgmanager)
2、corosync+rgmanager
3、cman+pacemaker
4、heartbeat v3 + pacemaker:6.4之前
5、keepalived:6.4之后
高可用集群的工作模型
A/P:兩個(gè)節(jié)點(diǎn),工作于主備模型;
N-M: N>M,N個(gè)節(jié)點(diǎn),M個(gè)服務(wù),活動(dòng)節(jié)點(diǎn)為N,備用節(jié)點(diǎn)為N-M;
N-N:N個(gè)節(jié)點(diǎn),N個(gè)服務(wù);
A/A:雙主模型:兩個(gè)節(jié)點(diǎn)都是活動(dòng)的;
資源轉(zhuǎn)移的方式:
rgmanager:failover domain(故障切換域), priority(優(yōu)先級(jí))
failover domain: 故障轉(zhuǎn)移域,設(shè)定一個(gè)資源只能在哪些主機(jī)上面轉(zhuǎn)移
priority: 設(shè)定,在一個(gè)轉(zhuǎn)移域中,哪些主機(jī)優(yōu)先被轉(zhuǎn)移資源
pacemaker:
資源黏性:如果兩個(gè)節(jié)點(diǎn)傾向性位置約束一致,資源對(duì)哪個(gè)節(jié)點(diǎn)粘性為正值,則留在哪個(gè)節(jié)點(diǎn)。
資源約束(3種類型):
位置約束:資源更傾向于哪個(gè)節(jié)點(diǎn)上;
inf: 無窮大
n: 傾向于運(yùn)行在某節(jié)點(diǎn)
-n: 傾向于離開某節(jié)點(diǎn)
-inf: 負(fù)無窮
排列約束:資源運(yùn)行在同一節(jié)點(diǎn)的傾向性;
inf: 兩者永遠(yuǎn)在一起
-inf: 兩者永遠(yuǎn)不再一起
順序約束:資源啟動(dòng)次序及關(guān)閉次序;
例子:如何讓web service中的三個(gè)資源:vip、httpd及filesystem運(yùn)行于同一節(jié)點(diǎn)上?
1、排列約束;說明三個(gè)在一起可能性inf
2、資源組(resource group);三個(gè)資源定義在一個(gè)組內(nèi),然后這個(gè)組決定在某一個(gè)節(jié)點(diǎn)上啟動(dòng)
3、定義順序約束,保證啟動(dòng)順序,vip–filesystem–httpd
對(duì)稱性與非對(duì)稱性:
對(duì)稱性: 默認(rèn)所有節(jié)點(diǎn)都能轉(zhuǎn)移資源。
非對(duì)稱性; 有些節(jié)點(diǎn)不能轉(zhuǎn)移資源。
如果節(jié)點(diǎn)不再成為集群節(jié)點(diǎn)成員時(shí),如何處理運(yùn)行于當(dāng)前節(jié)點(diǎn)的資源:
stoped: 直接停止服務(wù)
ignore:忽略,以前運(yùn)行什么服務(wù)現(xiàn)在還運(yùn)行什么。
freeze: 事先建立的連接,接續(xù)保持,不再接收新的請(qǐng)求。
suicide: kill掉服務(wù)。
一個(gè)資源剛配置完成時(shí),是否啟動(dòng)?
target-role: 目標(biāo)角色,可以為啟動(dòng),也可以為不啟動(dòng)。
資源代理類型(RA):
heartbeat legacy: 傳統(tǒng)類型
LSB: /etc/rc.d/init.d/ 下面的服務(wù)腳本
OCF:
STONITH: 專門用來實(shí)現(xiàn)資源隔離的
資源類型:
primitive, native : 主資源,只能運(yùn)行于一個(gè)節(jié)點(diǎn)。
group: 組資源
clone: 克隆資源,所有節(jié)點(diǎn)都運(yùn)行的資源,首先是主資源。
通常為STONITH資源, Cluster filesystem, 分布式鎖
1) 最多運(yùn)行的最大數(shù)。 總clone數(shù)
2) 每一個(gè)節(jié)點(diǎn)上最多運(yùn)行幾個(gè)。
master/slave: 主從資源內(nèi)容,只能克隆兩份,主的能讀能寫,從的不能做任何操作