Chaos Mesh離線環(huán)境實踐

關(guān)于ChaosMesh

Chaos Mesh 是一個開源的云原生混沌工程平臺,提供豐富的故障模擬類型,具有強大的故障場景編排能力,方便用戶在開發(fā)測試中以及生產(chǎn)環(huán)境中模擬現(xiàn)實世界中可能出現(xiàn)的各類異常,幫助用戶發(fā)現(xiàn)系統(tǒng)潛在的問題。Chaos Mesh 提供完善的可視化操作,旨在降低用戶進行混沌工程的門檻。用戶可以方便地在 Web UI 界面上設(shè)計自己的混沌場景,以及監(jiān)控混沌實驗的運行狀態(tài)。


chaosmesh.png

基礎(chǔ)資源類型故障:

  • PodChaos:模擬 Pod 故障,例如 Pod 節(jié)點重啟、Pod 持續(xù)不可用,以及特定 Pod 中的某些容器故障。
  • NetworkChaos:模擬網(wǎng)絡(luò)故障,例如網(wǎng)絡(luò)延遲、網(wǎng)絡(luò)丟包、包亂序、各類網(wǎng)絡(luò)分區(qū)。
  • DNSChaos:模擬 DNS 故障,例如 DNS 域名解析失敗、返回錯誤 IP 地址。
  • HTTPChaos:模擬 HTTP 通信故障,例如 HTTP 通信延遲。
  • StressChaos:模擬 CPU 搶占或內(nèi)存搶占場景。
  • IOChaos:模擬具體某個應用的文件 I/O 故障,例如 I/O 延遲、讀寫失敗。
  • TimeChaos:模擬時間跳動異常。
  • KernelChaos:模擬內(nèi)核故障,例如應用內(nèi)存分配異常。

平臺類型故障:

  • AWSChaos:模擬 AWS 平臺故障,例如 AWS 節(jié)點重啟。
  • GCPChaos:模擬 GCP 平臺故障,例如 GCP 節(jié)點重啟。

應用層故障:

  • JVMChaos:模擬 JVM 應用故障,例如函數(shù)調(diào)用延遲。

chaosd

chaosd是chaos mesh提供的一款混沌工程測試工具(需單獨下載和部署),用于在物理機環(huán)境注入故障,并提供故障恢復功能。
chaosd支持故障類型

  • 進程:對進程進行故障注入,支持進程的 kill、stop 等操作。
  • 網(wǎng)絡(luò):對物理機的網(wǎng)絡(luò)進行故障注入,支持增加網(wǎng)絡(luò)延遲、丟包、損壞包等操作。
  • 壓力:對物理機的 CPU 或內(nèi)存注入壓力。
  • 磁盤:對物理機的磁盤進行故障注入,支持增加讀寫磁盤負載、填充磁盤等操作。
  • 主機:對物理機本身進行故障注入,支持關(guān)機等操作。

離線部署

※chaos mesh需要在K8S環(huán)境中進行部署。

  1. 準備相關(guān)部署文件

需要的部署文件清單:

  • chaos-mesh-2.6.2.zip:chaos安裝包
  • chaosd-v1.4.0-linux-amd64.tar.gz:chaosd安裝包
  • ghcr.io/chaos-mesh/chaos-mesh鏡像
  • ghcr.io/chaos-mesh/chaos-daemon鏡像
  • ghcr.io/chaos-mesh/chaos-dashboard鏡像
  • helm-v2.16.9-linux-amd64.tar.gz:helm安裝包
# 指定版本號
export CHAOS_MESH_VERSION=v2.6.2

# 下載鏡像
docker pull ghcr.io/chaos-mesh/chaos-mesh:${CHAOS_MESH_VERSION}
docker pull ghcr.io/chaos-mesh/chaos-daemon:${CHAOS_MESH_VERSION}
docker pull ghcr.io/chaos-mesh/chaos-dashboard:${CHAOS_MESH_VERSION}

# 將鏡像保存為tar包,把tar包拷貝到內(nèi)網(wǎng)、加載鏡像、改tag、上傳到內(nèi)網(wǎng)倉庫
docker save ghcr.io/chaos-mesh/chaos-mesh:${CHAOS_MESH_VERSION} > image-chaos-mesh.tar
docker save ghcr.io/chaos-mesh/chaos-daemon:${CHAOS_MESH_VERSION} > image-chaos-daemon.tar
docker save ghcr.io/chaos-mesh/chaos-dashboard:${CHAOS_MESH_VERSION} > image-chaos-dashboard.tar

# 下載chaos mesh zip包
curl -fsSL -o chaos-mesh.zip https://github.com/chaos-mesh/chaos-mesh/archive/refs/heads/master.zip

# 下載chaosd
curl -fsSLO https://mirrors.chaos-mesh.org/chaosd-$CHAOSD_VERSION-linux-amd64.tar.gz
  1. 內(nèi)網(wǎng)環(huán)境部署chaos mesh
# 安裝helm
tar xvf helm-v2.16.9-linux-amd64.tar.gz
cp -a linux-amd64/helm /usr/bin/helm

# 使用helm安裝chaos mesh
unzip chaos-mesh.zip -d chaos-mesh && cd chaos-mesh
kubectl create ns chaos-mesh

helm install chaos-mesh helm/chaos-mesh --namespace=chaos-mesh --set images.registry=$DOCKER_REGISTRY,dashboard.securityMode=false,controllerManager.chaosdSecurityMode=false 
  • images.registry:指定倉庫
  • dashboard.securityMode:可視化安全面板安全模式
  • controllerManager.chaosdSecurityMode:chaosd連接安全模式
  1. 內(nèi)網(wǎng)環(huán)境部署chaosd
# 解壓chaosd
tar zxvf chaosd-$CHAOSD_VERSION-linux-amd64.tar.gz && sudo mv chaosd-$CHAOSD_VERSION-linux-amd64 /usr/local/

# 加入環(huán)境變量
export PATH=/usr/local/chaosd-$CHAOSD_VERSION-linux-amd64:$PATH

# 啟動
chaosd server --port 31767

混沌測試實踐

  1. 設(shè)計測試方案

包括測試環(huán)境、工具、測試范圍、測試策略、測試場景等,此處略。

  1. 設(shè)計測試用例
異常類型 異常子類 場景描述 觀測指標
操作系統(tǒng)異常 IO異常 模擬es服務(wù)器磁盤占用100% 成功率、響應時間、TPS、數(shù)據(jù)恢復
  1. 搭建測試環(huán)境
用途 工具
XX系統(tǒng)高可用測試環(huán)境 /
模擬異常注入 chaos mesh+chaosd
監(jiān)控K8S/節(jié)點資源 prometheus+node exporter+grafana
jmeter測試結(jié)果 jmeter+influxdb+grafana
  1. 執(zhí)行實驗

1、以小并發(fā)(20線程)持續(xù)調(diào)用XX接口,觀測、記錄系統(tǒng)在穩(wěn)定狀態(tài)下的資源指標
2、進入chaos mesh-實驗-新建實驗,配置物理機-磁盤故障-fill故障,并執(zhí)行實驗

  1. 觀測監(jiān)控指標,得到結(jié)果


    jmeter壓測tps趨勢.png

    物理機監(jiān)控.png

注入異常使es1虛擬機磁盤占用達到100%,其他es集群所在虛擬機資源使用無明顯變化,接口訪問TPS無明顯變化。停止異常注入,es1虛擬機資源使用恢復到異常發(fā)生前的狀態(tài)。當es集群某節(jié)點磁盤占用率達到100%時,對業(yè)務(wù)請求無明顯影響。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容