混沌工程實戰(zhàn) 手把手教你實現(xiàn)系統(tǒng)穩(wěn)定性(圖靈出品)
定 價:59 元
叢書名:圖靈程序設計叢書
- 作者:拉斯·邁爾斯(Russ Miles) 著,黃威 譯
- 出版時間:2020/8/1
- ISBN:9787115542601
- 出 版 社:人民郵電出版社
- 中圖法分類:TP338.8
- 頁碼:131
- 紙張:膠版紙
- 版次:1
- 開本:16開
混沌工程是在分布式系統(tǒng)上進行實驗的學科,旨在通過實驗提前發(fā)現(xiàn)系統(tǒng)的缺陷,然后加以修復,從而讓系統(tǒng)有能力應對生產(chǎn)環(huán)境中的各種失控情況。本書作者是資深的混沌工程師,有著豐富的從業(yè)經(jīng)驗,他將帶領讀者系統(tǒng)學習混沌工程,了解如何運用這一新興技術手動開展成功的混沌工程實驗游戲日,并通過自動化實現(xiàn)系統(tǒng)的高可用性和反脆弱性。
適讀人群 :本書適合對生產(chǎn)環(huán)境中的代碼負責的人員閱讀,如開發(fā)人員、運維人員、DevOps工程師等。
1.本書是寫給軟件工程師的混沌工程實踐指南;
2.作者從基本概念出發(fā),逐漸展開混沌工程的整體流程;
3.提供配套代碼示例和真實案例說明。
作者介紹
拉斯·邁爾斯(Russ Miles),ChaosIQ公司聯(lián)合創(chuàng)始人兼CEO,擁有近20年的軟件咨詢和培訓經(jīng)驗,致力于提供更簡單、更有效的解決方案。由他參與創(chuàng)建的開源混沌工程項目Chaos Toolkit擁有活躍的用戶群。
譯者介紹
黃威,HPE公司軟件工程師,專注于云原生、物聯(lián)網(wǎng)、網(wǎng)絡通信等領域,擁有十余年的從業(yè)經(jīng)驗,“踩坑”無數(shù),專業(yè)技能積累深厚,尤為秉持開發(fā)與測試相輔相成、密不可分的理念。
第 一部分 混沌工程入門
第 1章 混沌工程精粹 3
1.1 混沌工程的定義 3
1.1.1 混沌工程涉及整個社會技術系統(tǒng) 5
1.1.2 暗債何處尋 6
1.2 混沌工程的流程 7
1.3 混沌工程的實踐 7
1.4 混沌工程和可觀察性 9
1.5 有所謂的“混沌工程師”嗎 9
1.6 小結 9
第 2章 構建假說待辦集 11
2.1 先做實驗? 12
2.2 收集假說 12
2.2.1 事故分析 13
2.2.2 描述系統(tǒng) 13
2.2.3 找到“可能出錯的地方” 14
2.3 引入可能性和影響 15
2.3.1 繪制可能性與影響關系圖 15
2.3.2 添加關注點 17
2.4 構建假說待辦集 19
2.5 小結 20
第3章 規(guī)劃并手動開展游戲日 21
3.1 何謂游戲日 22
3.2 規(guī)劃游戲日 22
3.2.1 選擇一個假說 22
3.2.2 選擇游戲日風格 23
3.2.3 決定誰做參與者,誰做觀察者 24
3.2.4 確定開展游戲日的位置 24
3.2.5 確定游戲日開始及持續(xù)的時間 25
3.2.6 描述游戲日實驗 25
3.2.7 獲得批準 27
3.3 開展游戲日 27
3.4 小結 29
第二部分 混沌工程自動化
第4章 為自動化混沌工程準備工具 33
4.1 安裝Python 3 34
4.2 安裝Chaos Toolkit的命令行界面 34
4.3 小結 36
第5章 編寫并運行自動化混沌工程實驗 37
5.1 建立示例目標系統(tǒng) 37
5.2 探索并發(fā)現(xiàn)缺陷的跡象 40
5.2.1 開展實驗 42
5.2.2 chaos run的內(nèi)在機制 43
5.2.3 穩(wěn)態(tài)偏差可能表示“有改進空間” 44
5.3 改進系統(tǒng) 46
5.4 驗證改進 47
5.5 小結 49
第6章 混沌工程全流程 51
6.1 目標系統(tǒng) 51
6.1.1 平臺:三節(jié)點Kubernetes集群 52
6.1.2 應用程序:單一服務,復制三次 52
6.1.3 人員:集群管理團隊和應用程序團隊 54
6.2 尋找缺陷 55
6.2.1 命名實驗 56
6.2.2 定義穩(wěn)態(tài)假說 56
6.2.3 引入實驗操作方法中的混亂條件 58
6.2.4 在操作方法中使用Kubernetes驅動程序 58
6.3 成為會還原的好公民 60
6.4 整合所有步驟并運行實驗 61
6.5 小結 63
第7章 合作的混沌工程 65
7.1 共享實驗定義 65
7.1.1 將配置值移入配置塊 67
7.1.2 將配置屬性指定為環(huán)境變量 68
7.1.3 將密鑰移到外部 69
7.1.4 劃定密鑰范圍 70
7.2 指定作用模型 72
7.3 創(chuàng)建并共享具有可讀性的混沌工程實驗報告 73
7.3.1 生成實驗的單次運行報告 73
7.3.2 生成并共享實驗的多次運行報告 74
7.4 小結 74
第8章 創(chuàng)建混沌工程實驗驅動程序 75
8.1 無須額外代碼即創(chuàng)建自定義驅動程序 76
8.1.1 用HTTP調(diào)用實現(xiàn)probe和action 76
8.1.2 用進程調(diào)用實現(xiàn)probe和action 78
8.2 用Python創(chuàng)建自定義混沌工程驅動程序 79
8.2.1 為Chaos Toolkit擴展項目新建Python模塊 80
8.2.2 添加probe 81
8.3 小結 86
第三部分 混沌工程操作
第9章 混沌與操作 89
9.1 實驗中的操控 90
9.2 啟用control 92
9.2.1 在實驗代碼中啟用control 93
9.2.2 全局啟用control 93
9.3 小結 93
第 10章 實現(xiàn)混沌工程的可觀察性 95
10.1 為混沌工程實驗加入日志 96
10.2 追蹤混沌工程實驗 98
10.2.1 引入OpenTracing 98
10.2.2 應用OpenTracing control 98
10.3 小結 100
第 11章 人為干預自動化混沌工程實驗 101
11.1 為control新建Chaos Toolkit擴展模塊 102
11.2 加入非常簡單的人機交互控制 102
11.3 跳過或執(zhí)行實驗中的activity 109
11.4 小結 111
第 12章 持續(xù)混沌 113
12.1 何謂持續(xù)混沌 114
12.2 使用cron安排持續(xù)混沌 115
12.2.1 創(chuàng)建腳本執(zhí)行混沌測試 115
12.2.2 將混沌測試腳本添加到cron 117
12.3 用Jenkins調(diào)度持續(xù)混沌 117
12.3.1 下載Jenkins 117
12.3.2 將混沌測試添加到Jenkins構建中 118
12.3.3 使用構建觸發(fā)器調(diào)度Jenkins中的混沌測試 121
12.4 小結 122
附錄A 混沌工程工具包Chaos Toolkit 123
附錄B Chaos Toolkit社區(qū)游樂場 129
關于作者 131
關于封面 131