寫給架構師的Linux實踐:設計并實現(xiàn)基于Linux的IT解決方案
定 價:89 元
叢書名:架構師書庫
- 作者:[哥] 丹尼斯?薩拉曼卡(Denis Salamanca)埃斯特班?弗洛雷斯(
- 出版時間:2020/5/1
- ISBN:9787111654353
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP316.85
- 頁碼:0
- 紙張:
- 版次:
- 開本:16開
本書首先概述 Linux 項目的設計方法,然后講解在設計此類項目時,所要注重的核心理念,以及在用 Gluster File System(GlusterFS)實現(xiàn)高性能的存儲方案時,必須對哪幾個重要問題做出抉擇。接著介紹運用 Kubernetes對容器化應用程序的部署與管理工作進行編排及協(xié)調,并且介紹怎樣針對 NGINX 應用程序配置 Kubernetes。之后講解如何實現(xiàn) ELK 棧,并介紹了構成該棧的 Elasticsearch、Logstash,以及 Kibana 等部件。*后,本書介紹怎樣安裝并配置 SaltStack 方案,以管理各種Linux發(fā)行版,而且還探討了一些設計經驗與設計原則,供你在制作解決方案時參考。通過本書的學習,讀者可以熟練地構建出運行復雜程序所需的高性能工作環(huán)境。
譯者序
前言
作者簡介
評審者簡介
第一部分 用GlusterFS 制定高性能的存儲解決方案
第1章 設計方法簡介 …… 2
1.1 定義解決方案設計的多個階段及其意義 …… 2
1.2 分析問題并準確地提出問題 …… 3
1.2.1 技術角度 …… 4
1.2.2 業(yè)務角度 …… 5
1.2.3 功能角度 …… 6
1.3 考慮可行的解決方案 …… 6
1.4 把解決方案實現(xiàn)出來 …… 9
1.5 小結 …… 9
習題 …… 10
延伸閱讀 …… 10
第2章 定義 GlusterFS 存儲 …… 11
2.1 技術需求 …… 11
2.2 什么是集群 …… 11
2.2.1 用集群處理計算任務 …… 11
2.2.2 存儲集群 …… 13
2.3 什么是 GlusterFS …… 13
2.4 塊存儲、文件存儲與對象存儲 …… 15
2.4.1 塊存儲 …… 16
2.4.2 文件存儲 …… 17
2.4.3 對象存儲 …… 18
2.5 為什么選擇 GlusterFS …… 20
2.5.1 GlusterFS 的特性 …… 21
2.5.2 Gluster 存儲卷的類型 …… 22
2.6 對高冗余存儲的需求 …… 25
2.7 對高性能存儲的需求 …… 27
2.8 并行 I/O …… 28
2.9 小結 …… 28
習題 …… 28
延伸閱讀 …… 29
第3章 架構存儲集群 …… 30
3.1 技術需求 …… 30
3.2 GlusterFS 對計算機的要求 …… 30
3.2.1 RAM …… 31
3.2.2 CPU …… 31
3.3 需要多大的存儲空間 …… 32
3.3.1 GlusterFS的卷類型 …… 32
3.3.2 應用程序所需的空間 …… 33
3.3.3 項目的增長情況 …… 33
3.4 性能方面的注意事項 …… 34
3.4.1 吞吐量 …… 34
3.4.2 延遲 …… 34
3.4.3 IOPS …… 35
3.4.4 I/O 的大小 …… 35
3.4.5 GlusterFS 的性能 …… 35
3.5 確保高可用性的最佳方法 …… 37
3.5.1 用復制卷確保高可用性 …… 37
3.5.2 用分散卷確保高可用性 …… 38
3.5.3 地域復制 …… 38
3.6 根據工作類型來確定需求 …… 39
3.6.1 文檔 …… 39
3.6.2 系統(tǒng)工具 …… 39
3.6.3 文件的類型與大小 …… 39
3.6.4 提出正確的問題 …… 40
3.7 小結 …… 41
習題 …… 41
延伸閱讀 …… 42
第4章 在云基礎設施上使用 GlusterFS …… 43
4.1 技術需求 …… 43
4.2 設定后端存儲所需的 brick …… 44
4.2.1 部署 Azure …… 44
4.2.2 用 ZFS 做 brick 的后端 …… 45
4.3 在節(jié)點上安裝 GlusterFS …… 49
4.3.1 安裝必要的軟件包 …… 49
4.3.2 創(chuàng)建 trusted pool …… 50
4.4 創(chuàng)建存儲卷 …… 51
4.4.1 創(chuàng)建分散式的存儲卷 …… 51
4.4.2 掛載存儲卷 …… 52
4.5 優(yōu)化性能 …… 52
4.5.1 調整 GlusterFS …… 52
4.5.2 調整 ZFS …… 53
4.6 小結 …… 54
習題 …… 54
延伸閱讀 …… 55
第5章 分析 Gluster 系統(tǒng)的性能 …… 56
5.1 技術需求 …… 56
5.2 概述目前的實現(xiàn)方案 …… 56
5.3 性能測試 …… 57
5.3.1 理論上的性能 …… 57
5.3.2 性能工具 …… 58
5.4 可用性測試 …… 63
5.5 擴展 …… 63
5.6 小結 …… 63
習題 …… 64
延伸閱讀 …… 64
第二部分 用Kubernetes制作可用性高的Nginx Web應用程序
第6章 創(chuàng)建可用性高的自我修復架構 …… 66
6.1 微服務 …… 66
6.2 創(chuàng)建容器鏡像 …… 69
6.2.1 FROM 指令 …… 70
6.2.2 LABEL 指令 …… 70
6.2.3 RUN 指令 …… 71
6.2.4 ENV指令 …… 71
6.2.5 COPY指令 …… 72
6.2.6 EXPOSE指令 …… 73
6.2.7 CMD與ENTRYPOINT指令 …… 73
6.3 構建容器鏡像時的經驗 …… 76
6.4 容器編排 …… 80
6.5 Kubernetes …… 81
6.6 小結 …… 82
習題 …… 82
延伸閱讀 …… 82
參考資料 …… 83
第7章 了解 Kubernetes 集群的核心組件 …… 84
7.1 控制面的各種 Kubernetes 組件 …… 84
7.1.1 kube-apiserver …… 85
7.1.2 kube-controller-manager …… 85
7.1.3 kube-scheduler …… 85
7.1.4 etcd 數據庫 …… 85
7.2 Kubernetes 的工作節(jié)點 …… 86
7.2.1 容器運行時 …… 86
7.2.2 kubelet …… 86
7.2.3 kube-proxy …… 87
7.3 Kubernetes 的對象 …… 87
7.3.1 Kubernetes 的基本對象:pod …… 89
7.3.2 deployment 對象 …… 91
7.3.3 服務 …… 93
7.3.4 Kubernetes 與持久存儲 …… 95
7.4 小結 …… 98
習題 …… 98
延伸閱讀 …… 99
第8章 架構 Kubernetes 集群 …… 100
8.1 各種 Kubernetes 組件的規(guī)模與尺寸問題 …… 100
8.1.1 etcd 方面的問題 …… 100
8.1.2 kube-apiserver 的數量與規(guī)格 …… 101
8.1.3 工作節(jié)點 …… 101
8.1.4 負載均衡器方面的問題 …… 102
8.2 存儲方面的問題 …… 103
8.3 網絡方面的需求 …… 104
8.4 定制 kube 對象 …… 106
8.4.1 名稱空間 …… 106
8.4.2 對名稱空間所能使用的資源做出限制 …… 107
8.4.3 定制 pod …… 108
8.5 小結 …… 111
習題 …… 112
延伸閱讀 …… 113
第9章 配置并部署 Kubernetes …… 114
9.1 部署基礎設施 …… 114
9.1.1 安裝 Azure CLI …… 114
9.1.2 宏觀設計概述 …… 115
9.1.3 配置網絡資源 …… 116
9.1.4 配置計算資源 …… 117
9.1.5 把 management VM 準備好 …… 119
9.1.6 Kubeconfig …… 127
9.1.7 為控制面的各組件安裝必要的二進制文件 …… 130
9.1.8 為 kubelet 設定 RBAC 權限 …… 137
9.1.9 設置負載均衡器 …… 138
9.1.10 設置工作節(jié)點 …… 144
9.1.11 配置 Kubernetes 的網絡 …… 148
9.1.12 DNS 服務器 …… 150
9.1.13 云平臺所提供的托管式 Kubernetes 解決方案 …… 150
9.2 小結 …… 151
習題 …… 152
延伸閱讀 …… 152
參考資料 …… 152
第三部分 Elastic Stack(ELK Stack)
第10章 用 ELK Stack 進行監(jiān)控 …… 154
10.1 技術需求 …… 154
10.2 為什么要做數據監(jiān)測 …… 154
10.2.1 通過歷史數據制定決策 …… 155
10.2.2 主動探查有可能出現(xiàn)的問題 …… 156
10.2.3 了解整套產品的性能 …… 156
10.2.4 合理制定預算計劃 …… 157
10.3 集中式的日志 …… 157
10.4 Elasticsearch 概述 …… 159
10.4.1 迅速 …… 159
10.4.2 易于擴展 …… 159
10.4.3 可用性高 …… 159
10.5 Logstash …… 159
10.5.1 Grok …… 160
10.5.2 定制的模式 …… 160
10.6 用 Kibana 進行整合 …… 161
10.7 小結 …… 162
習題 …… 163
延伸閱讀 …… 163
第11章 設計 ELK Stack …… 164
11.1 技術要求 …… 164
11.2 Elasticsearch 對 CPU 的要求 …… 165
11.2.1 CPU 的數量 …… 165
11.2.2 CPU 的速度 …… 165
11.2.3 CPU 對性能的影響 …… 165
11.2.4 與 CPU 規(guī)格有關的建議 …… 167
11.3 Elasticsearch 對內存的要求 …… 167
11.3.1 文件系統(tǒng)的緩存 …… 168
11.3.2 禁用 swap …… 169
11.3.3 因內存不足而導致的問題 …… 169
11.3.4 與內存有關的建議 …… 171
11.4 Elasticsearch 對存儲設備的要求 …… 172
11.4.1 對存儲容量的要求 …… 172
11.4.2 對存儲性能的要求 …… 172
11.4.3 與存儲設備有關的一些建議 …… 172
11.5 Logstash 與 Kibana 的要求 …… 173
11.5.1 Logstash …… 173
11.5.2 Kibana …… 173
11.6 小結 …… 174
習題 …… 175
延伸閱讀 …… 175
第12章 用 Elasticsearch、Logstash 與 Kibana管理日志 …… 176
12.1 技術需求 …… 176
12.2 概述 Elastic Stack 的部署工作 …… 177
12.3 安裝 Elasticsearch …… 178
12.3.1 配置 RPM 軟件倉庫 …… 178
12.3.2 Elasticsearch 的數據目錄 …… 179
12.4 配置 Elasticsearch …… 182
12.4.1 修改 Elasticsearch 的 YAML 配置文件 …… 182
12.4.2 啟動 Elasticsearch …… 185
12.4.3 添加 Elasticsearch 節(jié)點 …… 186
12.5 安裝Logstash與Kibana …… 187
12.6 配置 Kibana …… 192
12.6.1 修改 Kibana 的 YAML 文件 …… 192
12.6.2 起到協(xié)調作用的 Elasticsearch 節(jié)點 …… 192
12.7 啟動 Logstash 與 Kibana …… 193
12.8 什么是 Beats …… 194
12.8.1 Filebeat …… 194
12.8.2 Metricbeat …… 195
12.9 把必要的 Beats 安裝好 …… 195
12.10 配置 Beats 客戶端 …… 196
12.10.1 修改 Filebeat 的 YAML 文件 …… 196
12.10.2 修改 Metricbeat 的 YAML 文件 …… 198
12.11 后續(xù)步驟 …… 199
12.12 小結 …… 200
習題 …… 200
延伸閱讀 …… 201
第四部分 用 Saltstack 管理系統(tǒng)
第13章 用 Salt方案解決管理問題 …… 204
13.1 把系統(tǒng)管理工作集中到同一個地方 …… 204
13.1.1 新技術給系統(tǒng)管理工作帶來的壓力 …… 204
13.1.2 掌控自己的基礎設施 …… 205
13.1.3 用集中化的管理工具來分散工作壓力 …… 205
13.1.4 利用代碼讓系統(tǒng)進入預期狀態(tài) …… 206
13.2 理解NaCI …… 208
13.2.1 Salt 簡介 …… 208
13.2.2 SaltStack 平臺 …… 209
13.2.3 Salt的功能 …… 211
13.3 小結 …… 216
習題 …… 216
延伸閱讀 …… 216
第14章 實踐Salt方案 …… 218
14.1 正式接觸Salt …… 218
14.1.1 本章預設的情境 …… 218
14.1.2 通過Terraform搭建最初的基礎設施 …… 219
14.2 用包管理器安裝Salt …… 229
14.2.1 在CentOS系統(tǒng)上用yum安裝Salt …… 229
14.2.2 在 Ubuntu 系統(tǒng)上用apt-get安裝Salt …… 232
14.2.3 用 bootstrap 腳本安裝 Salt …… 233
14.2.4 確保主節(jié)點與從節(jié)點之間能夠相互通信 …… 233
14.2.5 創(chuàng)建并配置Salt規(guī)則 …… 237
14.3 小結 …… 244
第15章 設計經驗 …… 246
15.1 根據項目所在的環(huán)境進行設計 …… 246
15.2 怎樣設計本地項目 …… 247
15.2.1 運行在實體服務器上的項目 …… 247
15.2.2 運行在虛擬機上的項目 …… 248
15.3 怎樣設計云端環(huán)境中的項目 …… 249
15.4 將項目遷移到云端 …… 249
15.4.1 評估 …… 250
15.4.2 遷移 …… 251
15.4.3 DevOps …… 253
15.5 小結 …… 258
習題 …… 259
延伸閱讀 …… 259
參考答案 …… 260