内容简介
本书分两部分,全面介绍如何构建基于参考架构的OpenStack云系统和执行日常管理任务。一部分全面介绍如何充分发挥OpenStack强大的灵活性,通过各种正确决策打造很好配置,主要内容涉及架构示例、自动部署与配置、云控制器设计与云系统管理、计算节点、扩展与隔离、存储决策和网络设计。第二部分讲解OpenStack云系统的日常操作,主要内容包括OpenStack控制面板、项目和用户管理、面向用户的运维、故障与调试、网络排障、日志功能与监控、备份与恢复、定制化、通过OpenStack社区获得支持、高级配置以及如何升级。
作者简介
Tom Fifield
OpenStack社区经理、墨尔本大学物理学院荣誉院士,曾任澳洲研究计划的云端架构顾问与云端团队领导人。他是OpenStack程序代码贡献度排名中名列前茅的开发者,在OpenStack的整体发展中具有举足轻重的作用。
Diane Fleming
思科高级技术作家(项目经理),具有20余年技术写作经验,曾从事一线编程工作多年。
Anne Gentle
首席工程师、OpenStack技术委员会成员、OpenStack文档编制技术主管、服务型领导。她负责文档开发,并与开发人员紧密合作来确保文档能够满足他们的具体需求。
Lorin Hochstein
Netflix高级软件工程师、OpenStack文档团队成员,曾任Nimbis Services公司云服务首席架构师。他不仅负责云服务部署、运维,而且编写云上运行的软件。
Jonathan Proulx
麻省理工学院高级技术架构师、OpenStack云的践行者、OpenStack文档贡献者和审校者,同时学习和分享OpenStack技术。
Everett Toews
全球领先的托管服务器及云计算提供商Rackspace公司开发大使、Apache软件基金会、开源Java类库jclouds的提交者和项目管理委员会成员。他亦是专业的软件开发人员、软件架构师,具有团队领导经验。
Joe Topjian
Cybera公司系统管理员、系统架构师,负责设计、部署、运维公有云和私有云。他曾创办Terrarum IT Services公司,为客户提供各种远程系统管理服务。
内页插图
目录
前言 XIII
第一部分 架构
第1 章 架构示例 3
11 架构示例:传统网络模型(nova) 3
111 概述 4
112 详细描述 6
113 可选的扩展 8
12 示例架构——OpenStack 网络服务 8
121 概述 8
122 详细描述 10
123 组件配置示例 16
13 关于架构的最后几句话 19
第2 章 准备及部署 20
21 自动化部署 20
211 磁盘分区及RAID 21
212 网络配置 23
22 自动化配置 23
23 远程管理 23
24 关于准备和部署OpenStack 的最后几句话 24
25 总结 24
第3 章 云控制器设计和云系统管理 25
31 硬件注意事项 26
32 服务的分隔 27
33 数据库 28
34 消息队列 28
35 向导服务 28
36 应用程序接口(API) 29
37 扩展 29
38 调度 29
39 镜像 30
310 控制面板 30
311 认证及授权 31
312 网络相关注意事项 31
第4 章 计算节点 32
41 选择CPU 32
42 选择超级管理程序 33
43 实例存储解决方案 33
431 非计算节点存储——共享文件系统 34
432 计算节点存储——共享文件系统 35
433 计算节点存储——非共享文件系统 35
434 动态迁移的问题 35
435 文件系统的选择 36
44 过量分配 36
45 日志记录 37
46 网络连接 37
47 总结 37
第5 章 扩展 38
51 起点 38
52 添加云控制器节点 40
53 隔离云系统 40
531 nova 单元和区域 41
532 可用域和主机集合 41
54 可扩展的硬件 43
541 硬件采购 43
542 容量规划 44
543 老化测试 44
第6 章 存储决策 45
61 临时性存储 45
62 持久性存储 45
621 对象存储 45
622 块存储 47
63 OpenStack 存储概念 47
64 选择存储后端 48
65 结论 51
第7 章 网络设计 52
71 管理网络 52
72 公共地址选项 53
73 IP 地址规划 53
74 网络拓扑 54
741 OpenStack 虚拟机内部的VLAN 配置 55
742 多网卡分配 56
743 多主机和单主机网络 56
75 网络服务 56
751 NTP 56
752 DNS 56
76 总结 57
第二部分 运维
第8 章 了解全局 61
81 使用OpenStack 控制面板进行管理 61
82 命令行工具 61
821 安装工具软件 62
822 管理的命令行工具 62
823 获得凭据 63
824 检查API 调用 64
825 服务器和服务 66
826 计算节点诊断 67
83 网络检查 68
84 用户和项目 69
85 正在运行的实例 70
86 总结 71
第9 章 管理项目和用户 72
91 项目还是租户 72
92 管理项目 73
93 配额 74
931 设置镜像配额 74
932 设置计算服务配额 75
933 设置对象存储配额 77
934 设置块存储配额 79
94 用户管理 80
95 创建新用户 80
96 将用户与项目关联 81
961 授权定制化 83
962 用户间的干扰 84
97 总结 85
第10 章 面向用户的运维 86
101 镜像 86
1011 添加镜像 86
1012 在项目间共享镜像 87
1013 删除镜像 87
1014 其他命令行界面选项 88
1015 镜像服务和数据库 88
1016 镜像服务数据库查询示例 88
102 flavor 88
1021 私有flavor 89
1022 如何修改现存的flavor 90
103 安全组 90
1031 通用的安全组配置 90
1032 终端用户的安全组配置 91
104 块存储 93
105 实例 94
1051 启动实例 94
1052 实例启动失败 95
1053 使用实例特有的数据 96
106 关联安全组 98
107 浮动IP 98
108 添加块存储 99
109 制作快照 100
1010 数据库中的实例 102
1011 祝你好运! 103
第11 章 维护、故障和调试 104
111 云控制器和存储代理的故障及维护 104
1111 计划中的维护 104
1112 重启云控制器或存储代理 104
1113 重启云控制器或存储代理之后 105
1114 云控制器彻底故障 105
112 计算节点的故障和维护 106
1121 计划中的维护 106
1122 计算节点重启之后 106
1123 虚拟机实例 107
1124 检测并从故障实例中恢复数据 107
1125 卷 110
1126 计算节点彻底故障 110
1127 /var/lib/nova/instances 111
113 存储节点故障和维护 112
1131 重启存储节点112
1132 关闭存储节点 112
1133 更换一块Swift 磁盘 112
114 处理彻底故障 113
115 配置管理 114
116 使用硬件 114
1161 添加计算节点 114
1162 添加对象存储节点 115
1163 替换组件 115
117 数据库 115
1171 数据库连接 115
1172 性能与优化 116
118 HDWMY 116
1181 每小时 116
1182 每天 116
1183 每星期 116
1184 每个月 117
1185 每季度 117
1186 每半年 117
119 确定哪个组件已被破坏 117
1191 跟踪日志 117
1192 CLI 上运行的守护进程 118
1110 卸载 119
第12 章 网络排障 120
121 使用“ip a”检查网络接口状态 120
122 云中的nova-network 流量虚拟化 121
123 云中的OpenStack 网络服务流量虚拟化 122
124 找出网络路径中的故障 128
1241 tcpdump 128
1242 iptables 129
125 nova-network 在数据库中的网络配置 130
126 用nova-network 排查DHCP 故障 131
127 DNS 故障排查 134
128 Open vSwitch 故障排查 135
129 处理网络命名空间 136
1210 总结 137
第13 章 日志和监控 138
131 日志在哪里 138
132 阅读日志 139
133 跟踪实例的请求 140
134 添加自定义日志语句 141
135 RabbitMQ Web 管理界面或rabbitmqctl 141
1
前言/序言
现代云计算基础设施的基石:精通核心概念与实践 在当今快速发展的数字时代,企业对可扩展、可靠且高效的计算资源的需求日益增长。云计算技术正是满足这一需求的强大引擎,而开源云计算平台则因其灵活性、成本效益和强大的社区支持而备受青睐。本书旨在为读者提供一个深入理解现代云计算基础设施核心概念和关键实践的全面指南,帮助您构建、部署和管理高性能的云环境。 第一部分:云计算的宏观图景与演进 在深入具体技术细节之前,理解云计算的起源、发展和核心理念至关重要。本部分将为您勾勒出云计算的宏观图景,探讨其如何从传统的本地数据中心演进而来,以及它为何能成为当前 IT 架构的基石。 从虚拟化到云计算的飞跃: 我们将追溯虚拟化技术的发展历程,解析它是如何为云计算奠定基础的。理解虚拟机、容器等虚拟化技术的工作原理,以及它们在资源抽象和隔离方面的作用。 云计算的五大特征与三大服务模式: NIST(美国国家标准与技术研究院)对云计算的定义是理解其本质的关键。我们将详细阐述云计算的五大核心特征:按需自助服务、广泛的网络访问、资源池化、快速弹性伸缩和可计量的服务。同时,我们将深入解析三种主要的云计算服务模式:IaaS(基础设施即服务)、PaaS(平台即服务)和 SaaS(软件即服务),并分析它们各自的优势、适用场景以及与传统 IT 模式的差异。 公有云、私有云与混合云的权衡: 部署策略是企业云计算转型中绕不开的话题。本部分将详细对比公有云、私有云和混合云的特点、优劣势,并探讨如何根据企业的业务需求、安全合规要求以及成本预算,做出最适合的部署选择。我们将分析不同模式下的管理复杂性、数据安全和迁移策略。 云计算的驱动因素与行业趋势: 了解云计算的普及背后所驱动的商业和技术因素,例如敏捷开发、DevOps 实践、大数据分析、人工智能等。我们将探讨当前云计算领域的重要趋势,如边缘计算、 serverless 计算、容器编排的演进以及多云策略的兴起,帮助您洞察未来发展方向。 第二部分:深入剖析核心云计算技术栈 一旦建立了对云计算宏观概念的理解,我们便进入其核心技术栈的深度探索。本部分将聚焦于构成现代云计算平台运转的几个关键组成部分,并解析它们的功能和相互作用。 计算服务:虚拟化与容器化技术的实践: 计算是云计算的核心。我们将深入探讨主流的虚拟化技术(如 KVM、Xen)的工作原理、资源分配机制和性能优化技巧。在此基础上,我们将详细介绍容器化技术(以 Docker 为例)的优势,包括轻量级、快速启动、环境一致性等,并讲解如何构建和管理容器镜像。 存储服务:从块存储到对象存储的演进: 数据是云端的宝藏,高效可靠的存储是保障数据安全和访问效率的关键。本部分将详细介绍云环境中的各种存储类型,包括: 块存储 (Block Storage): 模拟传统硬盘的存储方式,适用于虚拟机和数据库等需要高性能 I/O 的场景。我们将探讨其实现原理、性能指标和常见的配置选项。 文件存储 (File Storage): 提供共享文件系统访问,方便多台设备协同工作。我们将讲解其协议(如 NFS、SMB)和在云环境中的应用。 对象存储 (Object Storage): 适用于存储非结构化数据,如图片、视频、备份文件等,具有高可扩展性和持久性。我们将深入解析其存储模型、API 接口和数据冗余机制。 网络服务:构建弹性、可控的云网络: 云网络是连接云中各种资源的桥梁,其设计和管理直接影响着服务的可用性和性能。本部分将重点关注: 虚拟私有云 (VPC/VNet): 理解如何在一个大型公有云环境中创建隔离的、私有的网络空间,并对其进行细粒度的控制,包括 IP 地址分配、子网划分、路由表配置等。 负载均衡 (Load Balancing): 讲解如何通过负载均衡器将流量分发到多个后端实例,提高应用的可访问性和容错能力。我们将对比不同类型的负载均衡器(如 L4、L7)及其适用场景。 安全组与网络访问控制列表 (Security Groups & NACLs): 深入理解如何利用这些安全机制来控制进出实例的流量,实现精细化的网络安全防护。 DNS 解析: 探讨云环境中 DNS 服务的作用,以及如何配置和管理域名解析。 身份与访问管理 (IAM): 安全是云计算的重中之重。IAM 是保障云资源安全的核心。本部分将详述如何通过 IAM 来定义用户、组、角色和策略,实现对云资源的精细化访问控制,确保只有授权用户才能访问和操作特定的资源。我们将讲解最小权限原则以及最佳实践。 数据库服务:关系型与 NoSQL 的选择: 数据库是应用程序的核心组成部分。本部分将介绍云环境中常见的数据库服务,包括: 关系型数据库: 如 MySQL、PostgreSQL、SQL Server 的云托管版本,以及它们在可扩展性、可用性和性能方面的优势。 NoSQL 数据库: 如键值对存储、文档存储、列族存储和图数据库,以及它们在应对大数据、高吞吐量和灵活数据模型方面的独特价值。 第三部分:构建高可用、可扩展的云应用架构 掌握了核心技术栈之后,本部分将引导您将这些技术融会贯通,构建出真正符合云原生理念的高可用、可扩展的应用程序架构。 微服务架构的理念与实践: 探讨微服务架构如何将大型单体应用拆解成独立、可独立部署的服务单元,从而提高开发效率、技术灵活性和系统弹性。我们将讨论服务拆分策略、服务间通信机制(如 RESTful API、消息队列)和 API 网关的作用。 容器编排:Kubernetes 的核心概念与应用: Kubernetes 已成为容器编排的事实标准。本部分将深入剖析 Kubernetes 的核心概念,包括 Pods、Deployments、Services、StatefulSets、Namespaces 等,并讲解如何使用 Kubernetes 来自动化部署、扩展和管理容器化应用程序。我们将覆盖部署策略、滚动更新、回滚操作以及服务发现。 DevOps 与 CI/CD 的融合: DevOps 文化和 CI/CD(持续集成/持续交付)流水线是实现敏捷开发和快速迭代的关键。本部分将探讨如何将开发和运维紧密结合,通过自动化工具链实现代码的持续集成、自动化测试、自动化部署和监控,从而显著缩短产品上市时间并提高交付质量。 监控、日志与告警:保障系统稳定运行: 任何生产环境都需要完善的监控体系。本部分将介绍如何利用各种工具(如 Prometheus, Grafana, ELK Stack)来收集、分析和可视化系统的运行指标和日志,并配置有效的告警机制,以便及时发现和处理潜在问题,确保服务的稳定性和可用性。 灾难恢复与业务连续性: 云环境下的灾难恢复与业务连续性设计至关重要。我们将探讨不同的容灾策略,如多区域部署、数据备份与恢复、故障转移机制等,帮助您构建能够抵御各种意外情况的弹性系统。 第四部分:云安全与合规性考量 安全性与合规性是任何云计算部署的基石。本部分将着重讨论在云环境中保障数据安全、访问控制以及满足合规性要求的重要性。 云安全模型与责任共担: 理解云计算服务商和用户之间的安全责任划分,明确各自的职责范围。 数据加密与保护: 探讨在数据传输和存储过程中采用加密技术的重要性,以及如何选择合适的加密算法和密钥管理方案。 访问控制与身份认证: 再次强调 IAM 的重要性,并深入讨论多因素认证(MFA)、单点登录(SSO)等高级身份认证机制。 合规性要求与行业标准: 介绍适用于不同行业和地区的常见合规性标准(如 GDPR、HIPAA、PCI DSS),以及如何在云环境中满足这些要求。 安全审计与漏洞管理: 讲解如何进行安全审计,识别和修复潜在的安全漏洞,构建纵深防御体系。 第五部分:云成本管理与优化 虽然云计算提供了巨大的灵活性和可扩展性,但有效的成本管理仍然是实现经济效益的关键。本部分将为您提供实用的云成本管理和优化策略。 理解云服务计费模式: 深入了解不同云服务(计算、存储、网络、数据库等)的计费方式,包括按需付费、预留实例、竞价实例等,并分析其优劣势。 成本监控与分析工具: 介绍云平台提供的成本管理工具,如何利用它们来追踪、分析和理解云资源的消费情况。 资源优化技巧: 提供实用的资源优化建议,例如调整实例规格、利用弹性伸缩、清理无用资源、优化存储策略等,从而有效降低云支出。 自动化成本管理: 探讨如何通过自动化工具和脚本来实现成本的持续监控和优化。 本书的编写旨在提供一个全面、深入且实用的云计算基础设施构建与管理指南。通过循序渐进地解析核心概念、关键技术和最佳实践,我们希望帮助读者构建坚实的云技术基础,自信地驾驭现代云计算的挑战与机遇,为您的业务创新和数字化转型注入强大的动力。