【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

InfoQ 在线课堂:基于 AWS 云平台的高可用应用设计

  • 2014-06-03
  • 本文字数:4950 字

    阅读完需:约 16 分钟

5 月 21 日,AWS 中国首席云技术顾问方国伟在 InfoQ 在线课堂介绍了 AWS 高可用和非高可用的服务分类,从高可用角度对典型服务进行介绍,以及高可用设计的 5 大常见设计原则,并结合 AWS 的相关服务依次进行了架构设计分析。期间,方国伟回答了许多网友的问题,InfoQ 对其进行了整理和补充,一并提供给大家。

你也可以重复收看本次在线课堂

关于存储

Q:instance down 掉之后,这个 instance 上的数据会保留吗?能找回来吗?以前看到文档说要用 EBS 才能保障 instance down 掉之后的数据保留,是这样吗?是否有其他方案?

方国伟:有好几个问题就讲 instance storage 与 EBS 数据存储的问题,我统一讲一下。因为 EC2 里边的数据存储一般分两大类,一个是 instance storage,另一个是 EBS。instance storage 是放在 EC2 里的硬盘里边的,是通过虚拟化实现的。如果这个 EC2 所在的物理机或 instance 出问题,那这个 EC2 的数据就不能访问了。为了解决这个问题,我们提供了 EBS,EBS 是通过网络访问的,如果你的 instance 出问题了,数据还在 EBS 里边。那可能有人会问,EBS 的数据会不会丢呢?EBS 的数据一般可靠性比较高,我们有个数据叫 annual failure rate(AFR)会比一般的硬盘低好多,一般是普通硬盘的 1/5 到 1/10。那 EBS 还是有可能要出问题,那怎么办?一种方式是定期对 EBS 做 snapshot,snapshot 的数据放在 S3 里,S3 的数据持久性是 11 个 9,非常高了。这是可以解决 EBS 丢数据的一个解决方案。

Q:instance down 掉后 EBS 会自动卸载吗?

方国伟:一般会自动卸载。

Q:每个 instance 都有对应的 EBS,(instance)销毁后 EBS 上存储的数据怎么处理?

方国伟:EBS 上数据如何处理完全由用户自己决定。用户可以保留 EBS 卷,从而保留数据,也可以把 EBS 删除从而删除其上的数据。另外,用户也可以通过先制作 EBS 卷快照然后再删除 EBS 卷的方式来保留数据,因为以后还可以根据这个快照来重新生成一个包含这些旧数据的新 EBS 卷。

Q:instance storage 怎么使用?哪些数据可以放在 instance storage 里面?

方国伟:这就有不同的场景,主要看你的数据有哪些对持久性要求,如果不是特别高,就放到 instance storage 里。或者在 instance 的数据在别的 instance 里有备份的,这样相当于一份丢了,从软件架构上自己可以从别的 instance 中恢复。

Q:AWS 自己的 DR 是怎么设计的?如果一个 region 出现问题,怎么恢复呢?用户数据有 sunshine 吗?

方国伟:我们在设计这个平台的时候,region 和 region 之间基本上是相互独立的,在默认情况下,你在 region 里面部署了应用程序,如果这个 region 宕掉了,当然你的应用就宕掉了。这里首先要指出一点,region 本身不是一个数据中心,只要是商用 region,我们至少要保证有两个 AZ 以上。这里强调一点,AZ 本身也不是一个数据中心,有可能是多个数据中心组成一个 AZ,所以整个 region 宕掉的可能性非常小。如果你有一个对可靠性要求特别高的应用,你可以自己在部署的时候跨 region 部署,但这个需要用户来做架构上面跨 region 的应用架构设计、数据拷贝等等。AWS 是不会主动帮你来做的,最重要的原因是很多国家和地区对数据本身有一定的独立性要求,比如欧盟要求数据放在欧盟的 region 里边,AWS 是不能把数据从 region 里主动让它离开的,这个数据拷贝的动作一定要用户自己操作才能进行。

关于数据库

Q:RDS 的 Multi-AZ 部署支持 SQL Server 吗?

方国伟:我们最新宣布支持 SQL Server,这样四个数据库类型(My SQL、Oracle、 PostgreSQL 和 SQL Server)都支持 Multi-AZ Deployment 了。

Q:原来部署到 Windows+MySQL 上的 BS 应用,如果要部署到 AWS,应该做哪些大的改动?

方国伟:不需要大的改动,Windows 用 EC2,MySQL 可用 EC2 也可以用 RDS 服务。AWS 的兼容性很好的。

Q:DynamoDB 怎么进行备份?

方国伟:一般情况下是不需要用户做备份,因为我们已经帮你备了三个拷贝,甚至更多。不过多个拷贝是在一个 region 里面的,如果你对数据可靠性要求非常高,可以跨 region 做拷贝,这个备份也非常简单。

Q:当数据库 master 出现问题后,切换到 slave,是否支持可写?如果支持可写,是否会出现 master 和 slave 互为双写的情况?

方国伟:是支持可写的,因为 Multi-AZ 部署是完全切换,这个跟 Read Replica 不太一样. 在 RDS 服务里,对数据库的两个相关的服务,一个就是 Multi-AZ 部署,Multi-AZ 部署完全是一个主拷贝和一个副拷贝,也就说这两个是同步复制的,一般所有的访问都是针对那个 master 拷贝的,当 master 拷贝出问题的时候,它会自动切换,这个访问不是通过 IP 的,而是通过 Domain Name,所以对应用程序来讲,它是透明的。如果应用 Read Replica,那当然可以把一些读操作放到 Read Replica 上面,那这个跟 Multi-AZ 又不太一样。

master 和 slave 互为双写?不会的,因为它始终同时只有一个是写的,要保持数据的一致性。

Q:SQS 最高是多少并发,需不需要做 HA?

方国伟:一般来讲这个不是问题,你不需要做 HA,SQS 本身就是高可用的,而且它是 Auto Scaling,我们有非常大批量的用户在用都没有问题。

关于 Auto Scaling

Q:自动修复的功能,如果启动新的虚机,怎么部署代码啊?

方国伟:一般来讲有两大类方法。第一类,你把应用的代码做在 AMI 里面。Auto Scaling 也好,还是你自己启动一个 Instance 也好,我们肯定会用到一个 AMI,这样你新建了那个 Instance 里面就已经包含了你要部署的代码,你要部署的运行时环境,中间件等等。但是有的同学问,我的应用可能会有不同版本,或者改变比较多,那这个部署太不灵活了,所以我们另外还有办法,你在部署以后可以通过 EC2 有一个特性 user data 来实现,当应用部署启动 Instance 后,user data 会帮你执行一段脚本,或者可以传进去一些参数给脚本,你他指定他从某个地方,比如 S3 上面下载一个新的程序的代码,然后在 Instance 启动之后去执行。将这两种方式结合起来,一般可以满足绝大部分用户关于动态软件和代码的需求。

Q:Auto Scaling 策略需要编程实现吗?

方国伟:一般不需要。Auto Scaling 实现需要用户做三个事情:

  1. 配置 launch configuration,launch configuration 存储了一个 Instance 以后,它应该是包含什么样的信息,用哪个 AMI,放在哪个 region 里面,用哪几个 AZ。
  2. 建个 Auto Scaling Group,设置最少有多少个 Instance,最大多少个 Instance。
  3. 最后一个 Scaling policy,它定义了如果 CloudWatch 监控到超过预值后,要做个什么操作,这个操作大部分情况下是不需要编码来做的。当然除非特别复杂,你可以定制来做一些事情。

Q:这个健康监测是 AWS 提供的吗?

方国伟:是通过 CloudWatch 提供的,用户也可以自己配置一些监控指标。

Q:启动新的 EC2 实例,需要加载 Image,AMI。Image 可以定制吗?加载自己的 (custom) 吗?

方国伟:当然可以的。AMI 的来源有几种方式,你可以用 AWS 官方提供的,或者社区提供的。当然社区提供的 AMI 要要做安全方面检查。当然你可以自己定制 AMI,我们有专门的工具和 API 来帮你定制。对于绝大部分用户,比较常用的方式是使用官方提供的 AMI,然后在此基础上自己做镜像,而不是所有操作系统,所有环境从头开始自己来做。

Q:EC2 实例的镜像(AMI)是不是可以事先准备好,使用的时候直接使用?

方国伟:当然,实例的镜像都是事先准备好的。如果你根据 AMI 新建一个实例,你可以通过 EC2 create AMI 功能根据当前运行的实例生成一个 AMI,你可以把 AMI 存在你自己的地方。生成以后,可以用这个自动生成的 AMI,每个 AMI 都有 id,所以你在创建 Auto Scaling 的 launch configuration 时可以根据 id 调用需要的 AMI。

Q:Auto Scaling 对 windows 和 Linux 的 AMI 有区别吗?

方国伟:Auto Scaling 使用过程在 Windows、Linux 上没有区别,在我们平台上面都有支持的,没有问题。

Q:SQS 是顺序保证的吗?

方国伟:不保存,我们不保证 first in first out,SQS 能保证不丢。但是顺序保证,通常需要通过应用程序层来实现。

Q:我们需要考虑 CDN 吗?

方国伟:我们全球有 CDN 服务 Cloud Front,我们全球现在应该有 51 个点。国内我们会用合作伙伴的 CDN 设施,我们现在官方推荐的是网宿。

关于 AWS 中国的服务

Q: AWS 什么时候在中国商用?

方国伟:现阶段还处于有限预览阶段,只针对邀请客户开放。如果需求,建议联系 AWS 的销售人员。

Q:AWS 有没有中文版?

方国伟:我们国内的版本就有中文版,如果你是有限预览用户,你可能已经看到了。如果你需要使用,你可以在 www.amazonaws.cn 上面申请。当然目前并不是申请了就能用,原因很多了。申请之后,我们销售可能会跟你联系,我们内部会有个排队的过程。基本上,我们会根据用户的情况来筛选,哪些用户来进入有限预览名单。

Q:(AWS)有中文版试用吗?AWS 有没有针对个人开发者的一些优惠政策?例如流量或 CPU 消耗一定程度下是免费的?

方国伟:关于中国和国外的帐号或私有帐号的问题,我来解释下。首先,AWS 没有所谓的试用帐号,任何人申请的帐号都是一样的。用户可以自己区分,这个帐号是用来做测试的,另外一个帐号做生产。对 AWS 来讲,对所有的帐号是一视同仁,都是生产帐号。对开发人员来讲,我们有一个免费试用套餐,英文叫 free usage tier,目前这个套餐针对海外全球服务系统,那 free usage tier 的意思是在一定的额度下面,所有注册 AWS 帐号的用户,在一年之内免费使用这些资源。如果你想熟悉一下 AWS 的功能,你就可以用这个 free usage tier。当然,free usage tier 是给所有用户的,只要你注册了,新用户都享受这个服务,哪怕你一上来就是做生产,我们也会把 free user tier 那部分的费用,帮你从实际的帐单里面扣除。

Q:有没有渠道来申请试用呢?

方国伟:请访问 www.amazonaws.cn 网站,有个提交申请的链接。

Q:AWS 现在还是必须使用外币信用卡才能注册使用吗?

方国伟:AWS 全球账户是需要支持外币信用卡,但国内服务开放后会公布国内的支付方式。

Q:AWS 在国内有没有国内建 AZ?

方国伟:那当然了,我们商用的时候肯定会有多个 AZ。 第一个 region 在北京,所以整个数据中心都会在北京地区,我们是跟合作伙伴合作的。根据我们去年 12 月份发布的计划,第二个 region 会在宁夏。

Q:有没有联系方式?

方国伟:我的微博是 @方国伟 _ 云端,邮箱是 guowfang@amazon.com 。

AWS 能部署应用

Q:AWS 对应用有要求吗,什么样的应用架构适合部署到 AWS 上?除了使用 AWS 的组件之外,对应用本身有没有什么要求,才能实现云应用的高可用性。

方国伟:如果你的应用只是要部署在 AWS 上,这个要求是非常低的,你的应用只要可以部署在虚拟环境,理论上差不多就可以运行在 AWS 上面。但是,如果你的应用要充分利用云计算平台的一些特性,尤其是高弹性、高可靠性、高可用性这些云的特点,那你对应用本身就需要做一些在架构上的调整。今天的讲座更多侧重在高可用性方面,6 月 17 日还有个讲座“如何通过架构设计来体现应用本身的弹性”,这是两个不同的维度来看应用。所以说,如果你要充分利用云平台一些特性,那在应用架构上需要做些调整。( InfoQ 注:6 月 7 日在上海 IC 咖啡 QClub 技术沙龙上,方国伟与 Autodesk 高级软件工程师丁建将分享 AWS 云平台上建立规模应用的实践,你可以与两位专家当面交流,参会者将获得 AWS 纪念 T 恤及 25 美金 AWS 抵扣券,欢迎免费报名。)

Q:哪些 AWS 服务是可以跨 region 的呢?

方国伟:绝大部分 AWS 服务都是在一个 region 里面的,只有很少的服务可以跨 region 的。身份认证和访问控制(IAM),Route53,CloudFront(CDN),web console 是跨 region 的。

案例资料

Q:海外的 AWS 案例,有一些介绍么?

方国伟:请访问 aws.amazon.com 上的 case study 资料,上面有许多案例。

Q:讲座的 PPT 可以提供吗?

方国伟:你回头关注一下我们的博客,我们博客会提供 Link,大家可以去下载的。我们国内会有一个中文的博客,应该是 blog.csdn.net/awschina。(InfoQ 注:在所有注册本期在线课程的用户都会受到答谢 EDM,EDM 中同样有 PPT 下载地址)。


感谢方国伟对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-06-03 02:151578
用户头像

发布了 45 篇内容, 共 13.6 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

阿里云E-MapReduce 极客大赛开放报名 数十万奖金等你挑战

Lily

比赛

什么是真正的HTAP?(一)背景篇

StoneDB

MySQL OLAP OLTP HTAP StoneDB

无需CORS,用nginx解决跨域问题,轻松实现低代码开发的前后端分离

葡萄城技术团队

nginx 前后端分离 cros

MySQL 添加用户并授予只能查询权限

叫练

Apache APISIX Meetup 南京站!我们 7.30 见!

API7.ai 技术团队

API网关 APISIX Meetup Workshop

数据库每日一题---第23天:游戏玩法分析 l

知心宝贝

数据库 程序员 算法 后端 7月月更

Gartner:无需数据中台,API就能胜任连接前端和后端的工作

雨果

数据中台 API

知识干货:基础存储服务新手体验营

hum建应用专家

数据库

直播带货系统源码

开源直播系统源码

软件测试 APP开发 直播系统源码 直播带货系统源码

助力开发者,全方位解读 APISIX 测试案例

API7.ai 技术团队

开源 测试 APISIX 网关

Dimitra 和 Ocean Protocol 解读农业数据背后的秘密

股市老人

自定义spring boot starter三部曲之三:源码分析spring.factories加载过程

程序员欣宸

Java springboot 7月月更

了解JVM语言

沃德

Java 程序员 7月月更

【用户文章】P4合并实践指南之实例拆解Resolve

龙智—DevSecOps解决方案

P4合并 解决冲突

没有可观测性,DataOps 注定失败|TheNewStack

观测云

大数据培训 Hive 相关知识的全面总结

@零度

hive 大数据开发

【计算讲谈社】第六讲|三星堆奇幻之旅:只有云计算才能带来的体验

大咖说

云计算 三星堆 数字空间 阿里云大咖说 计算讲谈社

java培训4种Map遍历 key-value 的方法

@零度

JAVA开发 map

全球云市场增势迅猛,数据安全进入法治化的强监管时代

行云管家

云计算 网络安全 数据安全

代码合规性:开发人员使用Helix QAC的5大原因

龙智—DevSecOps解决方案

静态代码分析 Helix QAC 静态代码分析器

游戏有什么用?| 游戏应用价值研究案例征集

易观分析

游戏

华为影像XMAGE:求尽世间像,终见菩提心

脑极体

Python|类与对象

AXYZdong

Python 7月月更

用对工具,CI事半功倍

龙智—DevSecOps解决方案

ci 持续集成 ⾃动化构建 ⾃动化部署

5分钟快速梳理你的HTTP体系

程序员海军

前端 HTTP 7月月更

【7.8-7.15】写作社区精彩技术博文回顾

InfoQ写作社区官方

优质创作周报

网络安全网格概念以及特点简单普及

行云管家

网络安全 网络安全网格

一文搞懂│什么是跨域?如何解决跨域?

前端 经验分享 跨域 7月月更

红象云腾大数据基础平台与龙蜥社区操作系统再次完成联合测试

OpenAnolis小助手

开源 操作系统 龙蜥社区 红象云腾 兼容性互认证

Java实现有getMin功能的栈

工程师日月

Java 算法 7月月更

焱融科技入选北京市 2022 年度“专精特新”,领航混合云文件存储

焱融科技

InfoQ在线课堂:基于AWS云平台的高可用应用设计_亚马逊云科技_包研_InfoQ精选文章