书籍详情
《写给架构师的Linux实践:设计并实现基于Linux的IT解决方案》[37M]百度网盘|亲测有效|pdf下载
  • 写给架构师的Linux实践:设计并实现基于Linux的IT解决方案

  • 出版社:机械工业出版社
  • 出版时间:2020-05
  • 热度:7231
  • 上架时间:2024-06-30 09:07:09
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

产品特色

编辑推荐

适读人群 :本书适合Linux 系统管理员、Linux支持工程师、DevOps工程师、Linux顾问,以及使用各种开源技术的专业工作者阅读参考,以帮助其学习基于Linux及开源软件的解决方案,并提高架构、设计与实现水平

要想构建出高效的工作环境,必须学会搭建灵活的基础设施。这本书将会帮你全面掌握各种Linux组件与功能,以及硬件与软件层面的支持技术,让你能够实现基于Linux的解决方案,并优化其性能。

本书第1部分首先概述Linux项目的设计方法,然后讲解在设计此类项目时要注重的核心理念,接下来讨论在用Gluster File System(GlusterFS)实现高性能的存储方案时,必须对哪几个重要问题做出抉择。

第二部分会指导你运用Kubernetes对容器化应用程序的部署与管理工作进行编排及协调,你还会看到怎样针对Nginx应用程序配置Kubernetes。

第三部分介绍如何实现ELK栈和构成该栈的Elasticsearch、Logstash,以及Kibana等组件。

第四部分讲解怎样安装并配置SaltStack方案来管理各种Linux发行版,还会探讨一些设计经验与设计原则供制作解决方案时参考。


通过本书,你将能够熟练地构建出运行复杂程序所需的高性能工作环境。阅读完本书,你将深入了解设计解决方案时所要处理的许多技术细节,并且能够全面而透彻地掌握如何实现及优化基于Linux的解决方案。

【通过阅读本书,你将学到】:
●在设计基础设施时,所需具备的基本知识及相关步骤。
●如何设计基于Linux的解决方案,以拓展自己的设计范围。
●怎样使用基于开源软件的方案来优化架构。
●理解高可用性与容错能力在设计健壮的解决方案时的重要作用。
●认识容器的重要意义,并了解如何用它来改善CI与CD管线。
●透彻掌握各种优化技术,学会采用业界公认的有效经验设计弹性与高可用性的解决方案。


内容简介

 

本书是一本帮你全面掌握各种Linux组件与功能,以及相关技术的实用指南。书中分别从存储、可用性、数据监控和系统管理四方面详细介绍如何设计并实现基于Linux的解决方案。

在面对具体的问题时,作者首先指出有助于解决该问题的几项指标,然后介绍可供选择的各种工具与做法并分析优劣,最后通过详细的配置文件、程序代码及控制台命令帮助给出较为恰当的解决方案。

全书共15章,分为四部分。

●第一部分(第1~5章)介绍使用GlusterFS部署高性能的存储解决方案时,应该如何做出必要的决策;

●第二部分(第6~9章)讲解Kubernetes的优势,说明怎样用它来编排容器化应用程序的部署与管理工作,并演示解决方案的部署过程;

●第三部分(第10~12章)讲解如何实现ELK stack(ELK栈),通过其中的Elasticsearch、Logstash与Kibana可以把环境日志管理好;

●第四部分(第13~15章)介绍IaC(Infrastructure as Code)的工作原理,以及用Saltstack来管理系统有哪些好处,并且讨论一些设计经验。

本书适合Linux 系统管理员、Linux支持工程师、DevOps工程师、Linux顾问,以及使用各种开源技术的专业工作者阅读参考,以帮助其学习基于Linux及开源软件的解决方案,并提高架构、设计与实现水平。


作者简介

★丹尼斯·萨拉曼卡(Denis 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


●第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


●第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

●第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

●第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

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


●第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

●第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

●第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

【第三部分 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



●第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

●第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

【第四部分 用 Saltstack 管理系统】

●第13章 用 Salt方案解决管理问题 …… 204

13.1 把系统管理工作集中到同一个地方 …… 204

13.2 理解NaCI …… 208


●第14章 实践Salt方案 …… 218

14.1 正式接触Salt …… 218

14.2 用包管理器安装Salt …… 229

●第15章 设计经验 …… 246

15.1 根据项目所在的环境进行设计 …… 246

15.2 怎样设计本地项目 …… 247

15.3 怎样设计云端环境中的项目 …… 249

15.4 将项目迁移到云端 …… 249


前言/序言

欢迎阅读本书,本书将带你深入了解架构师在设计基于 Linux 的解决方案时的思路,帮助你提升知识水平,学会架构并实现各种 IT 解决方案。

本书会向你展示各种开源软件的灵活用法,告诉你怎样采用业界最为流行的产品,从头到尾打造一套完整的解决方案。笔者会从设计阶段一直讲到实现阶段,其中也包括如何构建设计阶段所拟定的基础设施。

在设计方案的过程中,我们会深入地讲解每一个技术层面,并详细分析如何实现与调整基于 Linux 的开源解决方案。

【本书的目标读者】

本书适合Linux系统管理员、Linux支持工程师、DevOps工程师、Linux顾问,以及使用各种开源技术的专业工作者阅读,可以帮助大家学习基于Linux及开源软件的解决方案,并提高架构、设计与实现水平。

【本书的内容】

●第1章提出一个问题,并对此做出分析,告诉大家在设计解决方案时应该从哪些方面入手才能提取到必要的信息,从而准确地定义自己所面对的问题。

●第2章详细讲解GlusterFS,并定义存储集群。

●第3章讨论由GlusterFS及其各组件实现的存储解决方案的设计问题。

●第4章解释在云端实现GlusterFS必须进行哪些配置。

●第5章详细讲述早前配置的解决方案的具体配置方式,并对实现性能做出测试。

●第6章讲述IT业怎样从单体式应用程序演进为原生于云端的、容器化的、高度可用的微服务。

●第7章研究Kubernetes 的核心组件,讲解每个组件及如何用该组件解决顾客的问题。

●第8章讲解Kubernetes集群的需求与配置。

●第9章讲解Kubernetes集群的实际安装与配置。

●第10章解释Elastic Stack由哪些组件构成,以及这些组件如何连接。

●第11章讲解部署Elastic Stack时需要考虑的设计问题。

●第12章描述Elastic Stack 的实现、安装与配置。

●第13章讨论为什么需要用 Salt 这样的集中式管理工具来搭建基础设施。

●第14章讲解怎样安装并配置 Salt。

●第15章讲解一些原则,帮助你设计有弹性、不易出故障的解决方案。

【译者序】

这是一本直观的 Linux 解决方案架构教程。作者不谈高深的理论,而是直接指出基于 Linux 的开源方案所具备的优势。通过书中的四个部分,讨论在制作解决方案时应处理的存储、可用性、数据监控以及系统管理事务。在面对具体问题时,作者首先指出解决该问题的几项指标,然后介绍可供选择的工具与做法,并对比它们在这几项指标方面的优劣,接下来通过详细的配置文件、程序代码及控制台命令,告诉我们怎样采用较为恰当的工序解决问题。

在这个过程中,我们还会看到云平台与本地环境(或企业内部环境)相比具备哪些特性,并了解到怎样对虚拟机等云计算资源进行配置才能充分发挥该平台的优势,从而架构出高效且易于管理的解决方案。

本书末尾分别罗列了适合放在实体机与虚拟机上运行的工作,并介绍了把本地方案迁移到云端可供选择的路径,此外,还讨论了如何通过DevOps促进开发团队与运维团队之间的合作。这些经验与原则值得我们思考并尝试。