藍綠部署在G行移動辦公平臺的應用實踐
引言
G行移動辦公平臺不僅承接了即時通訊的功能,更是各個辦公類應用的服務入口,是全行人員實時溝通交流和日常移動辦公的工作平臺,因此對該平臺的安全運營要求既要做到7*24小時無間斷服務,又要做到快速響應業務需求敏捷發布投產。為此,移動辦公平臺基于容器化架構,通過采用藍綠部署,從而做到了無中斷、用戶無感的敏捷發布和長時間安全穩定運行。本文重點以移動辦公平臺系統為例介紹G行藍綠部署落地實踐。
一、藍綠部署簡介
藍綠部署是一種通過運行相同的環境來減少風險和故障時間的部署技術。這些環境被稱為藍色環境和綠色環境。其中只有一個環境是活動環境,該環境服務于所有生產流量。
如圖1所示,在藍綠部署中,一共有兩套系統:一套是正在給生產提供服務的系統,標記為“綠色環境”;另一套是準備發布的系統,標記為“藍色環境”。這兩套系統,只是系統版本和對外服務情況不同,正在對外提供服務的舊系統是綠色系統,新部署的系統是藍色系統。
圖1 藍綠部署示意圖
藍色環境不對外提供服務,用來做什么?
- 用來做發布前的測試工作,測試過程中發現的任何問題可以在藍色環境上進行修改,不干擾用戶正在使用的系統。
- 用來做發布后的驗證工作,經過驗證確定達到上線標準之后,直接將用戶切到藍色環境,切換后的一段時間內,仍舊是藍綠兩套環境并存,但是用戶訪問的已經是藍色環境。這段時間內觀察藍色環境的工作狀態,如果出現問題,直接切回到綠色環境。
- 當確信對外提供服務的藍色環境工作正常,不對外提供服務的綠色環境已經不再需要的時候,藍色環境可以正式成為對外提供服務的環境,成為新的綠色環境。原先的綠色環境可以將資源釋放出來,用來部署下一個藍色環境。
藍綠部署的目的是減少發布的中斷時間,發布出現問題后可以快速撤回發布,兩套環境沒有耦合的時候才能百分百保證不干擾。
二、為什么要選擇藍綠部署
藍綠部署技術能夠有效的提升用戶體驗,保障業務連續性,對安全運營有較大的意義,以下將從部署優點和選型要求兩個方面介紹移動辦公平臺(簡稱GDJ)選擇藍綠部署的原因。
1、藍綠部署的優點
藍綠部署有以下幾個優點,這些優點可以充分應對當前安全運營面臨的挑戰,無縫升級和隨時部署對用戶無感發布,減少版本部署帶來的風險。切換方便和瞬間回滾、縮短回退時長,迅速從故障場景中恢復,最大限度保障系統高可用性。
- 無縫升級:藍綠部署通過在新的生產環境中測試新版本應用程序,盡早發現應用程序發布后的缺陷。如果系統運行符合預期,可以在沒有中斷的情況下切換到新環境,無縫升級,對用戶無感知。
- 瞬間回滾:如果版本發布后出現問題,可以通過切換藍綠環境很容易地回滾到舊版本。這種方式可以避免對用戶產生負面影響,并保證系統的高可用性。
- 隨時部署:使用藍綠部署可以隨時發布應用,版本上線時間不受停機窗口與時間的限制,無需等待維護窗口,為應用的快速發布提供了有利的支撐。
- 切換方便:藍綠部署具備瞬間切換的能力,新版本驗證完成后,用戶可以快速切換到新版本。
- 配合灰度發布:藍綠部署可以配合灰度發布使用。灰度發布可以逐步將新版本應用程序部署到生產環境中的一小部分用戶中,以確保新版本應用程序可以正常運行。這種方式可以避免出現系統范圍內的問題,降低應用程序缺陷帶來的風險,并逐步將新版本應用程序發布給所有用戶。
2、什么樣的架構適合藍綠部署
為了支持藍綠部署,系統應當滿足如下的架構設計要求:
- 應用無狀態:在藍綠部署中,新版本的應用程序被部署到藍色環境中,而舊版本的應用程序繼續在綠色環境中運行。因此,應用必須是無狀態的,即新版本的應用程序可以無縫地接替舊版本的應用程序,而不會出現數據丟失或者不一致的狀態。應用程序的無狀態也可以保證在運行實例之間無縫切換,而不會丟失狀態,這通常需要使用到無狀態微服務。
- 可擴展性強:系統架構應該能支持運行多個實例,以便同時運行兩個環境,且系統橫向擴展簡單,操作快速。如果一個系統部署組件復雜,本身的可擴展性較差,那么將會給藍綠部署改造和切換帶來諸多困難。
- 負載均衡:系統應該能夠自動分配流量到藍色環境和綠色環境,以確保平滑的流量轉換。這通常需要使用負載均衡器。
- 自動化程度高:藍綠部署在自動化程度高的系統下可以起到事半功倍的作用。使得自動化的構建、測試、部署和回滾可以更加快速、可靠。
正是由于藍綠部署自身的諸多優點,以及移動辦公平臺本身具有應用無狀態、基于容器化的微服務橫向高可擴展性架構、通過反向代理服務器進行負載均衡轉發請求的特點,決定了移動辦公平臺適用藍綠部署的方式。
三、藍綠部署實踐
結合G行移動辦公平臺,從應用架構改造、應用部署原則、藍綠環境切換策略、應用驗證幾個方面介紹藍綠部署落地實踐過程。
1、應用架構改造
移動辦公平臺原有物理架構如圖2所示,反向代理服務器將來自互聯網區域的https請求轉發至webserver,由其將請求交由后臺服進行簡單處理并和數據庫服務器等完成一系列的交互。在原有架構中業務處理層中的后臺服務只有一套容器環境,數據層數據庫相關機器為虛擬機。改造的核心在于業務處理層復制新增一套容器環境,兩套完全不耦合的容器環境共用一套數據庫服務器,避免兩套系統之間的業務數據不一致,以及如何同步等帶來的復雜性問題。
圖2 舊有架構
在藍綠環境改造的過程中,接入層和業務處理層原有的反向代理服務器以及webserver等物理機不發生變動,業務處理層橫向擴展一套后臺服務獨立的容器環境作為藍色環境,與原有的生產環境構成藍綠環境供藍綠部署以及生產使用,同時需要開通網絡訪問關系保證網絡可達。為了應對兩套環境可能給數據庫內存等帶來的壓力,數據層數據庫相關的機器也需要從虛擬機遷移到物理機器上。移動辦公平臺改造后的架構如圖3所示,來自于webserver的流量具備到達其中任意一套環境的條件,并在兩套環境中可以隨時進行切換。
圖3 現有架構
2、應用部署原則
在前文藍綠部署簡介中,應用部署只需在藍環境中進行,藍綠環境相差一個版本,但是基于金融行業的行業特殊性,針對移動辦公平臺藍綠部署我們制定了以下的原則。
- 針對涉及安全漏洞修復的應用發布首先在綠環境進行部署,等待穩定運行后盡快在藍環境進行同樣的部署,藍綠環境版本相同,這是基于金融行業對安全性的較高要求所決定的。
- 不涉及安全漏洞修復的應用發布則只需在藍環境進行部署。后續擇機在綠環境當中進行部署。
3、藍綠環境切換策略
移動辦公平臺的藍綠環境切換支持多種方式,主要有用戶切換和流量切換兩種方式,用戶切換對用戶歸屬環境進行切換,不同環境下具有不同的用戶。流量切換將請求進行切換,實現對不同的請求轉發至指定環境。
- 用戶切換
用戶切換的動作是在移動辦公平臺系統的管理控制臺中通過將對應的用戶和機構添加至相應的環境來完成操作,其本質是修改數據庫當中藍綠環境下的用戶信息表決定環境下哪些用戶。這樣當藍環境部署完畢之后可以將部分或者全部用戶添加至此環境,完成用戶的切換動作。
- 流量切換
流量切換工作,是通過修改反向代理服務器的配置文件完成的,修改配置文件后,需要重新加載新的配置文件以生效新地址后進行流量切換。配置文件通過reload的方式進行,也可以選擇restart的方式,但是restart的方式會重啟服務。這個重啟會造成服務一瞬間的中斷,造成原有請求無法正常返回。通過reload的方式加載新的配置文件,反向代理服務是不會中斷的,新的請求會導向藍環境,而原有已經進入綠環境的請求,已經建立到綠環境后端服務器的通信信道不會中斷,直到原有請求處理完成返回結束。在流量切換的瞬間是不會對原有請求造成影響。通過修改配置以及reload生效后,反向代理將請求默認轉發到藍環境完成請求流量的切換動作。
4、應用驗證
應用部署完畢后,對藍綠環境進行切換,藍環境將承擔生產所有流量,承載真實業務。此時,必須高度關注應用的驗證情況,如果發現驗證出問題,或者運行指標有下降,則需要及時進行應急處理,應用的主要驗證方式有兩種,一種是交易量驗證,一種是日志驗證。
- 交易量驗證
移動辦公平臺架構改造新增藍環境之后,同時需要完善相應的生產監控策略。依托于G行BPC監控系統,改造之后在BPC交易中新增藍環境交易鏈路監控,健全對全鏈路交易的監控策略,補充交易量、成功率,響應率,響應時間等監控指標。在藍綠環境切換后可以通過對交易量的監控驗證生產流量切換是否成功。如圖4所示,切換成功后,可以看到一邊環境的交易量已下降為零。
圖4 BPC交易量驗證
- 日志驗證
通過對反向代理服務器日志中的請求標簽進行捕捉,在切換后相應標簽的關鍵字隨著時間的推移將越來越多,請求已全部轉發至指定環境。
圖5 日志驗證
四、藍綠部署帶來的收益
藍綠部署的使用為移動辦公平臺應用版本的發布帶來了諸多收益,其主要收益有以下幾點:一是變更開始時間不再受限,由之前的凌晨24點業務低峰期前移至下午18點,即使是在緊急情況下辦公業務高峰性也可以進行變更操作。二是系統回退時間大幅縮短,未使用藍綠部署之前,回退需要重新在容器云部署舊版本并進行啟停操作,單AZ回退花費時間15分鐘,當前版本回退只需進行藍綠環境的切換,切換時長只需3分鐘左右,應急回退能力得到顯著提升。三是版本無感發布,不會對用戶的正常使用產生影響,提升用戶使用體驗。
五、行業應用現狀
藍綠部署是銀行業應用部署中的一種重要策略,可以確保應用程序的高可用性、高性能和高可靠性,從而幫助銀行實現業務運營的穩定和可持續發展。在銀行的應用現狀中,許多銀行已經采用了藍綠部署策略來管理其核心應用程序的部署和更新。這些應用程序包括交易系統、支付系統等。
在互聯網廠商當中,藍綠部署已經成為了許多云原生應用開發和部署的標準實踐之一。大多數云服務提供商(如AWS、Azure、Google Cloud等)都提供了藍綠部署的相關服務和工具,如AWS CodeDeploy、Azure DevOps等。此外,也有很多第三方開源工具和框架,如Spinnaker、Jenkins、Kubernetes等,都支持藍綠部署的實現。
總結與展望
本文從藍綠部署的概念、特點以及應用部署三個方面介紹了藍綠部署在G行移動辦公平臺的應用實踐。藍綠部署為移動辦公平臺新版本的發布帶來了廣泛的便利性,新版本上線時間由原來的深夜大幅前移至業務低峰時段。未來隨著G行IT架構轉型的持續深入,越來越多的系統將部署在全棧云平臺。依托于全棧云容器平臺以及藍綠部署等一系列持續發布的新技術,應用系統新版本的無中斷隨時上線將得到深入的推廣,為用戶的使用帶來更好的體驗。