寫給架構師的 Linux 實踐:設計並實現基於 Linux 的 IT 解決方案 (Hands-On Linux for Architects: Design and implement Linux-based IT solutions)

Denis Salamanca , Esteban Flores

買這商品的人也買了...

商品描述

本書首先概述Linux 項目的設計方法,然後講解在設計此類項目時,
所要注重的核心理念,以及在用Gluster File System(GlusterFS)
實現高性能的存儲方案時,必須對哪幾個重要問題做出抉擇。
接著介紹運用Kubernetes對容器化應用程序的部署與管理工作進行編排及協調,
並且介紹怎樣針對NGINX 應用程序配置Kubernetes。
之後講解如何實現ELK 棧,並介紹了構成該棧的Elasticsearch、Logstash,以及Kibana 等部件。
*後,本書介紹怎樣安裝並配置SaltStack 方案,以管理各種Linux發行版,
而且還探討了一些設計經驗與設計原則,供你在製作解決方案時參考。
通過本書的學習,讀者可以熟練地構建出運行複雜程序所需的高性能工作環境。

作者簡介

Denis Salamanca

是一位技術謎,他與伴侶及兒子住在哥斯達黎加。
Salamanca從20歲起就從事IT工作,並在VMware、Microsoft、
Hewlett-Packard Enterprise等多家知名企業就職。
他目前在雲端、存儲、Linux、Docker及虛擬化等不同領域,
獲得了共計十多項技術認證,此外還參與了Linux認證的製定工作,
該認證是CompTIA(Computing Technology Industry Association,美國計算機行業協會)
Linux Subject Matter Experts and Technical Advisory Committee的一部分。


Esteban Flores

從8歲起就開始擺弄電腦。
他曾供職於Hewlett-Packard Enterprise、VMware、Akamai及Microsoft等許多知名公司。
他有十年工作經驗,而且喜歡嘗試新技術,這促使他在工作過程中體驗不同的職位。
存儲技術一直都是他的強項,他尤其關注性能調整與優化。

目錄大綱

譯者序
前言
作者簡介
評審者簡介
部分用GlusterFS制定高性能的存儲解決方案
第1章設計方法簡介…… 2
1.1定義解決方案設計的多個階段及其意義…… 2
1.2分析問題並準確地提出問題…… 3
1.2.1技術角度…… 4
1.2.2業務角度…… 5
1.2.3功能角度…… 6
1.3考慮可行的解決方案…… 6
1.4把解決方案實現出來…… 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系統工具…… 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在節點上安裝GlusterFS …… 49
4.3.1安裝必要的軟件包…… 49
4.3.2創建trusted pool …… 50
4.4創建存儲卷…… 51
4.4.1創建分散式的存儲卷…… 51
4.4.2掛載存儲卷…… 52
4.5優化性能… … 52
4.5.1調整GlusterFS …… 52
4.5.2調整ZFS …… 53
4.6小結…… 54
習題…… 54
延伸閱讀…… 55

第5章分析Gluster系統的性能…… 56
5.1技術需求…… 56
5.2概述目前的實現方案…… 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章創建可用性高的自我修復架構…… 66
6.1微服務…… 66
6.2創建容器鏡像…… 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的工作節點…… 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組件的規模與尺寸問題…… 100
8.1.1 etcd方面的問題…… 100
8.1.2 kube-apiserver的數量與規格…… 101
8.1.3工作節點…… 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設置工作節點…… 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進行監控…… 154
10.1技術需求…… 154
10.2為什麼要做數據監測…… 154
10.2.1通過歷史數據制定決策…… 155
10.2.2主動探查有可能出現的問題…… 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規格有關的建議…… 167
11.3 Elasticsearch對內存的要求…… 167
11.3.1文件系統的緩存…… 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節點…… 186
12.5安裝Logstash與Kibana …… 187
12.6配置Kibana …… 192
12.6.1修改Kibana的YAML文件…… 192
12.6.2起到協調作用的Elasticsearch節點…… 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後續步驟…… 199
12.12小結…… 200
習題…… 200
延伸閱讀…… 201

第四部分用Saltstack管理系統
13章用Salt方案解決管理問題…… 204
13.1把系統管理工作集中到同一個地方…… 204
13.1.1新技術給系統管理工作帶來的壓力…… 204
13.1.2掌控自己的基礎設施…… 205
13.1.3用集中化的管理工具來分散工作壓力…… 205
13.1.4利用代碼讓系統進入預期狀態…… 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系統上用yum安裝Salt …… 229
14.2.2在Ubuntu系統上用apt-get安裝Salt …… 232
14.2.3用bootstrap腳本安裝Salt …… 233
14.2.4確保主節點與從節點之間能夠相互通信…… 233
14.2.5創建並配置Salt規則…… 237
14.3小結…… 244

15章設計經驗…… 246
15.1根據項目所在的環境進行設計…… 246
15.2怎樣設計本地項目…… 247
15.2.1運行在實體服務器上的項目…… 247
15.2.2運行在虛擬機上的項目…… 248
15.3怎樣設計雲端環境中的項目…… 249
15.4將項目遷移到雲端…… 249
15.4.1評估…… 250
15.4.2遷移… … 251
15.4.3 DevOps …… 253
15.5小結…… 258
習題…… 259
延伸閱讀…… 259
參考答案…… 260