【世博IT魔方】Nginx+Keepalived實現在線票務系統
系統網絡層級別的安全防護:
安全防護采用三層硬件防火墻+七層應用層防護來實現,系統均安裝64位的Centos5.4;軟件層分負載均衡層、web層、數據庫層來說明,整套系統均關閉iptables防火墻,只映射Keepalived虛擬的VIP在最前端的華塞USG5000的外網80端口上,先將整套系統的安全級別提高到金融級別,再考慮負載均衡及其它事宜。
華賽USGUSG5000可以有效抵御高強度的網絡攻擊,而且同時可以保證正常的網絡應用。其基于多核處理器的硬件構架,依靠多線程處理設計提供了十分優異的數據處理能力,完全可以為Internet服務提供商、大型企業、園區網、數據中心等具備大流量網絡帶寬用戶提供高性能的安全防御手段;尤其是USG5000所具備的超高的“每秒新建連接數”,不僅可以實現對多種并行的網絡應用實現快速響應,而且在大流量網絡攻擊的情況下,仍然可以防止網絡業務中斷給用戶帶來的損失。
它能有效地保障網絡的運行,并且其獨特的GTP安全防護功能可以為GPRS網絡提供有效的安全防護;USG5000安全網關可以抵御大流量的DDoS攻擊,為用戶的業務系統提供DDoS攻擊防護,依托優越的產品性能,能防范每秒數百萬包以上的DDoS攻擊,可支持對SYN FLOOD、UDP FLOOD、ICMP FLOOD、DNS FLOOD、CC等多種DDoS攻擊種類的準確識別和控制,同時還能提供蠕蟲病毒流量的識別和防范能力,結合華為賽門鐵克專有ICA智能連接算法,保證在準確識別DDoS攻擊流量的同時,不影響用戶的正常訪問,在復雜網絡情況下實現真正的安全防護,是業界領先的DDoS防護設備,這功能也是我們關注的重點
天泰WAF-T3-500-L安全網關防火墻具備全面的攻擊防御系統,可保證系統不受網絡蠕蟲/病毒和應用專用漏洞的攻擊,并且大大緩解來自網絡層和應用層DoS/DDoS攻擊的影響。網關的NetShield™引擎在網絡層對數據進行細致檢查,徹底阻斷來自網絡層的潛在攻擊。網關的WebShield™引擎在應用層對Web請求進行檢查,辨別惡意內容并阻止其進入應用服務器。
其安全性能包括:
常見網絡攻擊防護——保護網絡基礎設施不受常見的來自網絡層的攻擊
DoS/DDoS 保護——識別網絡層和應用層的DoS/DDoS攻擊,緩解攻擊對應用基礎設施的影響(這也是我們關注的重點)
入侵過濾——通過在惡意蠕蟲和病毒進入應用服務器前進行識別并拒絕,保護應用服務器不受侵襲。
SSL加密——應用內容在傳輸過程中都受加密保護,通過轉移服務器復雜的加/解密任務將應用處理能力發揮到了極致。該功能保護敏感應用內容的安全,使其擺脫被竊取及被濫用的潛在威脅。
此外,能實現SQL注入攻擊防護,釣魚攻擊,跨站腳本攻擊防護及常見系統溢出防護等,這個也是我們比較關注的
服務器我們一般采用的是HP DL380G6(用于web)和HP DL580G5(用于數據庫);在項目實施中發現HP DL580G5的性能確實彪悍,如果成本充分,可考慮都上此服務器;然后根據用途不同,內存的數量側重點也不同;跟以往的老型號不同,用的雙四核至強E74403.2GB的CPU,內存一般上的64GB或146GB。
租用機房:我們一般選擇的是電信機房,也可考慮北京的雙線通機房;出口帶寬建議100MB,這些沒什么好說的。
負載均衡層:
負載均衡層用的軟件我們采用的是Nginx源碼,二臺Nginx用Keepalived作高HA;其實也可以用LVS/Keepavlied來實現;但我們在項目實施發現,Nginx在正則處理及location分發上效果比LVS更好(有些功能LVS實現不了),而且穩定性并不亞于LVS;在我從事的某些金融項目里,按客戶的要求,1+2架構就很穩定的運行,當然也要配合Nagios實現監控。
如何處理session的問題:
① Nginx負載均衡器采用ip_hash模塊,讓訪問的客戶端始終與后端某臺web建議永久性連接關系;
② 采用與PHPCMS類似的方法,將session寫進后端的統一數據庫里,例如MySQL;
WEB層:
頁面同步
辦法①可以采用rsync自動同步的辦法。
辦法②后端采用共用存儲,讀數據采用同一個存儲設備。
這里說下要用的存儲設備,我們用的比較多的是EMC CLARiiON CX4的FC磁盤陣列,很穩定,沒發生過丟失數據庫的問題;缺點是比較貴,會增加整個系統實施成本。
辦法③在程序上實現動態的調取數據(如圖片及文字)采用后端的唯一文件服務器,后期可考慮采用moosefs分布式文件系統來減小壓力.
Web集群方面用的是Nginx+PHP5(FastCGI),這里說下并發的問題;在設計項目方案時,我們考慮的單臺web上的并發值為9000,在局域網環境中通過LoadRunner及Webbench反復測試,單臺Nginx的web通過9000并發沒有問題,3臺web即是9000*3=27000并發;但系統正式上線時發現,由于非游戲類網站,根本達不到27000并發,這只是一個理論值;但本著高擴展性的原則,還是盡量在硬件和性能上對單臺web進行調優;本系統是9000萬張票,預計并發在2000左右,此系統架構完全能勝任并發情況;另Nginx負載均衡器在高并發下的穩定性是無用置疑的,有此項目經驗的人都應該清楚。
數據庫層:
考慮到數據庫層的壓力情況,我提出三種主案:
① 采用最常用MySQL一主一從方案,在主上做好單機的優化,MySQL在壓力和性能上的表現超過預期;
② 如果壓力還是過大,考慮采用oracle的雙機RAC方案,我們用此成功解決了某用戶100W用戶的OA系統數據庫壓力大的問題;
③ 可用用MySQL的一主多從方案,在web層上實行分布式memcache緩存,另還可考慮自己開發中間件技術,讓真正的實現寫功能的MySQL壓力做小,從而達到數據庫架構級調優的功能(這個也是游戲行業數據庫采用減壓的辦法)。
【編輯推薦】
- 美國康普智能系統助力蕪湖第二人民醫院
- 析奧創利綜合布線在世博會中國館的應用
- Avocent助克拉瑪依油田實現服務器微觀環境實時監控
- 【世博IT魔方】H3C助力世博會園區監控系統
- Strix無線Mesh技術在鐵路系統的應用
#p#
專家點評:張 琦——榮新IT培訓中心資深講師(評分:200分)
此文立意明確,從在線票務系統的安全防護角度,分析了世博在線售票系統中存在的安全隱患和問題。并從數據庫、負載均衡、Web集群等充分論證了在線票務系統服務器存在的安全威脅,也分別從這幾個方面給出了具體解決辦法。
遺憾的是,該文未涉及主要服務器的處理能力,這對于在線售票系統來說非常重要。
#p#
專家點評:楊 栩——博科公司(Brocade)高級技術顧問(評分:200分)
本文從安全性和服務器負載均衡兩個方面詳細闡述了票務系統的組網方案和技術,是一個可實施的成功案例,值得讀者學習和借鑒。
個人覺得兩套不同廠家的防火墻串接在網絡里,無疑提高了安全性,但也給網絡帶來了復雜性、增加了故障點。另外如果對 每秒新建連接數和并發連接數要求高的話,建議采用專業的負載均衡硬件設備如F5、Brocade等。
#p#
專家點評:宋家雨——《政府采購信息報》IT周刊主編(評分:300分)
沒有嚴密專業的安全措施作為保障,在線的票務系統你敢采用嗎?因此,在一個簡單業務應用的背后,有一個龐大的系統作為保障和支撐,千萬不要忽視。