楊亞平
(酒泉鋼鐵<集團(tuán)>有限責(zé)任公司 甘肅 嘉峪關(guān) 735100)
某大型制造企業(yè)(以下簡稱“公司”)是國家“一五”時(shí)期規(guī)劃建設(shè)的鋼鐵聯(lián)合企業(yè),經(jīng)過數(shù)十年的建設(shè)發(fā)展,現(xiàn)已形成多個(gè)產(chǎn)業(yè)板塊協(xié)同發(fā)展的新格局。而隨著信息技術(shù)的迅速發(fā)展,企業(yè)信息化建設(shè)體系也相對成熟,由信息化所帶來的企業(yè)管理模式的變革與管理效率的提升也越來越依賴于信息系統(tǒng)。
近年來,伴隨著企業(yè)級核心業(yè)務(wù)系統(tǒng)的日益完善和逐步深入,協(xié)同辦公系統(tǒng)作為公司日常辦公工作的統(tǒng)一入口,是各部門間協(xié)同工作的展示平臺,承擔(dān)著公司信息系統(tǒng)的最大用戶群體。它整合了企業(yè)內(nèi)部信息資源,解決了企業(yè)信息孤島、業(yè)務(wù)深井等問題,提高了企業(yè)工作效率,因此協(xié)同辦公平臺在公司中的重要性日益凸顯出來。
早期協(xié)同辦公平臺建設(shè)初期,系統(tǒng)架構(gòu)設(shè)計(jì)采用了業(yè)界比較成熟的負(fù)載均衡集群部署方案,架構(gòu)圖見圖1,即在整個(gè)集群系統(tǒng)的最前端放置1臺nginx負(fù)載均衡服務(wù)器,它的主要作用是將用戶端提交的請求根據(jù)設(shè)定好的算法逐個(gè)分發(fā)到應(yīng)用節(jié)點(diǎn)上進(jìn)行處理。后端部署3臺相同環(huán)境的應(yīng)用服務(wù)器,用于響應(yīng)由nginx分發(fā)過來的用戶請求。這種設(shè)計(jì)思路相比最早的單節(jié)點(diǎn)方式在架構(gòu)穩(wěn)定性方面有了明顯的提升,在一定程度上也考慮到了影響系統(tǒng)訪問速度和穩(wěn)定性的制約因素并進(jìn)行了改進(jìn)。
圖1 早期協(xié)同辦公平臺設(shè)計(jì)架構(gòu)
不過,在平臺實(shí)際搭建過程中,硬件服務(wù)器緊缺帶來的阻礙還是未能避免。一方面,項(xiàng)目建設(shè)有嚴(yán)格的工期要求,絕對不能影響項(xiàng)目的正常推進(jìn);另一方面,還必須得保證集群架構(gòu)的搭建,需要考慮如何才能兼顧好這兩方面。
通過對以上兩方面的綜合考量,將方案在原設(shè)計(jì)基礎(chǔ)上進(jìn)行了調(diào)整,采用了在最大可能滿足硬件資源的情況下對集群環(huán)境進(jìn)行壓縮的臨時(shí)性過渡方案。具體是將原設(shè)計(jì)中的nginx與應(yīng)用節(jié)點(diǎn)1先暫時(shí)安裝部署在同一臺服務(wù)器上,這樣可以先進(jìn)行其他部署和調(diào)試工作,盡量對進(jìn)度不產(chǎn)生影響。待系統(tǒng)具備正式上線條件后,再將nginx負(fù)載均衡遷移分離出來單獨(dú)運(yùn)行。但是直到系統(tǒng)正式上線,硬件服務(wù)器短缺的問題也沒有得到解決,因此nginx負(fù)載均衡遷移工作始終未能成行。后期當(dāng)硬件服務(wù)器資源能正常提供時(shí),又因?yàn)槠渌驅(qū)е逻@個(gè)歷史遺留問題被擱置起來,這種系統(tǒng)架構(gòu)也就一直沿用下來了,見圖2。
圖2 早期協(xié)同辦公平臺建設(shè)架構(gòu)
在平臺實(shí)際運(yùn)行的過程中,經(jīng)常暴露出對用戶的請求響應(yīng)不及時(shí)和應(yīng)用節(jié)點(diǎn)1這臺服務(wù)器運(yùn)行不穩(wěn)定的問題[1]。
傳統(tǒng)架構(gòu)下的協(xié)同辦公平臺,用戶訪問時(shí)首先經(jīng)過負(fù)載均衡服務(wù)器的nginx,nginx再根據(jù)配置的算法將請求轉(zhuǎn)發(fā)到后端的應(yīng)用節(jié)點(diǎn)上,而nginx采用了ip_hash算法來實(shí)現(xiàn)負(fù)載均衡,這種算法是基于IP地址來判斷請求客戶端,缺點(diǎn)是來自同一客戶端的請求被固定到同一臺服務(wù)器,會(huì)導(dǎo)致負(fù)載不均衡,影響系統(tǒng)正常訪問。
綜上分析,出于對協(xié)同辦公平臺重要性和穩(wěn)定性的考慮,公司決定對平臺整體進(jìn)行升級改造。通過優(yōu)化升級搭建高性能負(fù)載均衡集群,使協(xié)同辦公平臺存在的問題能得以改善和解決。
由圖2可知,早期集群架構(gòu)下的協(xié)同辦公平臺最大的不穩(wěn)定因素源于最前端nginx負(fù)載均衡服務(wù)器,一旦這臺服務(wù)器宕機(jī)或故障,不論后端應(yīng)用節(jié)點(diǎn)是否正常,整個(gè)集群將陷入癱瘓[2],直接影響用戶訪問協(xié)同辦公平臺。另外,應(yīng)用節(jié)點(diǎn)1與nginx負(fù)載均衡共享同一臺服務(wù)器資源,兩者之間互相干擾和影響,常常導(dǎo)致服務(wù)器負(fù)載居高不下。那么如何解決負(fù)載均衡分發(fā)器單點(diǎn)故障的風(fēng)險(xiǎn)和彌補(bǔ)架構(gòu)的缺陷呢?因此,升級優(yōu)化工作就從以下幾方面著手開展。
為了應(yīng)對日益增長的訪問量,首先將原架構(gòu)中應(yīng)用節(jié)點(diǎn)1與nginx節(jié)點(diǎn)拆分后單獨(dú)部署,這樣就避免了兩者之間的干擾影響和資源爭用。其次將后端應(yīng)用節(jié)點(diǎn)數(shù)量由原先的3臺擴(kuò)展至6臺,繼續(xù)由nginx統(tǒng)一來調(diào)度分發(fā)請求,實(shí)現(xiàn)多個(gè)后端應(yīng)用節(jié)點(diǎn)共同分擔(dān)和緩解高并發(fā)訪問請求的問題,減輕了整個(gè)平臺的負(fù)擔(dān),保證了業(yè)務(wù)的連續(xù)性。
在集群的最前端新增加一臺負(fù)載均衡服務(wù)器,與原有nginx負(fù)載均衡服務(wù)器形成高可用主備模式。正常情況下客戶端均通過vip地址訪問,一旦master服務(wù)器出現(xiàn)故障,backup服務(wù)器就會(huì)自動(dòng)接管IP和服務(wù)資源繼續(xù)進(jìn)行請求分發(fā)工作,直到主服務(wù)器故障修復(fù)[3]。優(yōu)化升級后的協(xié)同辦公平臺架構(gòu)圖見圖3。
圖3 優(yōu)化后的高可用負(fù)載均衡架構(gòu)
那么,集群是如何判斷master服務(wù)器掛掉了呢?這就需要用到開源軟件keepalived來監(jiān)測nginx服務(wù)器的狀態(tài)。
在集群最前端的兩臺nginx服務(wù)器上分別安裝keepalived軟件,keepalived會(huì)定期向集群中服務(wù)器發(fā)送icmp包,一旦master服務(wù)器宕機(jī)或出現(xiàn)故障,keepalived監(jiān)測到后立即使用backup服務(wù)器代替master服務(wù)器的工作,并將master nginx服務(wù)器從集群中剔除[4]。當(dāng)master服務(wù)器正常后keepalived會(huì)自動(dòng)將服務(wù)器加入集群中,而剔除和加入集群的動(dòng)作完全不需要人工進(jìn)行干預(yù),因此利用keepalived監(jiān)測nginx狀態(tài)就解決了分發(fā)服務(wù)器單點(diǎn)故障的風(fēng)險(xiǎn)。
編譯安裝nginx啟用擴(kuò)展功能模塊nginx-stickymodule,可以修復(fù)nginx ip_hash算法帶來的負(fù)載失衡的問題。與ip_hash不同之處在于,sticky功能是基于cookie來判斷客戶端,實(shí)現(xiàn)了同一個(gè)客戶端請求在同一臺服務(wù)器上的負(fù)載均衡作用,同時(shí)也避免了來自同一局域網(wǎng)的客戶端導(dǎo)致負(fù)載失衡和session丟失的情況,見圖4。
圖4 nginx sticky配置
本文通過對早期企業(yè)協(xié)同辦公平臺運(yùn)行過程中存在的問題進(jìn)行剖析,針對協(xié)同辦公平臺整體架構(gòu)的缺陷進(jìn)行優(yōu)化改造,主要改善了平臺在高并發(fā)時(shí)段響應(yīng)緩慢的問題,解決了平臺的性能瓶頸,提升了平臺運(yùn)行處理能力,同時(shí)也降低了系統(tǒng)運(yùn)維風(fēng)險(xiǎn),實(shí)現(xiàn)了向用戶提供不間斷信息化服務(wù),從而更好地為企業(yè)信息化服務(wù)的目標(biāo)。
基于開源平臺高性能負(fù)載均衡集群架構(gòu)的實(shí)現(xiàn),是公司首次在開源技術(shù)領(lǐng)域的探索與理論實(shí)踐,開闊了技術(shù)人員的視野,為公司其他開源信息系統(tǒng)的優(yōu)化改造積累了豐富的經(jīng)驗(yàn),同時(shí)也將公司信息化水平推向了新的高度[5]。
另外,本次主要針對面向平臺的負(fù)載均衡層和應(yīng)用層進(jìn)行了優(yōu)化,后端數(shù)據(jù)層仍存在繼續(xù)改造提升的空間,后續(xù)可以根據(jù)協(xié)同辦公平臺運(yùn)行情況,結(jié)合數(shù)據(jù)庫技術(shù),以搭建數(shù)據(jù)庫集群為研究方向,進(jìn)一步提高系統(tǒng)訪問速度。