Linux集群常見(jiàn)問(wèn)題處理方法總結(jié)
集群設(shè)計(jì)和實(shí)施是一項(xiàng)比較復(fù)雜的任務(wù),經(jīng)常會(huì)產(chǎn)生意想不到的問(wèn)題。在此,筆者將在負(fù)載平衡的部署中遇到的一些問(wèn)題總結(jié)出來(lái),希望能對(duì)大家有所幫助。
負(fù)載失衡
在一個(gè)集群內(nèi)部,如果某一個(gè)節(jié)點(diǎn)和其它節(jié)點(diǎn)相比流量不足,或者總是處于空閑狀態(tài),那么說(shuō)明集群的負(fù)載失衡了。這樣集群節(jié)點(diǎn)的計(jì)算資源沒(méi)有被充分的利用,使得負(fù)載均衡的作業(yè)分配效率降低。負(fù)載均衡算法使用不合適或系統(tǒng)配置不當(dāng)是產(chǎn)生這個(gè)問(wèn)題的典型原因。
溢出
如果有太多網(wǎng)絡(luò)流量要處理,就會(huì)導(dǎo)致包丟失和發(fā)往目的節(jié)點(diǎn)的包阻塞,這時(shí)就會(huì)導(dǎo)致溢出。溢出可能發(fā)生在主控平衡器,也可能是在各服務(wù)節(jié)點(diǎn)。由于平衡器在處理能力上往往比節(jié)點(diǎn)要大的多,很可能平衡器的流量很平穩(wěn),但是某些較弱的節(jié)點(diǎn)溢出;反過(guò)來(lái)平衡器如果超載,則會(huì)導(dǎo)致將要轉(zhuǎn)發(fā)的數(shù)據(jù)流丟失或阻塞。
存儲(chǔ)一致性
LVS通過(guò)Linux的核心數(shù)據(jù)包遞交程序,按照既定規(guī)則將進(jìn)入集群系統(tǒng)的IP包轉(zhuǎn)發(fā)到相應(yīng)的集群節(jié)點(diǎn)進(jìn)行處理。這里的處理對(duì)象是IP網(wǎng)絡(luò)數(shù)據(jù)包,而不是具體的磁盤數(shù)據(jù)。LVS假設(shè)所有的集群節(jié)點(diǎn)訪問(wèn)同一個(gè)可靠的和一致的磁盤共享系統(tǒng)。在效率和容量兼顧的分布式存儲(chǔ)環(huán)境下,要求每一個(gè)節(jié)點(diǎn)保存部分?jǐn)?shù)據(jù),而且不同結(jié)點(diǎn)的數(shù)據(jù)互相不交叉或交叉較少,難免出現(xiàn)數(shù)據(jù)存儲(chǔ)不一致的情況。
用戶要解決這類問(wèn)題一般有三種方法,一是使用共享的存儲(chǔ)服務(wù)器或存儲(chǔ)設(shè)備進(jìn)行集中存儲(chǔ);二是采用分布式文件系統(tǒng),將文件分塊存放在不同的節(jié)點(diǎn)磁盤上;三是通過(guò)人工的手段對(duì)訪問(wèn)數(shù)據(jù)的應(yīng)用程序進(jìn)行改寫,人為地設(shè)定程序的數(shù)據(jù)訪問(wèn)策略,在應(yīng)用層實(shí)現(xiàn)分布式存儲(chǔ)。