【编者的话】笔者所属项目从零开始接触AWS,到目前在7个AWS地区部署上线,运行维护将近4年的时间,着重就这几个方面来展开:
从我们2011年接触AWS至今,比较大一点的故障多集中于2012年,小故障每年零零星星还会有一些,总的来说AWS的稳定性和可靠性是越来越好。
这边先简单介绍一下,AWS每一个区域(Region)都会有多个可用区(Availability Zone,简称AZ),可用区之间互相独立,不受其他可用区故障的影响。
我们遇到过一个可用区(AZ)故障,最初的表象是网络时断时续,API Error Rate增加,AWS论坛里面也很有很多人报这个问题,当时没有回应。接下来,网络开始大面积中断,直到整个可用区的EC2服务处于几乎不可用的状态,AWS网站开始告知可用区故障的信息。
再往下,该地区的AWS Management Console也基本刷不出内容。我们自己的监控系统,产生大量的告警,且持续了一个多小时,当时也吓出一身冷汗。因为无法进行直接的人工干预--AWS API直接返回503服务不可用。
另外,AWS文档中提到的关于可用区挂掉后,新的机器会在另一个区自动创建的功能,似乎当时也没有起效。不过,好在我们的机器都是多可用区部署,除个别非关键组件单点,以及AWS API暂时不可用外,另一个可用区的网络并没有受到影响,对外服务也没有受到干扰。
这个事件过后,我们开始反省,如果再发生要怎么办?(后来还真发生了)
零星小故障总结:
自动伸缩(AutoScaling)可以认为是AWS的核心功能,可根据用户的业务需求和策略,自动调整其弹性计算资源。
介绍完AWS中的自动伸缩服务,引出一个关键问题就是如何设置一个合理的规则,来比较精细地平衡成本和负载。这些都需要通过大量的测试来做权衡判断。
设计伸缩规则,需要注意的地方是:
这张图描述的是2015年第二季度AWS上有关DDoS的情况。
一个DDoS攻击大小是1.04Gbps,大于10Gbps的攻击持续时间大约39分钟。
图片中展示了AWS防范DDoS的方式,目前是Traffic Shaping,然后通过优先级来标识,如果判断是可能的攻击,就减慢它的速度。
所以这边的建议是:
这是一种AWS推荐的保护方式。最外层Cloudfront(CDN)和ELB,中间设置WAF,内层ELB,最后到应用部分。
Q:请问您觉得AWS和国内的云厂商相比,最大的优势是什么?
从全球的角度来看,根据Gartner Report,是最领先的云服务。对于功能而言,AWS的服务多,质量上乘。对于业务需求在海外的,AWS更为重要。有些国内的云服务,基本上都是模仿着AWS起来的。
Q: 防DDoS架构都需要自己搭建,AWS没有提供外层包装好的服务么?
AWS内置的服务中已经提供了防范DDoS的能力,大多数情况下都够用,只是针对应用层的攻击,需要额外的服务。另外有很多安全厂商和AWS有合作,在AWS Market可以得到相应的安全服务。
Q:你们用过ECS服务吗,功能上能否满足你们的应用需求?
我们目前正在尝试采用ECS的方式来部署我们的服务,10月份的reInvent大会发布了Private Registry还有ecs-cli等一些工具,会使ECS更易使用。
Q:前端放不同az还好说,后端数据库不同az怎么搞?
数据库如果是自己在EC2上部署的话,比如我们使用的Cassandra,多台同样可以采用不同AZ,至于AWS本身的数据库服务RDS、Aurora、DynamoDB,里面有一个multi-AZ的功能。
Q:另外目前很多公司都采用了云服务,很多运维同学比较关注的一个问题是会对运维成员带来了一定的影响,因为很多工作使用云服务就可以解决。一种观点是,上云,是运维人员的一个机会,因为使用云服务在某个方面来说,对运维人员的要求又提高了。目前熟悉AWS的运维人员并不好招。请问,您是怎么想的?
这个问题,我自己也深有体会,Docker会这么火,里面也有这一层关系。
Q:自动伸缩服务对于用户这边需要做哪些准备,如何保证代码持续更新,自动伸缩也是可用的,就是我怎样信任自动扩容出的机器?
主要还得要求机器中的服务实现无状态,信任是建立在测试和监控的基础上。代码持续更新是另一个问题,持续发布的问题,这个现有的解决方案也蛮多的,可以线下讨论。
Q:亚马逊云的故障率大概有多少,企业级应用的价格是否可以接受?
目前根据我们使用的服务来看,故障率不高,稳定性和质量都蛮高的,剩下的都是一些小问题,2012年的时候曾有5个大问题(AWS专门解释原因的)。对于价格可能要具体问题具体看,对于我们而言,也做企业级应用,7个地区的部署,还是能接受的。
Q:请问有没有部署将企业自己数据中心和AWS上服务互联,推荐方式是?
公司里其他部门是有的,通过VPN的方式更安全。
Q:请问ECS是否只有提供CD、CO、CI部分是否只能是用户自己定制和对接,还有预计ECS什么时候会在中国站点发布呢?**
AWS本身有提供code deploy、code pipeline、code commit持续发布的服务,可以和ECS一起使用,新发布的Private Registry也会对ECS的CI/CD带来帮助。中国站点的情况,不了解。
Q:请问老师是否知道目前亚马逊在国内数据中心部署进展怎样?
我们没有使用,所以具体的细节不太了解。似乎是有限开放,之前去reInvent开会,有一个中国专场,很多国内的公司都在使用了。
Q:你们有考虑过灰度发布吗,AWS上对此是否有相应支持?
有在使用,粒度现在还比较粗一点。一方面需要依靠应用程序本身,可以做到配置管理。AWS的支持,还是需要通过架构设计来做到,比如Router53支持带权值的DNS,另外还有今年发布的API Gateway也可以拿来帮忙。
Q:目前AWS的一个趋势是推广基于事件的服务,就是逐步弱化服务器的概念,根据事件进行相关服务,这也是领先其它云厂商的一个方面,请问针对这一点,您是怎么想的?
本来我也想聊聊lambda这个服务,考虑到时间的问题,没有讨论到。这确实是一个蛮好的想法。我了解的信息是,欧洲、北美有蛮多的公司采用了这种无服务器的方式,基本上不用自己来管理EC2机器,做好监控就可以。好处就是快,坏处就是和AWS耦合太紧。
===========================================================
以上内容根据2015年11月17日晚微信群分享内容整理。分享人: 黄帅(Henry Huang),目前就职于趋势科技,负责集群运维开发和维护工作,所在项目从2011年使用AWS服务至今,积累一定的AWS运维经验。 DockOne每周都会组织定向的技术分享,欢迎感兴趣的同学加微信:liyingjiesx,进群参与,您有想听的话题可以给我们留言。