猜你喜欢
AWS云计算实战

AWS云计算实战

书籍作者:安德烈亚斯·威蒂格 ISBN:9787115484864
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:8152
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

AWS是美亚的云计算平台,它提供了一整套基础设施和应用程序服务,可以帮助用户在云中运行几乎一切应用程序。本书介绍了AWS云平台的核心服务,如计算、存储和网络等内容。读者还可以从本书中了解在云上实现自动化、保证安全、实现高可用和海量扩展的系统架构的实践。


本书分4个部分,共14章。本书从介绍AWS的基本概念开始,引入具体的应用示例,让读者对云计算和AWS平台有一个整体的了解;然后讲解如何搭建包含服务器和网络的基础设施;在此基础上,深入介绍如何在云上存取数据,让读者熟悉存储数据的方法和技术;然后展开讨论在AWS上如何设计架构,了解实现高可用性、高容错率和高扩展性的实践。




作者简介

安德烈亚斯· 威蒂格(Andreas Wittig)和迈克尔· 威蒂格(Michael Wittig)都是软件工程师,也是专注于AWS和Web开发的顾问专家。

编辑推荐
适读人群 :本书适合对AWS感兴趣的运维人员和开发人员,尤其是那些需要将分布式应用向AWS平台迁移的运维人员和开发人员阅读。

物理数据中心需要很多设备,并且需要投入大量的时间和资源来管理。如果用户需要数据中心,又不希望自己搭建,AWS可能是一个不错的解决方案。无论用户是想分析实时数据,搭建软件即服务架构,还是运行一个电子商务的网站,AWS都可以为其提供可靠的基于云平台的可扩展服务。


本书为读者介绍AWS 云平台的计算、存储和网络服务。读者将从云计算的概览开始,然后学习如何创建自己的账户,学习如何通过调用AWS API 以编程的方式控制AWS 的每个组件,以实现基础设施的自动化,学习存储数据的选项和相关技巧,学习如何使用私有网络隔离自己的系统来增强安全性。最后,本书还会教读者如何针对高可用性和容错进行设计。


本书主要内容


● 云计算概念和模式的概述。


● 在AWS上部署应用程序。


● 集成美亚的预构建服务。


● 管理EC2服务器来降低成本。


本书面向将分布式应用迁移到AWS 平台的开发者和DevOps工程师。


目录

第 一部分 AWS云计算起步


第 1章 什么是Amazon Web Services 3


1.1 什么是云计算 4


1.2 AWS可以做什么 4


1.2.1 托管一家网店 5


1.2.2 在专有网络内运行一个Java EE应用 6


1.2.3 满足法律和业务数据归档的需求 7


1.2.4 实现容错的系统架构 8


1.3 如何从使用AWS上获益 9


1.3.1 创新和快速发展的平台 9


1.3.2 解决常见问题的服务 9


1.3.3 启用自动化 10


1.3.4 灵活的容量(可扩展性) 10


1.3.5 为失效而构建(可靠性) 11


1.3.6 缩短上市的时间 11


1.3.7 从规模经济中受益 11


1.3.8 全球化 11


1.3.9 专业的合作伙伴 12


1.4 费用是多少 12


1.4.1 免费套餐 12


1.4.2 账单样例 13


1.4.3 按使用付费的机遇 14


1.5 同类对比 14


1.6 探索AWS服务 16


1.7 与AWS交互 18


1.7.1 管理控制台 19


1.7.2 命令行接口 20


1.7.3 SDK 20


1.7.4 蓝图 21


1.8 创建一个AWS账户 22


1.8.1 注册 22


1.8.2 登录 26


1.8.3 创建一个密钥对 28


1.8.4 创建计费告警 31


1.9 小结 31


第 2章 一个简单示例:5分钟搭建WordPress站点 33


2.1 创建基础设施 33


2.2 探索基础设施 39


2.2.1 资源组 40


2.2.2 Web服务器 41


2.2.3 负载均衡器 42


2.2.4 MySQL数据库 44


2.3 成本是多少 45


2.4 删除基础设施 46


2.5 小结 48


第二部分 搭建包含服务器和网络的虚拟基础设施


第3章 使用虚拟服务器:


EC2 51


3.1 探索虚拟服务器 51


3.1.1 启动虚拟服务器 52


3.1.2 连接到虚拟服务器 60


3.1.3 手动安装和运行软件 63


3.2 监控和调试虚拟服务器 64


3.2.1 显示虚拟服务器的日志 64


3.2.2 监控虚拟服务器的负载 65


3.3 关闭虚拟服务器 66


3.4 更改虚拟服务器的容量 67


3.5 在另一个数据中心开启虚拟服务器 69


3.6 分配一个公有IP地址 72


3.7 向虚拟服务器添加额外的网络接口 74


3.8 优化虚拟服务器的开销 77


3.8.1 预留虚拟服务器 78


3.8.2 对未使用的虚拟服务器竞价 79


3.9 小结 82


第4章 编写基础架构:命令行、SDK和CloudFormation 83


4.1 基础架构即代码 84


4.1.1 自动化和DevOps运作 85


4.1.2 开发一种基础架构语言:JIML 85


4.2 使用命令行接口 88


4.2.1 安装CLI 88


4.2.2 配置CLI 89


4.2.3 使用CLI 94


4.3 使用SDK编程 98


4.3.1 使用SDK控制虚拟服务器:nodecc 98


4.3.2 nodecc如何创建一台服务器 99


4.3.3 nodecc是如何列出服务器并显示服务器的详细信息 101


4.3.4 nodecc如何终止一台服务器 102


4.4 使用蓝图来启动一台虚拟服务器 102


4.4.1 CloudFormation模板解析 103


4.4.2 创建第 一个模板 107


4.5 小结 113


第5章 自动化部署:CloudFormation、Elastic Beanstalk和OpsWorks 114


5.1 在灵活的云环境中部署应用程序 115


5.2 使用CloudFormation在服务器启动时运行脚本 116


5.2.1 在服务器启动时使用用户数据来运行脚本 116


5.2.2 在虚拟服务器上部署OpenSwan作为VPN服务器 116


5.2.3 从零开始,而不是更新已有的服务器 121


5.3 使用Elastic Beanstalk部署一个简单的网站应用 121


5.3.1 Elastic Beanstalk的组成部分 121


5.3.2 使用Elastic Beanstalk部署一个Node.js应用Etherpad 122


5.4 使用OpsWorks部署多层架构应用 126


5.4.1 OpsWorks的组成部分 127


5.4.2 使用OpsWorks部署一个IRC聊天应用 128


5.5 比较部署工具 137


5.5.1 对部署工具分类 138


5.5.2 比较部署服务 138


5.6 小结 139


第6章 保护系统安全:IAM、安全组和VPC 140


6.1 谁该对安全负责 141


6.2 使软件保持最新 142


6.2.1 检查安全更新 142


6.2.2 在服务器启动时安装安全更新 143


6.2.3 在服务器运行时安装安全更新 144


6.3 保护AWS账户安全 145


6.3.1 保护AWS账户的root用户安全 146


6.3.2 IAM服务 146


6.3.3 用于授权的策略 147


6.3.4 用于身份认证的用户和用于组织用户的组 149


6.3.5 用于认证AWS的角色 150


6.4 控制进出虚拟服务器的网络流量 152


6.4.1 使用安全组控制虚拟服务器的流量 153


6.4.2 允许ICMP流量 154


6.4.3 允许SSH流量 155


6.4.4 允许来自源IP地址的SSH流量 156


6.4.5 允许来自源安全组的SSH流量 157


6.4.6 用PuTTY进行代理转发 159


6.5 在云中创建一个私有网络:虚拟私有云 160


6.5.1 创建VPC和IGW 162


6.5.2 定义公有堡垒主机子网 162


6.5.3 添加私有Apache网站服务器子网 164


6.5.4 在子网中启动服务器 165


6.5.5 通过NAT服务器从私有子网访问互联网 166


6.6 小结 168


第三部分 在云上保存数据


第7章 存储对象:S3和Glacierr 171


7.1 对象存储的概念 171


7.2 Amazon S3 172


7.3 备份用户的数据 173


7.4 归档对象以优化成本 175


7.4.1 创建S3存储桶配合Glacier使用 175


7.4.2 添加生命周期规则到存储桶 176


7.4.3 测试Glacier和生命周期规则 179


7.5 程序的方式存储对象 181


7.5.1 设置S3存储桶 181


7.5.2 安装使用S3的互联网应用 182


7.5.3 检查使用SDK访问S3的代码 182


7.6 使用S3来实现静态网站托管 184


7.6.1 创建存储桶并上传一个静态网站 185


7.6.2 配置存储桶来实现静态网站托管 185


7.6.3 访问S3上托管的静态网站 186


7.7 对象存储的内部机制 187


7.7.1 确保数据一致性 187


7.7.2 选择合适的键 188


7.8 小结 189


第8章 在硬盘上存储数据:EBS和实例存储 190


8.1 网络附加存储 191


8.1.1 创建EBS卷并挂载到服务器 191


8.1.2 使用弹性数据块存储 192


8.1.3 玩转性能 194


8.1.4 备份数据 195


8.2 实例存储 197


8.2.1 使用实例存储 200


8.2.2 性能测试 200


8.2.3 备份数据 201


8.3 比较块存储解决方案 201


8.4 使用实例存储和EBS卷提供共享文件系统 202


8.4.1 NFS的安全组 203


8.4.2 NFS服务器和卷 204


8.4.3 NFS服务器安装和配置脚本 206


8.4.4 NFS客户端 207


8.4.5 通过NFS共享文件 208


8.5 小结 209


第9章 使用关系数据库服务:RDS 210


9.1 启动一个MySQL数据库 212


9.1.1 用Amazon RDS数据库启动WordPress平台 212


9.1.2 探索使用MySQL引擎的RDS数据库实例 215


9.1.3 Amazon RDS的定价 217


9.2 将数据导入数据库 218


9.3 备份和恢复数据库 220


9.3.1 配置自动快照 220


9.3.2 手动创建快照 221


9.3.3 恢复数据库 222


9.3.4 复制数据库到其他的区域 223


9.3.5 计算快照的成本 224


9.4 控制对数据库的访问 224


9.4.1 控制对RDS数据库的配置的访问控制 225


9.4.2 控制对RDS数据库的网络访问 226


9.4.3 控制数据访问 226


9.5 可以依赖的高可用的数据库 227


9.6 调整数据库的性能 229


9.6.1 增加数据库资源 229


9.6.2 使用读副本来增加读性能 231


9.7 监控数据库 232


9.8 小结 234


第 10章 面向NoSQL数据库服务的编程:DynamoDB 235


10.1 操作DynamoDB 236


10.1.1 管理 236


10.1.2 价格 237


10.1.3 与RDS对比 237


10.2 开发者需要了解的DynamoDB内容 238


10.2.1 表、项目和属性 238


10.2.2 主键 238


10.2.3 与其他NoSQL数据库的对比 239


10.2.4 DynamoDB本地版 239


10.3 编写任务管理应用程序 239


10.4 创建表 241


10.4.1 使用分区键的用户表 242


10.4.2 使用分区键和排序键的任务表 243


10.5 添加数据 245


10.5.1 添加一个用户 246


10.5.2 添加一个任务 247


10.6 获取数据 247


10.6.1 提供键来获取数据 248


10.6.2 使用键和过滤来查询 249


10.6.3 更灵活地使用二级索引查询数据 251


10.6.4 扫描和过滤表数据 253


10.6.5 最终一致地数据提取 254


10.7 删除数据 255


10.8 修改数据 256


10.9 扩展容量 256


10.10 小结 258


第四部分 在AWS上搭架构


第 11章 实现高可用性:可用区、自动扩展以及


CloudWatch 263


11.1 使用CloudWatch恢复失效的服务器 264


11.1.1 建立一个CloudWatch告警 266


11.1.2 基于CloudWatch对虚拟服务器监控与恢复 267


11.2 从数据中心故障中恢复 270


11.2.1 可用区:每个区域有多个数据中心 271


11.2.2 使用自动扩展确保虚拟服务器一直运行 275


11.2.3 在另一个可用区中通过自动扩展恢复失效的虚拟服务器 277


11.2.4 陷阱:网络附加存储恢复 280


11.2.5 陷阱:网络接口恢复 283


11.3 分析灾难恢复的需求 287


11.4 小结 288


第 12章 基础设施解耦:ELB与SQS 289


12.1 利用负载均衡器实现同步解耦 290


12.1.1 使用虚拟服务器设置负载均衡器 291


12.1.2 陷阱:过早地连接到服务器 293


12.1.3 更多使用场景 294


12.2 利用消息队列实现异步解耦 300


12.2.1 将同步过程转换成异步过程 300


12.2.2 URL2PNG应用的架构 301


12.2.3 创建消息队列 302


12.2.4 以程序化的方法处理消息 302


12.2.5 程序化地消费消息 303


12.2.6 SQS消息传递的局限性 306


12.3 小结 307


第 13章 容错设计 308


13.1 使用冗余EC2实例提高可用性 310


13.1.1 冗余可以去除单点故障 310


13.1.2 冗余需要解耦 312


13.2 使代码容错的注意事项 313


13.2.1 让其崩溃,但也重试 313


13.2.2 幂等重试使得容错成为可能 314


13.3 构建容错Web应用:Imagery 316


13.3.1 幂等图片状态机 318


13.3.2 实现容错Web服务 320


13.3.3 实现容错的工作进程来消费SQS消息 326


13.3.4 部署应用 329


13.4 小结 336


第 14章 向上或向下扩展:自动扩展和CloudWatch 337


14.1 管理动态服务池 339


14.2 使用监控指标和时间计划触发扩展 342


14.2.1 基于时间计划的扩展 343


14.2.2 基于CloudWatch参数的扩展 344


14.3 解耦动态服务器池 347


14.3.1 由负载均衡器同步解耦扩展动态服务器池 349


14.3.2 队列异步解耦扩展动态服务器池 354


14.4 小结 356