国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

企業(yè)高可用服務架構研究與應用

2022-09-09 03:16:20鞏俊輝
電子技術與軟件工程 2022年13期
關鍵詞:高可用性應用服務雙機

鞏俊輝

(中國電建集團西北勘測設計研究院有限公司信息中心 陜西省西安市 710065)

系統(tǒng)的高可用性是可用性與成本間的一種平衡,系統(tǒng)的高可用性涉及到系統(tǒng)的各個方面,需要統(tǒng)籌平衡。高可用性是指一個系統(tǒng)在正常運行條件下,系統(tǒng)不中斷運行的能力,通常是將正常運行時間與統(tǒng)計總時間的比值作為具體的量化指標。系統(tǒng)要保證完全可用是不可能完成的任務,系統(tǒng)高可用性就是對可用性達到指標的度量,一般指達到99.99%以上,具備自動恢復能力的高可用,而更高層次的極高可用性是理想狀態(tài)。

企業(yè)級應用系統(tǒng)實現高可用的方法一般通過采用符合安規(guī)的軟硬件設備,組建高容錯應用集群,采用負載均衡、數據備份、主備架構、多活服務等技術來實現。本文基于企業(yè)級的應用服務,從實用性與可行性方面論證企業(yè)高可用性架構建設。

1 基礎分析

企業(yè)信息化服務具有多樣化,差異化特點,包括Web服務、移動應用、服務組件、微服務、桌面應用等各種類型的應用服務,各自都面臨著服務治理、管理等問題,服務之間通常存在大量的信息交互,系統(tǒng)間相互影響,企業(yè)構建高可用的應用服務以保證即便在服務器軟硬件故障時,信息依然能夠正確保存并可被訪問,是企業(yè)信息化建設的一項重要內容。

現代企業(yè)信息系統(tǒng)的基礎設施平臺,基本都采用私有云或者公有云平臺,云平臺服務基于虛擬化技術,廣泛使用網絡、存儲、服務器等硬件冗余技術,所構建的基礎平臺具有較高的硬件可靠性,冗余技術通常分時間冗余、信息冗余、結構冗余、冗余附加技術,本文主要從軟件方面研究系統(tǒng)的高可用性架構設計。

結合本企業(yè)的應用實踐,企業(yè)內部署了包括自動化辦公、設計、人事、合同、黨建、科技、輔助決策等一系列的信息系統(tǒng),服務于企業(yè)的生產、經營以及員工工作、生活的方方面面。這些系統(tǒng)中,生產、辦公、經營等高價值信息系統(tǒng)對可用性的要求相對比較高,所以針對這些高價值系統(tǒng),有必要設計構建高可用的服務架構。

2 高可用技術及方案研究

信息系統(tǒng)服務的高可用性從形式內容方面進行分析,主要有以下幾類:

2.1 高可用架構

高可用的架構,目標是保證服務器在出現硬件故障時,仍可使用,數據可以保存并且能夠被訪問,主要解決方案是包括數據和服務的冗余備份,以及失效轉移機制實現高可用架構。具體對于應用服務系統(tǒng)而言,就是在服務器故障時,通過冗余設計,可以將服務切換到其他可用的服務器上;對于數據來說,就是存儲損壞時,可從冗余備份存儲讀取、恢復數據。

2.2 高可用應用

高可用的應用,對于無狀態(tài)應用服務與有狀態(tài)的應用服務,具體實現為:對于無狀態(tài)服務的失效轉移,比如數據接口、API 服務等,本身不依賴于服務會話,可以直接通過服務負載均衡實現高可用性,當負載均衡服務檢測到無效服務后,會自動進行失效轉移;而對于使用Session 等有狀態(tài)服務,比如Web 應用,其通常在應用中使用上下文對象會話(Session)識別用戶,此類服務在負載均衡的集群環(huán)境中,重要的是保證Session 正確性,相關的處理機制相對比較復雜,具體實現是通過服務集群的Session 管理實現,可采用Session 復制、Session 綁定,以及Session 服務器技術保證會話分發(fā)可用。具體原理如下:

(1)Session 復制,實現相對簡單易行,是通過在集群應用之間同步Session 對象,當其中有任何一個應用服務宕機時,并不會導致其他服務的Session 對象丟失,各個應用服務均有Session 獨立復本,可以正常的從本地獲取信息,此方案缺點是Session 復制操作會占用大量服務資源,適合于應用規(guī)模較小的情況。

(2)Session 綁定是利用負載均衡服務對源地址進行Hash 計算,將同一源地址的請求在整個訪問期間分發(fā)到同一個服務上,即點對點綁定,但此技術方案不完全符合高可用的需求,即當某個服務失效時,其會話Session 將丟失,與其綁定的客戶端的后續(xù)業(yè)務也無法繼續(xù)進行。

(3)Session 服務器技術是利用獨立的服務管理Session,各應用服務在讀寫Session 時,都是通過統(tǒng)一的Session 服務進行操作,也就是將Session 與應用服務分離開,通過Session 獨立管理實現會話訪問,此方案符合高可用的構建需求,但需要構建Session 服務。

另外,還可以利用瀏覽器特性,即客戶端在訪問服務時,通過Cookie 記錄Session,并在會話中傳輸Cookie 數據以保證會話的有效,此方案需要在請求中傳輸Cookie,這即影響訪問性能,也存在安全隱患,不建議采用。

2.3 服務高可用性

在應用系統(tǒng)中,通常需要后端服務來完成數據交換。做為公共的信息服務,此類服務大多獨立分布式部署,供具體的應用進行遠程調用。為保障服務的高可用,通常采用策略管理保證可用性:

(1)對服務進行分級管理,保證核心的服務具有更高的優(yōu)先級。

(2)設置服務調用的超時時間,在服務調用超時后,通過服務調度策略重試或請求轉換,實現服務正??捎谩?/p>

(3)通過對消息隊列進行異步方式處理,減少服務并發(fā)壓力和避免個別服務失效而影響整體服務請求的情況。

(4)對服務進行策略調整,普通服務降級訪問,減少并發(fā)數或停止服務,從而保證重要服務的業(yè)務正常。另外,對于特別重要的服務,也可進行N 版本設計,保證服務結果的正確性。

2.4 高可用的數據

高可用數據是指提高數據的可用性,可以從數據備份、運行機制等方面,保證數據的可用性,對于應用系統(tǒng)服務,通常采用的是數據庫集群、數據庫讀寫分離、分布式數據等方法,實現數據的高可用性。

3 高可用應用的構建實現

在企業(yè)內高可用架構設計需要考慮軟硬件條件,平衡實現。企業(yè)在包含網絡在內基礎硬件設施建設,通常會采用硬件設備冗余、網絡線路冗余等架構設計,基礎設施平臺相對穩(wěn)定,所以本次研究不過多對基礎設施環(huán)境的高可用架構技術進行敘述,主要對更具靈活操作性的軟件架構技術展開研究。

3.1 高可用實現原理

在高可用(HA)系統(tǒng)中,如雙機熱備系統(tǒng)就是使用兩臺服務器,之間互相備份,共同執(zhí)行同一項服務。當其中一臺服務器出現故障時,服務任務由另一臺服務器自動承擔接管,不需要人工干預,保證服務的持續(xù)性。一般情況下,兩臺服務器分為一主一備,正常情況下,主服務器為應用系統(tǒng)提供服務,主備兩臺服務器節(jié)點之間通過狀態(tài)通信,即心跳檢測相互獲取服務狀態(tài),當主服務器出現異常,不能再正常服務時,備份服務器會自動迅速接管服務,實現應用服務的持續(xù)不間斷運行。雙機熱備系統(tǒng)也是常用的關鍵服務高可用架構方案。

3.2 雙機熱備系統(tǒng)問題分析及解決方案

在雙機熱備架構中,兩個服務之間的狀態(tài)檢測通信是非常關鍵的,當聯(lián)系2 個節(jié)點的“心跳線”異常時,原本作為整體協(xié)調的高可用系統(tǒng),就會分裂成為2 個獨立的個體,由于相互失去了聯(lián)系,兩個節(jié)點系統(tǒng)都會判斷對方出現服務故障,從而接管服務,造成兩個節(jié)點上的HA 軟件像“裂腦人”一樣,爭搶提供應用服務,造成共享資源沖突,從而發(fā)生嚴重后果,致使服務競爭或服務無效。

對付HA 系統(tǒng)“裂腦”的對策,目前常采用的措施一般有以下幾個:

(1)添加冗余的心跳線,例如采用雙心條線,盡量減少發(fā)生概率。

(2)對于共享資源啟用資源鎖,比如共享磁盤鎖,正在服務的一方對共享磁盤加鎖,當“裂腦”發(fā)生時,不會造成磁盤使用沖突,但也會存在資源解鎖問題,即一方如果不主動解鎖,另一方將永遠無法使用共享資源,備份節(jié)點也就無法接管共享資源和應用服務。所以在HA 中需設計“智能”鎖,即只在發(fā)現心跳線全部斷開時才啟用資源鎖。

(3)設置參考仲裁,比如設置參考IP,當前節(jié)點檢測到心跳斷開時,同時再檢測與該參考節(jié)點的通信,如果當前節(jié)點與參考節(jié)點間通信正常,才判斷為冗余節(jié)點服務異常,如與參考節(jié)點通信異常,則認為自身節(jié)點故障,主動釋放自身所占用的共享資源,關閉或重啟自身節(jié)點服務。

當前在企業(yè)的實際應用中,通常服務是構建在云環(huán)境中,即冗余節(jié)點一般都是部署在相同虛擬主機中,發(fā)生腦裂的可能性是非常低的,但也應該通過建構檢測服務,讓服務器根據檢測自動處理相應故障,進一步保障系統(tǒng)的可靠與可用。

3.3 系統(tǒng)選擇

常用的高可用性軟件系統(tǒng),HeartBeat RoseHA 是一個專業(yè)的、功能完善的高可用軟件,但部署和使用較為麻煩。更為常用的輕量級高可用解決方案是通過keepalived 實現主機的冗余和接管,keepalived 雖然沒有HeartBeat 功能點多,但其部署和使用簡單,通常只需要一個配置文件即可實現系統(tǒng)的高可用性。keepalived 早期面向LVS 的,后來增加了VRRP 功能,在實際應用中,也只需使用其VRRP 功能即可。通過VRRP 功能,進行服務器狀態(tài)檢測和故障隔離,保證業(yè)務的連續(xù)性,實現服務不間斷的穩(wěn)定運行,接管速度最快可以小于1 秒。相結合使用負載均衡系統(tǒng),提高服務的可用性,目前常見的負載均衡主要分為硬件負載均衡和軟件負載均衡。硬件負載均衡比較知名的產品有F5、CirtixNetscaler等,而軟件負載均衡常見的有Haproxy、Nginx、LVS 等。

對于軟件負載均衡系統(tǒng),LVS 是基于OSI 第四層、傳輸層的轉發(fā),可以提供終端到終端的可靠連接;HAproxy 是基于四層和七層的轉發(fā),功能更加豐富靈活,負載均衡兩端連接都是獨立的,一定程度上提升了后端系統(tǒng)的安全性,Nginx 也可以做七層轉發(fā),主要用于WEB 服務器、緩存服務器,同時又是反向代理服務器。相比較這幾個軟件系統(tǒng),對于基于URL 或目錄的轉發(fā),LVS 四層轉發(fā)是無法滿足需求的,同時,其配置復雜,對網絡依賴比較大。實際應用中,LVS 更適合有很大并發(fā)量的時候,而普通情況下,選擇HAproxy 或者Nginx 即可滿足業(yè)務需求。

對于HAproxy 和Nginx,在性能上,HAProxy 的負載均衡速度比Nginx 更出色,支持四層和七層兩種代理模式,而Nginx 對網絡的依賴小,理論上能ping 通就能進行負載功能;同時Nginx 安裝和配置非常簡單,測試也很方便,比較適合Web 服務應用。

在本企業(yè)的實際應用中,使用的是keepalived+Nginx 方案構建實現了企業(yè)應用服務系統(tǒng)的雙機熱備高可用系統(tǒng)架構。即在兩臺云服務器之上部署keepalived,通過keepalived虛擬IP 提供服務,VRRP 可以保證兩臺服務器的檢測及服務接管,該架構整體性能優(yōu)越,能夠滿足企業(yè)生產環(huán)境的高可用性要求。

4 高可用系統(tǒng)驗證

4.1 實施環(huán)境

服務器:云虛擬機*2,CPU:8C、內存:8GB、存儲:200GB

操作系統(tǒng):CentOS7.9

軟件:KeepAclived2.2.7+Nginx1.22.0

網絡:10.0.10.2、10.0.10.3、10.0.10.4

4.2 實現過程

如圖1 所示,使用keepalived+nginx 方案實現雙機熱備高可用的架構,其中,Nginx 服務器通過反向代理與負載均衡,實現應用服務的高可用性,keepalived 通過VRRP 實現自動故障轉移,該雙機熱備架構可解決可用性問題。

圖1 :雙機熱備架構

具體部署時,keepalived 與Nginx 安裝過程較為簡單,這里只重點講解關鍵的服務配置。

對于keepalived,主要是配置兩個主機服務節(jié)點的VRRP 實例,實例配置如下:

到此,keepalived 主要配置即完成,啟用服務后,即可實現VRRP 搭建,實現主機間的服務檢測,表現為虛擬IP的轉移,nginx 負載服務也是基于該虛擬IP 對外提供服務。

4.3 結果驗證

配置好keepalived 并啟動服務后,查看網絡接口狀態(tài),可以看到虛擬IP 已經在主服務器生效,當停止主服務器后,可以觀察到虛擬IP 自動轉換到備服務器,接管服務;當主服務器恢復時,虛擬IP 會自動重新轉換到主服務器。狀態(tài)檢測并管理故障服務器的工作全部是自動完成,不需要人工干涉,人工只需要修復有故障的服務即可。

查看節(jié)點的虛擬IP 信息和狀態(tài)遷移過程,如圖2 和圖3所示。

圖2 :主節(jié)點虛擬IP

圖3 :備份節(jié)點VRRP 檢測

4.4 Nginx深度應用

Nginx 在keepalived+Nginx 架構中,Nginx 主要承擔應用服務的角色,可具體通過正向代理、反向代理,以及負載均衡配置實現高可用性。在本企業(yè)的實際應用中,Nginx 作為發(fā)布應用總線提供服務,負責了企業(yè)內所有HTTP 服務的應用代理轉發(fā)與負載均衡,通過Nginx 構建的統(tǒng)一發(fā)布管理服務,實現了企業(yè)內Web 應用服務的集中管控,同時結合企業(yè)內部的域名解析服務,實現了Nginx 單個端口的多業(yè)務系統(tǒng)代理,即通過server-_name 區(qū)分實際的業(yè)務服務系統(tǒng),單個server 配置示例如下:

Nginx 配置相對比較靈活,靈活應用可以實現特殊的功能需求。對于HTTP 代理,有效利用配置中HTTP、Server、Location、IF 不同層級間配置項疊加,可以簡化整體配置,高效實現集中發(fā)布管理中的通用配置以及個性化配置。比如,在HTTP 段中配置:

實現全局配置項管理,而在Server 段實現個性化配置。

此外,利用Nginx 七層轉發(fā)特性,合理利用能夠實現諸多場景應用需求。比如通過在服務的Serve 段中配置Header信息,解決老舊系統(tǒng)對于特定瀏覽器版本依賴需求:

add_header "X-UA-Compatible" "IE=EmulateIE7";

又比如通過配置特殊URI 內容過濾實現對應用服務的安全加固:

還可以利用sub_filter 等功能實現應用代碼修改等功能。

總之,通過Nginx 的深度應用,可以實現復雜場景的Web 發(fā)布管理。通過實踐總結,在實現應用過程中,值得注意的是在Nginx 的不同層級的配置中,相同配置項會完全覆蓋上面層級的配置內容,而不是累加的配置過程。

4.5 總結

在keepalived+nginx 架構中,keepalived 負責服務器的整體動態(tài)管理,服務器會自動管理故障機器,服務器切換非常快。將服務部署在同一云環(huán)境中,尤其同一主機時,發(fā)生腦裂的概率是非常低的,基本為0。實際可能遇到的問題是keepalived 在配置中未使用LVS 狀態(tài)檢測,對于nginx 服務的狀態(tài)是不敏感的,當nginx 自身的服務發(fā)生問題時,并不會觸發(fā)keepalived 轉換服務,所以實際應用中,可以編寫一個nginx 狀態(tài)監(jiān)聽腳本/服務,以控制keepalived 實現服務器的切換,提高架構可靠性。該架構在本企業(yè)上線以來,總體性能良好,服務穩(wěn)定,尚未發(fā)生過腦裂、服務宕機、異常等故障。

5 結論與展望

高可用系統(tǒng)架構歸根結底是冗余設計,合理有效的冗余應用能提高系統(tǒng)整體的可用性,不管是單應用系統(tǒng)還是綜合應用系統(tǒng),從系統(tǒng)設計,代碼控制、發(fā)布管理等方面,合理有效的綜合技術應用,能夠提高系統(tǒng)可用性、安全性以及性能。

猜你喜歡
高可用性應用服務雙機
全球衛(wèi)星互聯(lián)網應用服務及我國的發(fā)展策略
雙機、雙槳軸系下水前的安裝工藝
國家不動產統(tǒng)一登記信息平臺構建與應用服務
超長公路隧橋高可用性監(jiān)控平臺方案分析
雙機牽引ZDJ9道岔不同步問題的處理
Loader軸在雙機桁架機械手上的應用
校園一卡通服務端高可用性改造實施方案
OpenStack云計算平臺高可用性的研究
一種虛擬化集群心跳算法
全國征集衛(wèi)星應用服務解決方案
太空探索(2015年5期)2015-07-12 12:52:36
霍林郭勒市| 新泰市| 阿拉善右旗| 临沭县| 安陆市| 泗洪县| 阿拉尔市| 新源县| 黔江区| 廊坊市| 德兴市| 剑川县| 鄂托克旗| 金沙县| 夹江县| 盐源县| 韩城市| 望谟县| 郁南县| 翁源县| 德州市| 乡宁县| 革吉县| 石首市| 开封县| 香河县| 梧州市| 霸州市| 鲁山县| 南投县| 宁陵县| 灵石县| 东方市| 辽宁省| 白玉县| 东城区| 汝州市| 阳春市| 五华县| 广南县| 清镇市|