寫給架構師的Linux實踐 設計並實現基於Linux的IT解
作 者: (哥斯)丹尼斯·薩拉曼卡(Denis Salamanca),(哥斯)埃斯特班·弗洛雷斯(Esteban Flores) 著 愛飛翔 譯
定 價: 89
出?版?社: 機械工業出版社
出版日期: 2020年05月01日
頁 數: 265
裝 幀: 平裝
ISBN: 9787111654353
●譯者序
前言
作者簡介
評審者簡介
部分用GlusterFS制定高性能的存儲解決方案
章設計方法簡介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什麼是GlusterFS13
2.4塊存儲、文件存儲與對像存儲15
2.4.1塊存儲16
2.4.2文件存儲17
2.4.3對像存儲18
2.5為什麼選擇GlusterFS20
2.5.1GlusterFS的特性21
2.5.2Gluster存儲卷的類型22
2.6對高冗餘存儲的需求25
2.7對高性能存儲的需求27
2.8並行I/O28
2.9小結28
習題28
延伸閱讀29
第3章架構存儲集群30
3.1技術需求30
3.2GlusterFS對計算機的要求30
3.2.1RAM31
3.2.2CPU31
3.3需要多大的存儲空間32
3.3.1GlusterFS的卷類型32
3.3.2應用程序所需的空間33
3.3.3項目的增長情況33
3.4性能方面的注意事項34
3.4.1吞吐量34
3.4.2延遲34
3.4.3IOPS35
3.4.4I/O的大小35
3.4.5GlusterFS的性能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章在雲基礎設施上使用GlusterFS43
4.1技術需求43
4.2設定後端存儲所需的brick44
4.2.1部署Azure44
4.2.2用ZFS做brick的後端45
4.3在節點上安裝GlusterFS49
4.3.1安裝必要的軟件包49
4.3.2創建trustedpool50
4.4創建存儲卷51
4.4.1創建分散式的存儲卷51
4.4.2掛載存儲卷52
4.5優化性能52
4.5.1調整GlusterFS52
4.5.2調整ZFS53
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制作可用性高的NginxWeb應用程序
第6章創建可用性高的自我修復架構66
6.1微服務66
6.2創建容器鏡像69
6.2.1FROM指令70
6.2.2LABEL指令70
6.2.3RUN指令71
6.2.4ENV指令71
6.2.5COPY指令72
6.2.6EXPOSE指令73
6.2.7CMD與ENTRYPOINT指令73
6.3構建容器鏡像時的經驗76
6.4容器編排80
6.5Kubernetes81
6.6小結82
習題82
延伸閱讀82
參考資料83
第7章了解Kubernetes集群的核心組件84
7.1控制面的各種Kubernetes組件84
7.1.1kube-apiserver85
7.1.2kube-controller-manager85
7.1.3kube-scheduler85
7.1.4etcd數據庫85
7.2Kubernetes的工作節點86
7.2.1容器運行時86
7.2.2kubelet86
7.2.3kube-proxy87
7.3Kubernetes的對像87
7.3.1Kubernetes的基本對像:pod89
7.3.2deployment對像91
7.3.3服務93
7.3.4Kubernetes與持久存儲95
7.4小結98
習題98
延伸閱讀99
第8章架構Kubernetes集群100
8.1各種Kubernetes組件的規模與尺寸問題100
8.1.1etcd方面的問題100
8.1.2kube-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定制pod108
8.5小結111
習題112
延伸閱讀113
第9章配置並部署Kubernetes114
9.1部署基礎設施114
9.1.1安裝AzureCLI114
9.1.2宏觀設計概述115
9.1.3配置網絡資源116
9.1.4配置計算資源117
9.1.5把managementVM準備好119
9.1.6Kubeconfig127
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.12DNS服務器150
9.1.13雲平臺所提供的托管式Kubernetes解決方案150
9.2小結151
習題152
延伸閱讀152
參考資料152
第三部分ElasticStack(ELKStack)
0章用ELKStack進行監控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.4Elasticsearch概述159
10.4.1迅速159
10.4.2易於擴展159
10.4.3可用性高159
10.5Logstash159
10.5.1Grok160
10.5.2定制的模式160
10.6用Kibana進行整合161
10.7小結162
習題163
延伸閱讀163
1章設計ELKStack164
11.1技術要求164
11.2Elasticsearch對CPU的要求165
11.2.1CPU的數量165
11.2.2CPU的速度165
11.2.3CPU對性能的影響165
11.2.4與CPU規格有關的建議167
11.3Elasticsearch對內存的要求167
11.3.1文件繫統的緩存168
11.3.2禁用swap169
11.3.3因內存不足而導致的問題169
11.3.4與內存有關的建議171
11.4Elasticsearch對存儲設備的要求172
11.4.1對存儲容量的要求172
11.4.2對存儲性能的要求172
11.4.3與存儲設備有關的一些建議172
11.5Logstash與Kibana的要求173
11.5.1Logstash173
11.5.2Kibana173
11.6小結174
習題175
延伸閱讀175
2章用Elasticsearch、Logstash與Kibana管理日志176
12.1技術需求176
12.2概述ElasticStack的部署工作177
12.3安裝Elasticsearch178
12.3.1配置RPM軟件倉庫178
12.3.2Elasticsearch的數據目錄179
12.4配置Elasticsearch182
12.4.1修改Elasticsearch的YAML配置文件182
12.4.2啟動Elasticsearch185
12.4.3添加Elasticsearch節點186
12.5安裝Logstash與Kibana187
12.6配置Kibana192
12.6.1修改Kibana的YAML文件192
12.6.2起到協調作用的Elasticsearch節點192
12.7啟動Logstash與Kibana193
12.8什麼是Beats194
12.8.1Filebeat194
12.8.2Metricbeat195
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管理繫統
3章用Salt方案解決管理問題204
13.1把繫統管理工作集中到同一個地方204
13.1.1新技術給繫統管理工作帶來的壓力204
13.1.2掌控自己的基礎設施205
13.1.3用集中化的管理工具來分散工作壓力205
13.1.4利用代碼讓繫統進入預期狀態206
13.2理解NaCI208
13.2.1Salt簡介208
13.2.2SaltStack平臺209
13.2.3Salt的功能211
13.3小結216
習題216
延伸閱讀216
4章實踐Salt方案218
14.1正式接觸Salt218
14.1.1本章預設的情境218
14.1.2通過Terraform搭建初的基礎設施219
14.2用包管理器安裝Salt229
14.2.1在CentOS繫統上用yum安裝Salt229
14.2.2在Ubuntu繫統上用apt-get安裝Salt232
14.2.3用bootstrap腳本安裝Salt233
14.2.4確保主節點與從節點之間能夠相互通信233
14.2.5創建並配置Salt規則237
14.3小結244
5章設計經驗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.3DevOps253
15.5小結258
習題259
延伸閱讀259
參考答案260
內容簡介
本書首先概述Linux項目的設計方法,然後講解在設計此類項目時,所要注重的核心理念,以及在用Gluster File System(GlusterFS)實現高性能的存儲方案時,必須對哪幾個重要問題做出抉擇。接著介紹運用Kubernetes對容器化應用程序的部署與管理工作進行編排及協調,並且介紹怎樣針對NGINX應用程序配置Kubernetes。之後講解如何實現ELK棧,並介紹了構成該棧的Elasticsearch、Logstash,以及Kibana等部件。*後,本書介紹怎樣安裝並配置SaltStack方案,以管理各種Linux發行版,而且還探討了一些設計經驗與設計原則,供你在制作解決方案時參考。通過本書的學習,讀者可以熟練地構建出運行復雜程序所需的高性能工作環境。