為了保證出現(xiàn)部分硬件損壞時(shí),計(jì)算任務(wù)能夠繼續(xù)正常運(yùn)行。在設(shè)計(jì)系統(tǒng)時(shí),會通過冗余來避免部分故障的風(fēng)險(xiǎn),也就是通過增加更多服務(wù)器來達(dá)到計(jì)算高可用。
計(jì)算高可用架構(gòu)的設(shè)計(jì)復(fù)雜度主要體現(xiàn)在任務(wù)管理上,即當(dāng)任務(wù)在某臺服務(wù)器上執(zhí)行失敗后,如何將任務(wù)重新分配到新的服務(wù)器上進(jìn)行執(zhí)行。
常見的計(jì)算高可用架構(gòu)有:主備、主從和集群(對稱集群和非對稱集群)。
主備架構(gòu)是計(jì)算高可用最簡單的架構(gòu),由一臺主機(jī)、一臺備機(jī)和一臺任務(wù)分配器組成。正常情況下,主機(jī)執(zhí)行所有計(jì)算任務(wù),備機(jī)不做任何業(yè)務(wù)處理;當(dāng)主機(jī)故障不會恢復(fù)時(shí),需要人工操作,將備機(jī)升為主機(jī),然后讓任務(wù)分配器將任務(wù)發(fā)送給新的主機(jī);同時(shí),為了繼續(xù)保持主備架構(gòu),需要人工增加新的機(jī)器為備機(jī)。
這中類型架構(gòu)適合內(nèi)部管理系統(tǒng)、后臺管理等人數(shù)不多、使用頻率不高的業(yè)務(wù),不適合在線的業(yè)務(wù)。
主從架構(gòu),由一臺主機(jī)、一臺從機(jī)和一臺任務(wù)分配器組成。正常情況下,任務(wù)分配器需要將任務(wù)進(jìn)行分類,確定哪些任務(wù)可以發(fā)送給主機(jī)執(zhí)行,哪些任務(wù)可以發(fā)送給從機(jī)執(zhí)行。當(dāng)主機(jī)發(fā)生故障不能恢復(fù)時(shí),需要進(jìn)行人工將從機(jī)升級為主機(jī),增加新的機(jī)器作為從機(jī),新的從機(jī)準(zhǔn)備就緒后,任務(wù)分配器繼續(xù)按照原有的設(shè)計(jì)策略分配任務(wù)。
對稱集群架構(gòu)(也稱為負(fù)載均衡集群),由一臺任務(wù)分配器和多個(gè)服務(wù)器組成,本質(zhì)上集群中每個(gè)服務(wù)器的角色都是一樣的,都可以執(zhí)行所有任務(wù);正常情況下,任務(wù)分配器采取某種策略將計(jì)算任務(wù)分配給集群中的不同服務(wù)器;當(dāng)集群中的某臺服務(wù)器發(fā)生故障后,任務(wù)分配器不再將任務(wù)分配給它,而是將任務(wù)分配給其他服務(wù)器執(zhí)行。
非對稱集群架構(gòu),即集群中的服務(wù)器分為多個(gè)不同的角色,不同的角色執(zhí)行不同的任務(wù)。集群會通過某種方式來區(qū)分不同服務(wù)器的角色,任務(wù)分配器將不同任務(wù)發(fā)送給不同服務(wù)器,當(dāng)指定類型的服務(wù)器故障時(shí),需要重新分配角色。