韓川疆
摘 要:隨著高校信息化建設的不斷深入,對作為高校核心業(yè)務之一的教務系統(tǒng)的要求越來越高。本文描述了西南石油大學對教務系統(tǒng)服務器架構(gòu)兩次調(diào)整過程的思路、方法和結(jié)果。通過調(diào)整很好地滿足了學校各個層面人員對高校教務系統(tǒng)的需求。在此思路的基礎(chǔ)上,提出了高校信息化系統(tǒng)統(tǒng)一架構(gòu)的設想,并說明了在設計實施此架構(gòu)時需要考慮的一些問題。
關(guān)鍵詞:信息化;大數(shù)據(jù);教務系統(tǒng)
中圖分類號:TP393 文獻標志碼:A 文章編號:1673-8454(2015)17-0008-05
隨著信息化建設的不斷推進,各個高校都有比較多的信息化相關(guān)子系統(tǒng),且基本都建立了統(tǒng)一身份認證平臺,完成了對各個業(yè)務系統(tǒng)的數(shù)據(jù)抽取和整合。筆者走訪的北京、上海和成都等高校,發(fā)現(xiàn)這些信息化子系統(tǒng)都各自獨立,獨占一臺或多臺物理(或邏輯)服務器,這體現(xiàn)了高校在信息化統(tǒng)一架構(gòu)和資源集中管理方面意識相對比較薄弱。本文以西南石油大學教務系統(tǒng)服務器架構(gòu)調(diào)整為例,試圖利用現(xiàn)今互聯(lián)網(wǎng)企業(yè)在服務器運維方面的成熟技術(shù),提出整個高校信息化整體架構(gòu)藍圖,在信息化統(tǒng)一架構(gòu)和資源集中管理方面進行了一些探索。
一、教務系統(tǒng)服務器架構(gòu)調(diào)整及經(jīng)驗
1.教務系統(tǒng)服務器架構(gòu)的第1次調(diào)整分析
西南石油大學教務系統(tǒng)從2002年上線至今已到第十三個年頭,到目前為止經(jīng)歷了兩次服務器架構(gòu)的調(diào)整,在教務系統(tǒng)軟件開發(fā)商的配合下,取得了很好的效果。
學校教務系統(tǒng)上線初期采用兩臺Sun v880服務器,構(gòu)建了兩套完整的應用系統(tǒng),數(shù)據(jù)庫則建立在其中一臺服務器上。該系統(tǒng)提供給用戶兩個登錄點由用戶自行選擇登錄。
系統(tǒng)運行四年后,一方面由于高校的進一步擴招,在校生人數(shù)成倍遞增,導致學生選課時服務器資源耗盡;另一方面,由于服務器常年不間斷運行,電子元件老化也影響了系統(tǒng)運行效率。為此,學校采用如圖1所示架構(gòu),對服務器架構(gòu)進行了第一次調(diào)整。調(diào)整內(nèi)容有:
(1)前端采用Apache配合Resin集群的方式做了負載均衡,后端數(shù)據(jù)庫采用雙機熱備的方式,后端存儲和數(shù)據(jù)庫服務器采用DAS(背板直連)方式連接,數(shù)據(jù)則存放在后端存儲上,存儲使用的是FC(光纖)硬盤。
(2)增加了監(jiān)控服務器,用于收集服務器運行狀態(tài)數(shù)據(jù)。還可以通過設定相關(guān)服務器參數(shù)(CPU、內(nèi)存、流量等)閾值,在無人職守的情況下,將預警數(shù)據(jù)實時發(fā)送到管理員郵箱,使管理員可以第一時間趕赴現(xiàn)場處理相關(guān)問題。
2.教務系統(tǒng)服務器架構(gòu)的第2次調(diào)整分析
在架構(gòu)調(diào)整之后幾年,運行狀況一直比較穩(wěn)定,但是隨著時間的推移,從監(jiān)控服務器所收集的數(shù)據(jù)發(fā)現(xiàn),當多個教學活動集中在相同的時間段上進行時,服務器響應開始變慢。通過監(jiān)控服務器收集的數(shù)據(jù),結(jié)合對故障時間點的數(shù)據(jù)庫相關(guān)分析之后,發(fā)現(xiàn)問題可能是多方面的。一是數(shù)據(jù)量,從教務系統(tǒng)上線之后,數(shù)據(jù)一直在成幾何數(shù)的遞增,其中幾張主要業(yè)務邏輯表已經(jīng)接近3000萬;二是隨著互聯(lián)網(wǎng)發(fā)展,各種移動應用采用非正規(guī)途徑獲取教務各種數(shù)據(jù),教務系統(tǒng)軟件層面并沒有相關(guān)的保護措施。三是教務系統(tǒng)軟件本身程序上還有值得優(yōu)化的地方。四是硬件老化。
因此學校決定按照圖2所示,對原有架構(gòu)進行第二次調(diào)整。
(1)前端采用高效、開源的HAProxy配合keepalived構(gòu)建高可用負載均衡集群。中間是應用服務器集群。所有前端的請求通過負載均衡集群自動分發(fā)到后端相對空閑的應用服務器上。
(2)同樣采用開源的magent配合Memcached構(gòu)建高可用的,且能自動負載均衡的數(shù)據(jù)庫緩存集群。
(3)數(shù)據(jù)庫集群。這里采用了Oracle RAC OneNode技術(shù)配置了兩個Oracle RAC服務器(每個RAC都有兩個節(jié)點),RAC-Server-1做為備庫只負責讀取操作,RAC-Server-2做為主庫負責寫入和更新操作。兩個RAC之間使用OracleDG做同步對稱復制保證數(shù)據(jù)的一致性,且同一時間兩個RAC都只有一個節(jié)點在工作。
(4)后端存儲和數(shù)據(jù)庫服務器依然采用DAS方式連接,數(shù)據(jù)則存放在后端存儲上,存儲使用的是SAS硬盤。
(5)同時,教務系統(tǒng)軟件增加數(shù)據(jù)歸檔功能,處理歷史數(shù)據(jù)。
3.調(diào)整經(jīng)驗總結(jié)
經(jīng)歷上面兩次的服務器整體架構(gòu)的調(diào)整,總結(jié)出以下幾點經(jīng)驗:
(1)教務系統(tǒng)軟件層面問題?,F(xiàn)在很多面向教育的信息系統(tǒng)開發(fā)商,在開發(fā)過程中比較功利化,基本沒有考慮到程序在高負荷高并發(fā)時的優(yōu)化。只有最終用戶遇到此類瓶頸才著手解決問題。再加上硬件先期投入也沒有考慮到架構(gòu)上的優(yōu)化,使得最終用戶遇到此類問題時措手不及。
(2)現(xiàn)在很多優(yōu)秀的國內(nèi)外互聯(lián)網(wǎng)公司,服務器運維能力和技術(shù)上已經(jīng)相當成熟。因此,高校也應該與時俱進,參考互聯(lián)網(wǎng)公司優(yōu)秀的運維案例,利用各類開源軟件,充分挖掘服務器的潛力,同時不斷完善服務器架構(gòu),提高運維能力和水平。
(3)信息系統(tǒng)數(shù)據(jù)的增長。從西南石油大學教務系統(tǒng)來看,上線13年后當主要業(yè)務邏輯表數(shù)據(jù)成幾何數(shù)遞增時,僅僅從信息系統(tǒng)程序或服務器架構(gòu)調(diào)整等方面的優(yōu)化已經(jīng)不能滿足需求。還需要根據(jù)教務系統(tǒng)數(shù)據(jù)自身的特點,進行數(shù)據(jù)歸檔操作,將已經(jīng)畢業(yè)學生的所有相關(guān)數(shù)據(jù)轉(zhuǎn)移到另外的數(shù)據(jù)庫中,信息系統(tǒng)則增加相應的對歸檔數(shù)據(jù)查詢的功能。
(4)必須要建立比較完整的服務器狀態(tài)監(jiān)控平臺,以及服務器日志分析平臺。服務器狀態(tài)監(jiān)控,不僅僅可以及早發(fā)現(xiàn)服務器異常問題及早解決,同時也為了解分析其他問題提供了詳細的數(shù)據(jù)依據(jù)。而日志分析,則為發(fā)現(xiàn)異常獲取數(shù)據(jù)、信息系統(tǒng)自身bug提供了良好的基礎(chǔ)。
(5)資源浪費問題。就教務系統(tǒng)本身而言,只有在選課、成績錄入、成績查詢等教學活動發(fā)生時才會出現(xiàn)高負荷和高并發(fā)的情況,而平常服務器資源占用非常低。
二、高校信息化統(tǒng)一架構(gòu)探索
1.統(tǒng)一架構(gòu)設想及說明
筆者設計和實施了西南石油大學教務系統(tǒng)的服務器架構(gòu),雖然經(jīng)過調(diào)整后已經(jīng)達到了很好的效果,但是如何避免服務器硬件資源的浪費,儼然成為筆者最關(guān)心的問題。
那么如果站在學校的層面,構(gòu)建一個統(tǒng)一的服務器架構(gòu)是不是能解決硬件資源浪費問題呢?答案是肯定的。但是這個架構(gòu)必須能兼容高校所有的信息化子系統(tǒng),必須能經(jīng)受得住高負載高并發(fā),必須能實時調(diào)配服務器硬件資源,必須能做大數(shù)據(jù)計算處理。因此筆者提出如圖3所示的整體架構(gòu)。
圖3的架構(gòu)只是給出了整體框架,在細節(jié)方面只有根據(jù)高校自身的需求進行定制,此外網(wǎng)絡拓撲中網(wǎng)絡冗余問題不在此架構(gòu)討論范疇內(nèi)。下面針對架構(gòu)進行相關(guān)的說明,由于所涉及的可用技術(shù)很多,在這里就不詳細展開了,只給出筆者的建議。
2.技術(shù)及設備說明
(1)本地負載均衡集群,即負載均衡層
所有的請求(內(nèi)網(wǎng)或外網(wǎng))都由該層負責響應,并分發(fā)到后端的應用集群中。對于負載均衡,筆者熟悉的硬件或軟件技術(shù)有F5和LVS、Nginx、HAProxy等。它們的性能都是非常優(yōu)異的。F5是負載均衡中抗并發(fā)能力最強的,LVS是現(xiàn)在在全世界范圍內(nèi)應用最廣的,而HAProxy這個開源的后起新秀性能非常強勁,國內(nèi)前十的互聯(lián)網(wǎng)公司基本都在使用??紤]到高校自身業(yè)務系統(tǒng)的實際情況,除了教務系統(tǒng)外不會有非常高的并發(fā)訪問。因此這里推薦采用開源的HAProxy配合Keepalived來架構(gòu),硬件方面配置兩到三臺兩路PC服務器就能承載校內(nèi)所有業(yè)務系統(tǒng)的負載均衡。
如果上線運行過程中發(fā)現(xiàn)壓力過大,可以采用下面兩種方式進行緩解:
1)使用四路PC服務器,將其配置為主節(jié)點;
2)前端增加一個硬件的負載均衡F5,將現(xiàn)有的負載均衡集群做為中間代理層。
(2)應用集群和應用緩存集群
從負載均衡層轉(zhuǎn)發(fā)的請求直接到達應用集群層中的某一個服務器節(jié)點。那為什么沒有使用圖3中應用緩存集群來分擔壓力呢?應用服務器緩存層的出現(xiàn)確實是為了緩解應用服務器的壓力,存儲已被請求過的js、images和html等文件。但是環(huán)顧一下高校的各個信息系統(tǒng),以及所提供的服務,分析一下每天的訪問情況,筆者認為沒有必要構(gòu)建這個緩存集群。如果真的需要構(gòu)建,如圖3所示,可以使用varnish作出兩個或更多的節(jié)點,此時只需要在負載均衡層HAProxy的配置中做相應的更改即可。
此外,考慮到各類信息系統(tǒng)程序運行的環(huán)境,在應用集群中需要配置至少兩種操作系統(tǒng)(Linux和Windows)的若干節(jié)點。
(3)數(shù)據(jù)緩存集群
它所實現(xiàn)的功能其實和應用緩存集群的功能類似。這里可以使用Redis或Memcached等開源軟件,構(gòu)建出高可用的數(shù)據(jù)庫緩存集群。比如西南石油大學教務系統(tǒng)使用的是magent配合Memcached來構(gòu)建的該集群,這主要是由于教務系統(tǒng)軟件已經(jīng)使用了Memcached及相關(guān)特性,因此首先要滿足程序運行環(huán)境,其次考慮高可用。最終采用magent配合Memcached構(gòu)建出能自動負載均衡的3個節(jié)點的集群。
由此,可以看出采用何種技術(shù),或者都使用,需要根據(jù)具體的信息系統(tǒng)軟件本身的情況來決定,架構(gòu)上只需要考慮高可用即可。
(4)數(shù)據(jù)庫集群
由于高校繁多的信息系統(tǒng)可能使用不同的數(shù)據(jù)庫,那么在這里就需要根據(jù)實際情況構(gòu)建多個不同類型的數(shù)據(jù)庫集群,從對西南石油大學教務系統(tǒng)進行分析調(diào)整的過程中,筆者發(fā)現(xiàn)只有當信息系統(tǒng)的訪問量和并發(fā)量高到一定程度之后,數(shù)據(jù)庫就成為了壓力集中點。因此需要注意至少配置兩個節(jié)點構(gòu)建出一主一備讀寫分離的同類數(shù)據(jù)庫節(jié)點。
(5)Oracle、MySQL和SQLSever說明
1)Oracle數(shù)據(jù)庫??梢圆捎蒙厦嬉呀?jīng)提到的西南石油大學教務系統(tǒng)優(yōu)化的方案。即采用了雙OracleRAC配置,需要應用程序配合將讀寫操作分開,兩個RAC之間使用OracleDG做同步對稱復制,它保證了兩個RAC直接數(shù)據(jù)的一致性。同時,Oracle RAC OneNode技術(shù)最大化利用服務器資源,平常兩個RAC的主節(jié)點占用比較多的硬件資源,而備用節(jié)點則占用少量硬件資源,當發(fā)生故障后,主節(jié)點釋放已占用的大量硬件資源,備用節(jié)點啟用,接手相關(guān)業(yè)務的同時也加載和主節(jié)點相當?shù)挠布Y源。
2)MySQL數(shù)據(jù)庫。由于軟件本身免費,因此使用范圍是最廣的。面對并發(fā)壓力大的情況,成熟的方案也比較多,常見的主要有下面三種:
①常規(guī)復制架構(gòu),即Master-Slaves。這里Master負責寫入和修改操作,一個或多個Slave則負責讀取操作。同時將Master同步復制到一個或多個Slave。當一個節(jié)點的Slave讀取壓力過大時,則需要考慮增加Slave節(jié)點;
②級聯(lián)復制結(jié)合架構(gòu),即Master-Master-Slaves。雙Master主要是為了避免常規(guī)復制架構(gòu)中單點寫入和修改操作可能存在故障的風險;
③MySQL數(shù)據(jù)庫切分,即MySQL Sharding。其基本思想就要把一個數(shù)據(jù)庫切分成多個部分放到不同的數(shù)據(jù)庫節(jié)點上,從而緩解單一數(shù)據(jù)庫的性能問題。因此可以通過該技術(shù)將一個大的MySQL Server切分成多個小的MySQL Server,既解了寫入性能瓶頸問題,同時也提升了整個數(shù)據(jù)庫集群的擴展性,從而解決了數(shù)據(jù)庫壓力過大的問題。
3)SQLSever數(shù)據(jù)庫。只考慮微軟提供的做法,僅僅只能做到故障轉(zhuǎn)移。簡單的說就是利用 Windows Server 故障轉(zhuǎn)移群集 (WSFC) 功能,當數(shù)據(jù)庫實例發(fā)生故障時,在其他冗余服務器上重新啟動該數(shù)據(jù)庫實例,從而提供了本地數(shù)據(jù)庫的高可用性。這就類似一主一備(或互為主備)的服務器概念,沒有負載均衡的功能。在發(fā)生數(shù)據(jù)故障轉(zhuǎn)移時,將數(shù)據(jù)庫實例由一臺服務器轉(zhuǎn)移到另一臺服務器的時間非常短暫。
(6)磁盤陣列,即數(shù)據(jù)存儲
筆者把高校的數(shù)據(jù)分為核心數(shù)據(jù)和非核心數(shù)據(jù)。其中核心數(shù)據(jù)則包含教務、財務、一卡通等主要業(yè)務系統(tǒng)數(shù)據(jù)。而非核心數(shù)據(jù),主要包括電子圖書、期刊、教學資源類、學習資源類等。這么劃分的原因是鑒于這些業(yè)務系統(tǒng)是否能中斷服務,可以臨時中斷的則劃為非核心數(shù)據(jù),反之則是核心數(shù)據(jù)。
現(xiàn)今的存儲主要可以分傳統(tǒng)存儲和分布式存儲兩種。傳統(tǒng)存儲的架構(gòu)方式主要有DAS、NAS和SAN。結(jié)合筆者對高校數(shù)據(jù)劃分以及預估的存儲容量的情況,使用NAS結(jié)合SAN才是高校存儲最好的方案,而分布式存儲技術(shù)投入和維護成本方面都遠高于傳統(tǒng)的存儲。
NAS架構(gòu)主要用于存儲非核心數(shù)據(jù),而SAN架構(gòu)則用于存儲核心數(shù)據(jù)。對于存儲的物理磁盤,筆者建議直接使用SAS硬盤。在經(jīng)費充足時,可以考慮有數(shù)據(jù)分層功能的NAS+SAN存儲,即存儲根據(jù)特定算法將數(shù)據(jù)分片,使用率高的自動遷移到SSD盤上,使用率一般的遷移到SAS盤上,使用率很低的則遷移到SATA盤上。
(7)Hadoop集群
主要是為了滿足高校在大數(shù)據(jù)方面的需求而建立。Hadoop本身是一個開源框架,同時Hadoop的高可靠性、高擴展性、高容錯性和高效性等諸多有點也是整個互聯(lián)網(wǎng)企業(yè)已經(jīng)驗證的。雖然Hadoop搭建比較簡單,但是如果要真正為高校的領(lǐng)導決策、學生學習指導、學業(yè)預警等提供參考數(shù)據(jù),前期規(guī)劃和后起運維也是必不可少的,而且后續(xù)還要有配套的相關(guān)支持分布式計算的應用程序。
(8)本地災備中心和異地災備中心
主要是出于數(shù)據(jù)層面的安全考慮。雖然可以根據(jù)實際情況的要求選擇性的建立,但是從整個架構(gòu)數(shù)據(jù)的安全性和完整性來說,這也是必須的。
(9)管理集群
通過上面的描述,不難預見對于管理人員是多么大的挑戰(zhàn),所謂工欲善其事必先利其器,建立一個完整的管理集群,提高管理人員的工作效率,提高整體運維水平是有直接影響的。
1)Monitor即監(jiān)控平臺,提供了服務器實時狀態(tài)數(shù)據(jù),為高負載高并發(fā)時服務器問題的分析提供了良好的數(shù)據(jù)參考,實時采用適當?shù)拇胧┙鉀Q出現(xiàn)的問題。同時,在無人職守的情況下可以通過電子郵件或短信等方式發(fā)出預警信息,方便運維人員能第一時間趕赴現(xiàn)場處理問題;
2)Pupput是一個開源的多平臺集中配置管理系統(tǒng)。試想服務器集群的配置如果一臺一臺去設置,會浪費多少時間和精力呢?因此在管理集群建立該系統(tǒng),可以實現(xiàn)對該架構(gòu)下所有服務器的管理系統(tǒng)配置文件、用戶、cron任務、軟件包、系統(tǒng)服務等配置信息進行管理;
3)DBAudit即數(shù)據(jù)審計平臺。數(shù)據(jù)的安全從來都不是某一方面可以完全保證的,而是需要利用多種方式結(jié)合保證。這里將數(shù)據(jù)審計納入管理集群,因為不管什么類型的數(shù)據(jù)庫,開啟數(shù)據(jù)審計后對自身性能或多或少都有一定的影響。那么開啟的時機把握,這必須由運維管理人員根據(jù)業(yè)務系統(tǒng)訪問情況來決定。同時,建議高校結(jié)合各個數(shù)據(jù)庫自身的審計功能,做一定的獨立開發(fā)構(gòu)建符合自身特點的審計平臺。而不是購買數(shù)據(jù)審計軟件,因為可以兼容所有數(shù)據(jù)庫的數(shù)據(jù)審計軟件,功能上都比較中庸;
4)LogAnalyse即日志分析,可以結(jié)合Hadoop集群,給出很多值得參考的數(shù)據(jù)。比如訪問時間熱點、訪問來源、訪問出錯點、訪問異常點等。為進一步調(diào)整架構(gòu)、發(fā)現(xiàn)業(yè)務系統(tǒng)bug等提供了良好的依據(jù)。
3.部分場景問題分析及解答
(1)應用場景一:教務系統(tǒng)如何部署?
圖3所示架構(gòu)是在圖2所示架構(gòu)的基礎(chǔ)上發(fā)展而來的,因此完全兼容教務系統(tǒng)本身,唯一需要注意的是原來采用DAS架構(gòu)直連存儲,現(xiàn)在則是采用SAM架構(gòu),對操作系統(tǒng)層面沒有太大的區(qū)別。
(2)應用場景二:沒有采用相關(guān)緩存技術(shù)的應用系統(tǒng)如何部署?
1)本地負載均衡層配置相應訪問IP地址,以及后端單節(jié)點或多節(jié)點應用服務器IP地址;
2)應用集群中該業(yè)務系統(tǒng)的一個或多個節(jié)點服務器配置直接訪問數(shù)據(jù)庫的IP地址;
3)單節(jié)點數(shù)據(jù)庫可以共用或獨立使用一個數(shù)據(jù)庫集群的服務器節(jié)點。
(3)應用場景三:學校的統(tǒng)一數(shù)據(jù)庫如何部署?
直接部署在數(shù)據(jù)庫集群上,按照實際需求分割出一個或多個節(jié)點即可。
(4)應用場景四:單個業(yè)務系統(tǒng)處于高并發(fā)時如何處理?
首先根據(jù)監(jiān)控平臺數(shù)據(jù)分析高并發(fā)后業(yè)務系統(tǒng)的瓶頸。比如瓶頸在應用層,則考慮是否需要使用應用緩存集群,以及增加應用集群中該業(yè)務系統(tǒng)的節(jié)點數(shù)量。比如瓶頸在數(shù)據(jù)層,則需要根據(jù)數(shù)據(jù)庫的類型來確定調(diào)整的方案,限于篇幅此處就不再展開。
4.需要注意的一些問題
該架構(gòu)整合了學校所有硬件資源,能滿足各類型信息系統(tǒng)的要求,但是還需要注意以下幾個問題:
(1)整個架構(gòu)都基于虛擬化平臺,建議采用免費的XenServer做為虛擬化平臺管理軟件;
(2)硬件資源(即PC服務器)分批購置,先滿足基本業(yè)務然后逐步擴展,建議不要都使用同一廠商的產(chǎn)品;
(3)硬件老化后維保成本較高時,建議直接淘汰購置新硬件;
(4)優(yōu)秀開源項目的軟件很多,采用開源軟件也能為學校節(jié)約相當大一部分資金,但是需要有優(yōu)秀的運維人員,因此需要建立良好的人才培養(yǎng)機制,做好人才儲備工作;
(5)需要根據(jù)學校實際的情況,對整個架構(gòu)做局部的調(diào)整,只有通過不斷地微調(diào)得到符合自身需要的架構(gòu)。
三、總結(jié)
根據(jù)筆者對西南石油大學教務系統(tǒng)服務器架構(gòu)調(diào)整的經(jīng)驗,提出了整合資源、統(tǒng)一部署的信息化整體架構(gòu),相信高校只要加強這方面的意識,從自身已擁有的信息化系統(tǒng)需求出發(fā),結(jié)合互聯(lián)網(wǎng)企業(yè)優(yōu)秀的運維技術(shù)和運維案例,肯定可以在此架構(gòu)基礎(chǔ)上設計出符合自身特點的信息化統(tǒng)一架構(gòu),為節(jié)約辦學成本、實施大數(shù)據(jù)戰(zhàn)略提供有力的保障。
(編輯:楊馥紅)