基于linux的 设计,写给架构师的Linux实践:设计并实现基于Linux的IT解决方案

译者序

前言

作者简介

评审者简介

第一部分 用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值