成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

G 行 EverDB 自動化混沌測試之路

數據庫 其他數據庫 自動化
EverDB是G行自有知識產權、與合作伙伴共研的一款基于中間件的分布式數據庫產品。在分布式架構優勢下實現了數據庫的可擴展性,但與優勢并存的是,分布式架構組件多,集群規模大,組件或節點間有著各種調用或相互依賴,使得系統異常事件的發生概率大幅攀升。

本文轉載自微信公眾號「匠心獨運維妙維效」,作者數據庫管理團隊。轉載本文請聯系匠心獨運維妙維效公眾號。

EverDB是G行自有知識產權、與合作伙伴共研的一款基于中間件的分布式數據庫產品。在分布式架構優勢下實現了數據庫的可擴展性,但與優勢并存的是,分布式架構組件多,集群規模大,組件或節點間有著各種調用或相互依賴,使得系統異常事件的發生概率大幅攀升。

為盡早發現系統薄弱點,做出彌補改進,我們在分布式數據庫測試中引入了混沌工程理論。通過在系統環境中模擬故障,來觀察故障的發生對系統產生的影響,以期提前發現系統潛在的問題與風險,針對性的對系統進行加固防范,這種測試方法被稱為混沌測試。本文為大家分享基于GitLab CI的自動化混沌測試實踐。

混沌測試技術架構

為實現混沌測試的敏捷性、靈活性和自動化,我們選擇了云原生技術方案,整個混沌測試運行于k8s平臺,使用容器化技術Docker實現EverDB集群的容器化部署、Chaos Mesh實現故障注入、Argo workflow實現混沌測試流程編排、Prometheus+Grafana實現監控數據采集存儲和可視化。它們在k8s上的部署及連接關系如下圖1所示。

圖1 EverDB混沌測試部署架構圖

其中,Argo workflow是整個混沌測試流程的總調度單元,無論是集群拉起還是故障注入,任何一個任務環節都在Argo workflow中進行規范定義。Argo-server會依據我們定義的任務流程調度k8s資源(包括job,Statefulset,Chaos等)。

自動化流程設計實現

當前,EverDB代碼庫托管于GitLab平臺。EverDB每次發版前通過GitLab CI進行功能回歸測試。為保持技術方案統一,我們將混沌測試集成到GitLab CI,由開發人員在代碼提交后自動觸發執行,實現了EverDB發版前的自動化混沌測試。同時,考慮bug觸發的偶發性,混沌測試也被配置為周期性任務,通過重復實驗驗證數據庫的可靠性。

圖2 EverDB混沌測試流程設計

上圖2即是EverDB的混沌測試流程設計,實現依托于GitLab和k8s兩大平臺,Chaos Mesh、Argo workflow兩個關鍵技術組件。主要包括Gitlab CI配置、EverDB集群部署、測試用例拉起、故障注入、測試報告生成和可視化跟蹤六個部分。

Gitlab CI配置

EverDB容器化集群及Chaos Mesh故障注入等組件均布置在k8s環境中,為了方便調度,我們將CI任務的執行器(GitLab CI runner)也部署到k8s環境中,由它在k8s環境中調起測試流程。GitLab CI runner任務如下圖3。

圖3 Gitlab CI任務流程

GitLab CI任務實際是執行了一個python腳本調起了一個混沌測試工作流。該腳本完成的工作有四部分:

參數解析處理,讀取用戶在CI任務中的設定的實驗參數、配置文件并解析;

工作流模板渲染,利用第一步讀取的配置參數,按照工作流模板渲染生成工作流;

工作流部署,將工作流部署到k8s平臺運行;

持續檢查工作流狀態,將工作流的運行狀態,成功與否反饋到CI平臺。

EverDB集群部署

源代碼提交時觸發CI任務進行EverDB集群部署,包括源代碼編譯、制作鏡像上傳至鏡像倉庫、使用最新鏡像在k8s平臺上部署EverDB集群。對于混沌測試周期性任務,則從鏡像倉庫中拉取最新的EverDB鏡像進行部署。

圖5 EverDB源碼編譯打包上傳

測試用例拉起

EverDB集群部署完成后,CI任務會按照實驗編排有序拉起測試用例。測試用例分為功能、性能和高可用三類,通過對比EverDB在正常運行態和故障注入后運行態的各項測試指標,驗證數據庫對各種異常場景的處理能力和健壯性。

 

 

測試用例

測試內容

壓力測試

Sysbench

OLTP基準測試

數據庫一致性測試

Bank

并發轉賬,驗證測試完成后賬戶余額總數

Bank2

增加事務競爭度控制的Bank測試

Pbank

記錄每次讀寫事務的操作以及返回結果

Tpc-c

五種事務模型并發執行

數據庫隔離級別測試

Elle

并發讀寫寄存器,檢查是否違反一致性模型

高可用測試

Hatest1-18

測試各種故障場景,驗證數據庫高可用性是否符合預期


表1 測試用例表

故障注入

故障注入通過調用PingCAP開源的混沌測試工具Chaos Mesh實現。Chaos Mesh使用Kubernetes CRD來定義Chaos對象資源,在EverDB混沌測試中,可以直接調度這些Chaos資源,模擬簡單的故障場景,也可以對這些基礎Chaos資源進行編排,構造更復雜的故障場景。

圖6 故障注入支持類型

測試報告生成

測試用例在整個測試周期內持續運行,實現數據庫能力測試方案的同時,也會采集測試指標數據并進行轉儲。測試結束后,測試報告生成模塊會進行數據收集、分析、報告生成及歸檔。目前測試報告包括測試結論、環境參數和EverDB集群配置等信息,后續會隨著混沌測試實踐的深入,對結果信息進行豐富和優化。

圖 7 測試結果收集

可視化跟蹤

除了輸出測試報告以外,我們也可以使用可視化的Dashboard、監控系統等工具,對整個混沌測試過程進行實時跟蹤和觀察。

圖8 一個EverDB混沌測試工作流示例

總結與期待 

EverDB通過引入混沌測試,已在可靠性提升上有了一定的測試成果,同時我們對混沌測試的未來也進行了思考與規劃。在測試擴展方面,不斷豐富測試用例、編排更復雜的故障場景、完善測試報告內容;通過建設混沌實驗平臺使混沌測試常態化、便捷化;同時建立混沌測試文化,使其在G行分布式架構轉型中發揮更大的作用。

 

責任編輯:武曉燕 來源: 匠心獨運維妙維效
相關推薦

2022-11-08 07:20:55

EverDB混沌測試

2022-02-17 10:37:16

自動化開發團隊預測

2012-02-27 17:34:12

Facebook自動化

2021-09-03 09:56:18

鴻蒙HarmonyOS應用

2023-01-10 07:26:12

監控標準化演進

2013-05-16 10:58:44

Android開發自動化測試

2014-04-16 14:15:01

QCon2014

2022-12-01 09:12:49

CodeQL自動化審計

2011-12-23 17:09:57

自動化測試

2015-11-09 14:27:36

Ansiblelinux自動化運維

2021-06-30 19:48:21

前端自動化測試Vue 應用

2012-12-24 22:54:31

2024-11-01 15:05:12

2014-11-20 13:49:15

2011-06-03 17:24:48

自動化測試

2023-03-27 15:37:43

自動化測試開發

2014-07-26 15:11:20

WOT2014自動化運維

2011-05-30 17:31:26

自動化測試

2011-01-20 10:17:25

ibmdwWeb

2012-03-29 10:57:12

Web自動化測試
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲视频区 | 国产精品视频网址 | 欧美激情在线观看一区二区三区 | 天天插天天射天天干 | 久久精品99久久 | www.五月天婷婷 | 中文字幕高清视频 | 国产视频一区二区 | 久久久久成人精品免费播放动漫 | 国产福利视频在线观看 | 在线一区二区三区 | 国产精品久久久久久久久久三级 | 成人精品视频 | 欧美视频中文字幕 | 欧美亚洲综合久久 | 香蕉大人久久国产成人av | 一二区成人影院电影网 | 国产91在线 | 欧美 | 久久精品国产v日韩v亚洲 | 久久性av | 狠狠操狠狠干 | 欧美激情一区二区三区 | 免费视频中文字幕 | 久久69精品久久久久久久电影好 | av在线一区二区三区 | 四虎最新视频 | 仙人掌旅馆在线观看 | 精品三级在线观看 | 日韩视频在线一区 | 新疆少妇videos高潮 | 欧美黄色网络 | 国产黄色精品在线观看 | 福利视频日韩 | 国产一区欧美一区 | 国产黄色大片 | 日韩在线不卡视频 | 亚洲网站在线播放 | 欧美国产91| 一区二区三区四区视频 | 91精品国产91久久久久游泳池 | 国产成人精品一区二区三区在线 |