自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

溫故知新--G行EverDB自動化混沌測試之路

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

EverDB是G行自有知識產(chǎn)權(quán)、與合作伙伴共研的一款基于中間件的分布式數(shù)據(jù)庫產(chǎn)品。在分布式架構(gòu)優(yōu)勢下實現(xiàn)了數(shù)據(jù)庫的可擴展性,但與優(yōu)勢并存的是,分布式架構(gòu)組件多,集群規(guī)模大,組件或節(jié)點間有著各種調(diào)用或相互依賴,使得系統(tǒng)異常事件的發(fā)生概率大幅攀升。

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

混沌測試技術(shù)架構(gòu)

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

圖片

圖1 EverDB混沌測試部署架構(gòu)圖

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

自動化流程設(shè)計實現(xiàn)

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

圖片

圖2 EverDB混沌測試流程設(shè)計

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

Gitlab CI配置

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

圖片

圖3 Gitlab CI任務流程

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

圖片

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

圖片

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

圖片

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

圖片

  1. 持續(xù)檢查工作流狀態(tài),將工作流的運行狀態(tài),成功與否反饋到CI平臺。

EverDB集群部署

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

圖片

圖5 EverDB源碼編譯打包上傳

測試用例拉起

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


測試用例

測試內(nèi)容

壓力測試

Sysbench

OLTP基準測試

數(shù)據(jù)庫一致性測試

Bank

并發(fā)轉(zhuǎn)賬,驗證測試完成后賬戶余額總數(shù)

Bank2

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

Pbank

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

Tpc-c

五種事務模型并發(fā)執(zhí)行

數(shù)據(jù)庫隔離級別測試

Elle

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

高可用測試

Hatest1-18

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

表1 測試用例表

故障注入

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

圖片

圖6  故障注入支持類型

測試報告生成

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

圖片

圖 7 測試結(jié)果收集

可視化跟蹤

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

圖片

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

總結(jié)與期待

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

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

2021-11-09 10:00:02

EverDB自動化數(shù)據(jù)庫

2022-10-25 07:23:45

2022-11-15 07:30:04

EverDB云端alive

2022-10-18 07:17:31

2024-05-13 10:27:37

DevOps云技術(shù)IT

2022-11-01 07:25:27

EverDB數(shù)據(jù)庫SQL

2019-01-14 15:31:42

HTTP23

2023-04-02 23:22:04

GPU流水線體系

2022-12-11 23:43:06

2013-08-20 10:40:54

EIGRPOSPF區(qū)別

2018-11-09 11:10:11

微軟沈向洋人工智能

2023-01-03 00:00:17

2024-07-08 12:03:41

2020-07-13 11:00:06

前端JavaScript自測清單

2020-04-14 11:48:59

密碼網(wǎng)絡攻擊網(wǎng)絡安全

2022-02-17 10:37:16

自動化開發(fā)團隊預測

2012-02-27 17:34:12

Facebook自動化

2021-09-03 09:56:18

鴻蒙HarmonyOS應用

2013-05-16 10:58:44

Android開發(fā)自動化測試

2014-04-16 14:15:01

QCon2014
點贊
收藏

51CTO技術(shù)棧公眾號