《微服務運維實戰(第二卷)》是2019年華中科技大學出版社出版的圖書,作者是維克托·法西克(Viktor,Farcic) 。
基本介紹
- 中文名:微服務運維實戰(第二卷)
- 作者:維克托·法西克(Viktor,Farcic)
- 出版社:華中科技大學出版社
- 出版時間:2019年8月1日
- ISBN:9787568053532
內容簡介,圖書目錄,作者簡介,
內容簡介
《微服務運維實戰(第二卷)》在第一卷的基礎上,以時下熱門的Docker Swarm為例,詳細介紹微服務和容器在軟體持續集成和部署中的套用。本書重點講解如何在Docker Swarm上構建、測試、部署、監控微服務,幫助讀者打造大規模、高效、可靠、可快速恢復的軟體系統。
圖書目錄
第1章 利用Docker容器持續集成 1
1.1 完全Docker化的手動持續集成流程 3
1.2 運行單元測試並構建服務的二進制檔案 5
1.3 構建服務鏡像 7
1.4 運行模擬測試 10
1.5 推送鏡像到鏡像庫 12
第2章 搭建並運行Swarm集群 17
2.1 可擴展性 18
2.2 軸向擴展 19
X軸擴展 20
Y軸擴展 21
Z軸擴展 22
2.3 集群 22
2.4 Docker Swarm模式 23
2.5 搭建一個Swarm集群 25
2.6 在Swarm集群上部署服務 28
2.7 擴展服務 30
2.8 故障轉移 31
2.9 現在怎么辦 32
第3章 Docker Swarm網路和反向代理 33
3.1 搭建一個集群 34
3.2 以高可用性運行安全的和容錯的服務需求 35
3.3 隔離資料庫的運行 37
3.4 通過反向代理運行服務 41
3.5 創建一個反向代理服務負責根據基URL路由請求 42
3.6 對一個服務的所有實例實施負載均衡的請求 47
3.7 現在怎么辦 50
第4章 Swarm集群內的服務發現 51
4.1 沒有註冊中心Docker Swarm會怎樣 51
4.2 獨立的Docker Swarm加上服務發現會是什麼樣的 55
4.3 Swarm集群中的服務發現 56
4.4 我們需要服務發現嗎 57
4.5 將Consul設定為Swarm集群內的服務註冊中心 58
4.6 縮放有狀態實例時出現的問題 63
4.7 使用服務註冊中心來存儲狀態 64
4.8 發現組成服務的所有實例的地址 69
4.9 使用服務註冊中心或鍵值存儲來存儲服務狀態 71
4.10 現在怎么辦 74
第5章 使用Docker容器進行持續交付和部署 75
5.1 定義持續交付環境 76
5.2 搭建持續交付集群 77
5.3 使用節點標籤來約束服務 80
5.4 創建服務 83
5.5 示範持續交付步驟 85
5.6 從持續交付到持續部署走得更遠 90
5.7 現在怎么辦 91
第6章 使用Jenkins自動化持續部署流程 93
6.1 Jenkins架構 93
6.2 搭建生產環境 94
6.3 Jenkins服務 95
6.4 Jenkins故障轉移 99
6.5 Jenkins代理 100
6.6 在生產和類生產環境中創建服務 108
6.7 使用Jenkins自動化持續部署流程 110
6.8 創建Jenkins流水線作業 111
6.9 定義流水線節點 113
6.10 定義流水線階段 115
6.11 定義流水線步驟 116
6.12 現在怎么辦 121
第7章 探索Docker遠程API 123
7.1 搭建環境 124
7.2 通過Docker Remote API操作Docker Swarm 125
7.3 使用Docker Remote API自動配置代理 134
7.4 將Swarm Listener與代理相結合 135
7.5 自動重新配置代理 136
7.6 從代理中刪除服務 138
7.7 現在怎么辦 138
第8章 使用Docker Stack和Compose YAML檔案來
部署Swarm Services 141
8.1 搭建Swarm集群 142
8.2 通過Docker Stack命令創建Swarm服務 142
8.3 部署更多stack 145
8.4 stack,用還是不用 147
8.5 清理 147
第9章 定義日誌策略 149
9.1 集中日誌的需求 151
9.2 將ElasticSearch設定為日誌資料庫 153
9.3 將LogStash設定為日誌解析器和轉發器 154
9.4 從Swarm集群內任意位置運行的所有容器轉發日誌 157
9.5 探索日誌 161
9.6 討論其他日誌解決方案 166
9.7 現在怎么辦 167
第10章 收集指標與監控集群 169
10.1 集群監控系統的需求 169
10.2 選擇正確的資料庫來存儲系統指標 171
10.3 創建集群 173
10.4 Prometheus指標 175
10.5 導出系統範圍的指標 176
10.6 拉取、查詢和可視化Prometheus指標 181
10.7 使用Grafana創建看板 188
10.8 在Grafana中探索Docker Swarm和容器概覽儀錶板 195
10.9 通過儀錶板指標調整服務 201
10.10 監控佳實踐 204
10.11 現在怎么辦 205
第11章 擁抱毀滅:寵物與牛 207
11.1 現在怎么辦 209
第12章 在Amazon Web Services中創建和管理Docker Swarm集群 211
12.1 安裝AWS CLI並設定環境變數 212
12.2 使用Docker Machine和AWS CLI來配置Swarm集群 215
12.3 使用Docker在AWS中建立Swarm集群 223
12.4 在AWS中使用Docker自動配置Swarm集群 232
12.5 使用Packer和Terraform來創建Swarm集群 236
12.6 使用Packer創建Amazon機器鏡像 236
12.7 在AWS中使用Terraform創建Swarm集群 241
12.8 在AWS中選擇正確的工具創建和管理Swarm集群 257
12.9 是使用還是不使用Docker Machine 257
12.10 是使用還是不使用Docker for AWS 258
12.11 是使用還是不使用Terraform 260
12.12 後的結論 263
第13章 在DigitalOcean中創建和管理Docker Swarm集群 265
13.1 設定環境變數 267
13.2 使用Docker Machine和DigitalOcean API創建Swarm集群 269
13.3 使用Packer和Terraform創建Swarm集群 275
13.4 使用Packer創建DigitalOcean快照 276
13.5 在DigitalOcean中使用Terraform創建一個Swarm集群 280
13.6 選擇合適的工具創建和管理DigitalOcean中的Swarm集群 298
13.7 是使用還是不使用Docker Machine 299
13.8 是使用還是不使用Terraform 300
13.9 後的結論 301
13.10 是使用還是不使用DigitalOcean 302
第14章 在Swarm集群中創建和管理有狀態的服務 303
14.1 探索十二因素應用程式方法論 303
14.2 設定Swarm集群和代理 308
14.3 運行不需要數據持久性的有狀態服務 312
14.4 在主機上持久化有狀態的服務 317
14.5 在網路檔案系統上持久化有狀態服務 318
14.6 數據卷的編排 323
14.7 使用REX-Ray持久化有狀態服務 323
14.8 為有狀態服務選擇持久性方法 329
14.9 在Packer和Terraform中加入REX-Ray 331
14.10 無複製的有狀態服務持久化 337
14.11 使用同步和複製持久化有狀態服務 337
14.12 持久化Docker Flow Proxy的狀態 338
14.13 持久化MongoDB的狀態 340
14.14 通過Swarm服務初始化MongoDB副本集 349
14.15 現在怎么辦 353
第15章 在Docker Swarm集群中管理secrets 355
15.1 創建secrets 355
15.2 使用secrets 357
15.3 一個使用secrets的真實世界的例子 358
15.4 在Docker Compose中使用secrets 359
15.5 使用secrets的常用方法 361
15.6 現在怎么辦 362
附錄A 使用Docker和Prometheus監控你的GitHub庫 363
A.1 Docker、Prometheus和Grafana 363
A.2 入門 364
A.3 配置 364
A.4 後續配置 365
A.5 安裝dashboard 366
A.6 結論 367
索引 369
作者簡介
Viktor Farcic是CloudBees公司的資深架構師、諮詢師,他有著二十多年的軟體開發經驗,精通多種程式語言(包括C、C++、C#、Java、Perl、Python、Scala、JavaScript等),目前他感興趣的領域是微服務、持續集成、持續部署、測試驅動開發。