做者:丁源 RadonDB 測試負責人node
負責 RadonDB 雲數據庫、容器化數據庫的質量性能測試,迭代驗證。對包括雲數據庫以及容器化數據庫性能和高可用方案有深刻研究。mysql
接上期《混沌工程工具 ChaosBlade Opeator 系列的入門篇》,本期將使用 ChaosBlade Opeator 工具,針對 Node 類資源的應用場景進行測試,測試場景包括:git
基於 KubeSphere 平臺的 RadonDB MySQL 容器化數據庫進行測試。github
RadonDB MySQL 部署說明請參見 在 KubeSphere 中部署 RadonDB MySQL 集羣。sql
集羣名稱 | 主機類型 | CPU | Memory |
---|---|---|---|
KubeSphere | 高可用類型 | 8C | 16G |
RadonDB MySQL | - | 4C | 16G |
測試環境部署完成後,便可從如下五個針對節點的場景作相應驗證。數據庫
指定節點作 CPU 負載 80% 驗證。json
配置 yaml 測試參數值。api
apiVersion: chaosblade.io/v1alpha1 kind: ChaosBlade metadata: name: cpu-lode spec: experiments: - scope: node target: cpu action: fulllode desc: "increase node cpu load by names" #實驗模型名稱 matchers: - name: names value: - "worker-s001" #測試對象 node 名稱 - name: cpu-percent value: "80" #節點負載百分比 - name: ip value:192.168.0.20 #節點負載百分比
選擇一個節點,修改 node_cpu_load.yaml
中的 names 值。
瀏覽器
在 Node 節點,使用 top 命令能夠看到節點 CPU 達到負載 80% 預期效果。微信
登陸 Node 節點,使用 ifconfig 命令查看網卡信息,將系統默認的網卡名稱指定到 eth0
。
指定節點 worker-s001
添加 3000 毫秒訪問延遲,延遲時間上下浮動 1000 毫秒。
選擇一個節點,修改 delay_node_network_by_names.yaml
中的 names 值。對 worker-s001
節點訪問丟包率 100%。
開始測試。
kubectl apply -f delay_node_network_by_names.yaml
查看實驗狀態。
kubectl get blade delay-node-network-by-names -o json
從節點訪問 Guestbook。
$ time echo "" | telnet 192.168.0.18 echo "" 0.00s user 0.00s system 35% cpu 0.003 total telnet 192.168.1.129 32436 0.01s user 0.00s system 0% cpu 3.248 total
中止測試。能夠刪除測試進程或者直接刪除 blade 資源。
kubectl delete -f delay_node_network_by_names.yaml kubectl delete blade delay-node-network-by-names
指定節點注入丟包率 100% 的故障。
選擇一個節點,修改 loss_node_network_by_names.yaml
中的 names 值。
執行如下命令,開始測試。
$ kubectl apply -f loss_node_network_by_names.yaml
執行如下命令,查看實驗狀態。
kubectl get blade loss-node-network-by-names -o json
端口爲 Guestbook nodeport 端口,訪問實驗端口無響應,可是訪問未開啓實驗的端口能夠正常使用。
獲取節點 IP。
$ kubectl get node -o wide
從實驗節點訪問 Guestbook - 沒法訪問。
$ telnet 192.168.0.20
從非實驗節點訪問 Guestbook - 正常訪問。
$ telnet 192.168.0.18
此外還可直接從瀏覽器訪問地址,驗證測試結果。
中止測試。能夠刪除測試進程或者直接刪除 blade 資源。
kubectl delete -f delay_node_network_by_names.yaml kubectl delete blade delay-node-network-by-names
刪除指定節點上的 MySQL 進程。
選擇一個節點,修改 kill_node_process_by_names.yaml
中的 names 值。
執行如下命令,開始測試。
$ kubectl apply -f kill_node_process_by_names.yaml
執行如下命令,查看實驗狀態。
kubectl get blade kill-node-process-by-names -o json
進入實驗 node。
$ ssh 192.168.0.18
查看 mysql 進程號。
$ ps -ef | grep mysql root 10913 10040 0 14:10 pts/0 00:00:00 grep --color=auto mysql
能夠看到進程號發生了變化。
$ ps -ef | grep mysql
MySQL 的進程號發生改變,說明被殺掉後,又被從新拉起。
中止測試。能夠刪除測試進程或者直接刪除 blade 資源。
kubectl delete -f delay_node_network_by_names.yaml kubectl delete blade delay-node-network-by-names
掛起指定節點上的 MySQL 進程。
選擇一個節點,修改 stop_node_process_by_names.yaml
中的 names 值。
執行如下命令,開始測試。
$ kubectl apply -f stop_node_process_by_names.yaml
執行如下命令,查看實驗狀態。
kubectl get blade stop-node-process-by-names -o json
進入實驗 node。
$ ssh 192.168.0.18
查看 mysql 進程號。
$ ps -ef | grep mysql root 10913 10040 0 14:10 pts/0 00:00:00 grep --color=auto mysql
能夠看到進程號發生了變化。
$ ps -ef | grep mysql
MySQL 的進程號發生改變,說明被殺掉後,又被從新拉起。
中止測試。能夠刪除測試進程或者直接刪除 blade 資源。
kubectl delete -f delay_node_network_by_names.yaml kubectl delete blade delay-node-network-by-names
經過使用 ChaosBlade Operator 對 KubeSphere Node 資源進行混沌工程實驗,可得出以下結論:
對於 Node 節點,ChaosBlade 依舊有簡單的配置及操做來完成複雜的實驗,能夠經過自由組合,實現各類 Node 節點級別的複雜故障,驗證 Kubernetes 集羣的穩定性及可用性。同時當真正的故障來臨時,因爲早已模擬了各類故障狀況,能夠快速定位故障源,作處處變不驚,輕鬆處理故障。
下一期將使用部署的 ChaosBlade Opeator 工具,針對 Pod 類資源各類場景進行測試驗證。
RadonDB開源社區 是一個面向雲原生、容器化的數據庫開源社區。爲數據庫技術愛好者提供圍繞主流開源數據庫(MySQL、PostgreSQL、Redis、MongoDB、ClickHouse 等)的技術分享平臺,並提供企業級 RadonDB 開源產品及服務。
目前 RadonDB 開源數據庫系列產品已被 光大銀行、浦發硅谷銀行、哈密銀行、泰康保險、太平保險、安盛保險、陽光保險、百年人壽、安吉物流、安暢物流、藍月亮、天財商龍、羅克佳華、升哲科技、無錫匯跑體育、北京電信、江蘇交通控股、四川航空、昆明航空、國控生物 等上千家企業及社區用戶採用。
RadonDB 可基於雲平臺與 Kubernetes 容器平臺交付,不只提供覆蓋多場景的數據庫產品解決方案,並且提供專業的集羣管理和自動化運維能力,主要功能特性包括:高可用主從切換、數據強一致性、讀寫分離、一鍵安裝部署、多維指標監控&告警、彈性擴容&縮容、橫向自由擴展、自動備份&恢復、同城多活、異地災備 等。RadonDB 僅需企業及社區用戶專一於業務層邏輯開發,無需關注集羣高可用選型、管理和運維等複雜問題,幫助企業及社區用戶大幅度提高業務開發與價值創新的效率!
GitHub:https://github.com/radondb
微信羣: 請搜索添加羣助手微信號 radondb