《Service Mesh實戰:用Istio軟負載實現服務格線》是2019年5月電子工業出版社出版的圖書,作者是周遙。
基本介紹
- 書名:Service Mesh實戰:用Istio軟負載實現服務格線
- 作者:周遙
- ISBN:978-7-121-36192-0
- 頁數:288
- 定價:75
- 出版社:電子工業出版社
- 出版時間:2019年5月
- 裝幀:平裝
- 開本:16
內容簡介,目錄,
內容簡介
《Service Mesh實戰:用Istio軟負載實現服務格線》為格線服務技術的實戰詳解圖書。作者以初學者角度展示軟負載在分散式架構中承擔的角色,引入容器時代主角Kubernetes;再從路由層面全面展開對Service Mesh 與Istio 的系統介紹和深入剖析,包括其功能與特色;最後通過源碼剖析從實現細節上分析Istio 的幾大關鍵設計。不論你是剛開始接觸軟負載的初學者,還是有一定經驗的架構師,都可以在這本細緻入微的圖書中找到想要的實用內容。
目錄
第1 章 分散式發展史 1
1.1 單機小型機時期 . 1
1.1.1 網際網路的誕生2
1.1.2 複雜套用拆分3
1.1.3 遭遇性能問題3
1.2 集群化時期 4
1.2.1 從高端設備到普通PC 4
1.2.2 硬體負載均衡設備 5
1.2.3 資源配置問題5
1.2.4 積少成多的優勢 . 6
1.2.5 集群化架構 6
1.2.6 軟體負載設備7
1.3 服務化時期 8
1.3.1 套用到服務 8
1.3.2 遠程調用 8
1.3.3 虛擬IP 地址 9
1.3.4 複雜的調用關係 10
1.3.5 服務治理 . 11
1.3.6 旁路負載 . 12
1.4 微服務時期 . 13
1.4.1 服務細化 . 13
1.4.2 架構輕量化 14
1.5 服務格線(Service Mesh)新時期 15
1.5.1 多語言的困難 15
1.5.2 指數級增加的系統複雜度 15
1.5.3 Linkerd 誕生 . 16
1.5.4 第一代服務格線架構 17
1.5.5 第二代服務格線架構 18
1.5.6 生產套用情況 19
1.6 本章小結 20
第2 章 Service Mesh:以Istio 為例 . 21
2.1 Istio 的設計理念 . 21
2.1.1 Istio 的誕生背景 22
2.1.2 控制一切的兩個平面 23
2.1.3 接口與平台化 24
2.1.4 中心化與分散化的抉擇 25
2.2 數據平面 27
2.2.1 xDS-API 27
2.2.2 服務負載及流量控制 28
2.2.3 入口與出口網關 31
2.2.4 故障應急機制 32
2.2.5 故障注入 . 32
2.3 控制平面 33
2.3.1 Pilot 結構及功能 33
2.3.2 Mixer 結構及功能 . 34
2.3.3 穩定性與容災能力 . 37
2.3.4 請求屬性(Attribute) 37
2.3.5 操作配置(Operator Config) 38
2.4 安全控制 40
2.4.1 Citadel 結構及功能 42
2.4.2 Istio 身份(Identity) 42
2.4.3 認證(Authentication) 43
2.4.4 鑒權(Authorization) 44
2.5 Hello, Istio! . 45
2.5.1 安裝 Docker 45
2.5.2 安裝 Kubernetes 47
2.5.3 初始化 Master 節點 48
2.5.4 配置 weave 網路外掛程式 49
2.5.5 安裝 Istio 49
2.5.6 向 Istio 部署第一個套用 50
2.5.7 部署 BookInfo 系統 51
2.6 動手體驗Istio 53
2.6.1 幾個基本概念 53
2.6.2 體驗1:按版本路由 . 55
2.6.3 體驗2:按權重分流 . 56
2.7 BookInfo 示例分析 57
2.7.1 IngressGateway . 57
2.7.2 IngressGateway 配置 . 58
2.7.3 Sidecar 路由配置 59
2.8 本章小結 62
第3 章 理解Istio 服務格線 . 65
3.1 Kubernetes 服務組網原理 . 65
3.1.1 四層服務部署結構 . 66
3.1.2 Node 內部流量路由 . 67
3.1.3 Pause 容器 69
3.1.4 節點間通信接口CNI 72
3.1.5 服務發現與 DNS 74
3.2 Sidecar 流量接管原理 . 76
3.2.1 Sidecar 注入方式 76
3.2.2 優雅的容器調試方式 78
3.2.3 Sidecar 流量劫持配置 79
3.3 Istio 服務組網 81
3.3.1 鏈路優勢總結 81
3.3.2 服務傳輸路徑全覽 . 82
3.4 組建零信任安全網路(Zero Trust Network) 83
3.4.1 點對點的安全傳輸 . 84
3.4.2 身份認證(Authentication) 86
3.4.3 安全命名(Secure Naming) . 89
3.4.4 服務鑒權(Authorization) 89
3.4.5 啟用Istio 服務格線安全 91
3.5 Istio 的擴展設計 . 96
3.5.1 Sidecar 對接適配 96
3.5.2 平台適配 100
3.5.3 擴展模板(Template) 104
3.6 本章小結 108
第4 章 Istio 周邊生態一覽 109
4.1 鏈路跟蹤 Jaeger/Zipkin 110
4.1.1 鏈路跟蹤誕生的前因後果 110
4.1.2 Jaeger 能做什麼 110
4.1.3 如何在 Istio 中使用 Jaeger 112
4.1.4 使用 Trace ID 來查詢跟蹤信息 115
4.2 分散式監控 Prometheus 117
4.2.1 監控需求的由來及現狀 . 117
4.2.2 Prometheus 的功能及特點 118
4.2.3 Prometheus 架構簡介 118
4.2.4 如何在 Istio 中使用 Prometheus . 120
4.2.5 配置監控報警來實時掌握套用狀態 124
4.3 監控大盤 Grafana 129
4.3.1 什麼是 Grafana 129
4.3.2 如何在 Istio 中使用 Grafana . 130
4.3.3 生成新的 Grafana 儀錶盤 132
4.3.4 配置 Grafana 報警通道 135
4.4 分散式日誌 Fluentd 137
4.4.1 什麼是 Fluentd 137
4.4.2 如何在 Istio 中使用 Fluentd . 139
4.4.3 在 Kibana 中查看日誌 . 147
4.4.4 Elasticsearch 映射配置 149
4.5 服務圖譜 156
4.6 本章小結 157
第5 章 Istio 部分源碼剖析 159
5.1 Sidecar(Envoy)源碼分析 160
5.1.1 準備編輯器 . 160
5.1.2 編譯Envoy 調試版本 161
5.1.3 配置 Envoy 調試環境 162
5.1.4 整體架構 168
5.1.5 過濾鏈與 HTTP 代理 171
5.1.6 xDS 相關邏輯 182
5.2 Pilot 源碼分析 187
5.2.1 Go 語言簡介 187
5.2.2 編譯 Istio 調試版本 188
5.2.3 配置 Istio 調試環境 192
5.2.4 用單元測試快速調試 195
5.2.5 如何進行啟動調試 196
5.2.6 Pilot 初始化與平台對接 198
5.2.7 模型數據映射及CRD 監聽 203
5.2.8 Envoy xDS 對接服務 206
5.3 Mixer 源碼分析 211
5.3.1 Mixer 初始化邏輯 213
5.3.2 前置檢查邏輯詳解 217
5.3.3 適配器數據流及模板原理 223
5.3.4 快取原理與實現 233
5.4 本章小結 244
第6 章 服務格線企業實踐 . 245
6.1 升級,值得嗎 . 246
6.1.1 升級服務格線的基本要求 246
6.1.2 如何評估是否需要升級 . 247
6.2 從架構上考慮的問題 . 248
6.2.1 當前系統所處的狀態 248
6.2.2 遷移中需要考慮的幾點 . 249
6.3 螞蟻金服SOFAMesh 簡介 . 251
6.3.1 項目組成 251
6.3.2 特色功能 252
6.4 螞蟻金服漸近式遷移最佳實踐 . 253
6.4.1 制定總體路線. 253
6.4.2 保證遷移前後服務網路互通 256
6.4.3 透明攔截帶來的彈性升級 256
6.4.4 遺留架構在遷移過程中的問題 257
6.5 本章小結 260
第7 章 結語及附錄 261
7.1 服務格線在整體架構中的定位 . 261
7.1.1 現代軟負載應具備的功能 261
7.1.2 服務格線在系統技術棧中的定位 . 262
7.2 軟負載發展方向與未來 263
7.2.1 技術發展的本質 263
7.2.2 再談軟負載的發展 264
7.3 附錄——A-Mixer 所有的支持屬性值 266
7.4 引用目錄 26
1.1 單機小型機時期 . 1
1.1.1 網際網路的誕生2
1.1.2 複雜套用拆分3
1.1.3 遭遇性能問題3
1.2 集群化時期 4
1.2.1 從高端設備到普通PC 4
1.2.2 硬體負載均衡設備 5
1.2.3 資源配置問題5
1.2.4 積少成多的優勢 . 6
1.2.5 集群化架構 6
1.2.6 軟體負載設備7
1.3 服務化時期 8
1.3.1 套用到服務 8
1.3.2 遠程調用 8
1.3.3 虛擬IP 地址 9
1.3.4 複雜的調用關係 10
1.3.5 服務治理 . 11
1.3.6 旁路負載 . 12
1.4 微服務時期 . 13
1.4.1 服務細化 . 13
1.4.2 架構輕量化 14
1.5 服務格線(Service Mesh)新時期 15
1.5.1 多語言的困難 15
1.5.2 指數級增加的系統複雜度 15
1.5.3 Linkerd 誕生 . 16
1.5.4 第一代服務格線架構 17
1.5.5 第二代服務格線架構 18
1.5.6 生產套用情況 19
1.6 本章小結 20
第2 章 Service Mesh:以Istio 為例 . 21
2.1 Istio 的設計理念 . 21
2.1.1 Istio 的誕生背景 22
2.1.2 控制一切的兩個平面 23
2.1.3 接口與平台化 24
2.1.4 中心化與分散化的抉擇 25
2.2 數據平面 27
2.2.1 xDS-API 27
2.2.2 服務負載及流量控制 28
2.2.3 入口與出口網關 31
2.2.4 故障應急機制 32
2.2.5 故障注入 . 32
2.3 控制平面 33
2.3.1 Pilot 結構及功能 33
2.3.2 Mixer 結構及功能 . 34
2.3.3 穩定性與容災能力 . 37
2.3.4 請求屬性(Attribute) 37
2.3.5 操作配置(Operator Config) 38
2.4 安全控制 40
2.4.1 Citadel 結構及功能 42
2.4.2 Istio 身份(Identity) 42
2.4.3 認證(Authentication) 43
2.4.4 鑒權(Authorization) 44
2.5 Hello, Istio! . 45
2.5.1 安裝 Docker 45
2.5.2 安裝 Kubernetes 47
2.5.3 初始化 Master 節點 48
2.5.4 配置 weave 網路外掛程式 49
2.5.5 安裝 Istio 49
2.5.6 向 Istio 部署第一個套用 50
2.5.7 部署 BookInfo 系統 51
2.6 動手體驗Istio 53
2.6.1 幾個基本概念 53
2.6.2 體驗1:按版本路由 . 55
2.6.3 體驗2:按權重分流 . 56
2.7 BookInfo 示例分析 57
2.7.1 IngressGateway . 57
2.7.2 IngressGateway 配置 . 58
2.7.3 Sidecar 路由配置 59
2.8 本章小結 62
第3 章 理解Istio 服務格線 . 65
3.1 Kubernetes 服務組網原理 . 65
3.1.1 四層服務部署結構 . 66
3.1.2 Node 內部流量路由 . 67
3.1.3 Pause 容器 69
3.1.4 節點間通信接口CNI 72
3.1.5 服務發現與 DNS 74
3.2 Sidecar 流量接管原理 . 76
3.2.1 Sidecar 注入方式 76
3.2.2 優雅的容器調試方式 78
3.2.3 Sidecar 流量劫持配置 79
3.3 Istio 服務組網 81
3.3.1 鏈路優勢總結 81
3.3.2 服務傳輸路徑全覽 . 82
3.4 組建零信任安全網路(Zero Trust Network) 83
3.4.1 點對點的安全傳輸 . 84
3.4.2 身份認證(Authentication) 86
3.4.3 安全命名(Secure Naming) . 89
3.4.4 服務鑒權(Authorization) 89
3.4.5 啟用Istio 服務格線安全 91
3.5 Istio 的擴展設計 . 96
3.5.1 Sidecar 對接適配 96
3.5.2 平台適配 100
3.5.3 擴展模板(Template) 104
3.6 本章小結 108
第4 章 Istio 周邊生態一覽 109
4.1 鏈路跟蹤 Jaeger/Zipkin 110
4.1.1 鏈路跟蹤誕生的前因後果 110
4.1.2 Jaeger 能做什麼 110
4.1.3 如何在 Istio 中使用 Jaeger 112
4.1.4 使用 Trace ID 來查詢跟蹤信息 115
4.2 分散式監控 Prometheus 117
4.2.1 監控需求的由來及現狀 . 117
4.2.2 Prometheus 的功能及特點 118
4.2.3 Prometheus 架構簡介 118
4.2.4 如何在 Istio 中使用 Prometheus . 120
4.2.5 配置監控報警來實時掌握套用狀態 124
4.3 監控大盤 Grafana 129
4.3.1 什麼是 Grafana 129
4.3.2 如何在 Istio 中使用 Grafana . 130
4.3.3 生成新的 Grafana 儀錶盤 132
4.3.4 配置 Grafana 報警通道 135
4.4 分散式日誌 Fluentd 137
4.4.1 什麼是 Fluentd 137
4.4.2 如何在 Istio 中使用 Fluentd . 139
4.4.3 在 Kibana 中查看日誌 . 147
4.4.4 Elasticsearch 映射配置 149
4.5 服務圖譜 156
4.6 本章小結 157
第5 章 Istio 部分源碼剖析 159
5.1 Sidecar(Envoy)源碼分析 160
5.1.1 準備編輯器 . 160
5.1.2 編譯Envoy 調試版本 161
5.1.3 配置 Envoy 調試環境 162
5.1.4 整體架構 168
5.1.5 過濾鏈與 HTTP 代理 171
5.1.6 xDS 相關邏輯 182
5.2 Pilot 源碼分析 187
5.2.1 Go 語言簡介 187
5.2.2 編譯 Istio 調試版本 188
5.2.3 配置 Istio 調試環境 192
5.2.4 用單元測試快速調試 195
5.2.5 如何進行啟動調試 196
5.2.6 Pilot 初始化與平台對接 198
5.2.7 模型數據映射及CRD 監聽 203
5.2.8 Envoy xDS 對接服務 206
5.3 Mixer 源碼分析 211
5.3.1 Mixer 初始化邏輯 213
5.3.2 前置檢查邏輯詳解 217
5.3.3 適配器數據流及模板原理 223
5.3.4 快取原理與實現 233
5.4 本章小結 244
第6 章 服務格線企業實踐 . 245
6.1 升級,值得嗎 . 246
6.1.1 升級服務格線的基本要求 246
6.1.2 如何評估是否需要升級 . 247
6.2 從架構上考慮的問題 . 248
6.2.1 當前系統所處的狀態 248
6.2.2 遷移中需要考慮的幾點 . 249
6.3 螞蟻金服SOFAMesh 簡介 . 251
6.3.1 項目組成 251
6.3.2 特色功能 252
6.4 螞蟻金服漸近式遷移最佳實踐 . 253
6.4.1 制定總體路線. 253
6.4.2 保證遷移前後服務網路互通 256
6.4.3 透明攔截帶來的彈性升級 256
6.4.4 遺留架構在遷移過程中的問題 257
6.5 本章小結 260
第7 章 結語及附錄 261
7.1 服務格線在整體架構中的定位 . 261
7.1.1 現代軟負載應具備的功能 261
7.1.2 服務格線在系統技術棧中的定位 . 262
7.2 軟負載發展方向與未來 263
7.2.1 技術發展的本質 263
7.2.2 再談軟負載的發展 264
7.3 附錄——A-Mixer 所有的支持屬性值 266
7.4 引用目錄 26