笔者简介
余洪春(抚琴煮酒)运维架构师、高级运维开发工程师,《构建高可用可Linux服务器》、《Linux集群和自动化运维》作者,ChinaUnix论坛“集群和高可用”及“监控及自动化运维”版版主。从事云计算和电子商务网站运维工作10多年,在Linux集群、自动化运维、云计算及高并发高流量网站架构设计等方面进行了深入的研究,在大量一线实践中积累了丰富的经验.精通负载均衡高可用和自动化运维技术,擅长高并发高流量网站系统架构设计。
笔者目前所在公司的海外业务平台由于牵涉到多机房布点和成本的考虑,目前基本上采用的是AWS云计算平台,产品线涉及到了EC2/EBS/S3/Redshift等,目前平台已经稳定运行几年了,在使用过程还是有不少心得和感想的,特地做了些总结跟大家一起分享下,对AWS有兴趣的同学也可以关注下。
作为一个老运维,还是对AWS强大的控制台功能还是很惊异的,控制台提供的功能是非常强大的,小到系统的AMI镜像备份恢复,用户的IAM权限分配,然后Instance机器种类和外置磁盘EBS的选型,大到分布式S3的文件存储功能,AWS强大的控制台都提供了相应的功能。如果不喜欢用图形界面操作的话,喜欢自动化运维的同学,AWS也提供了强大的BOTO3接口(基于Python),同学们也可以利用Python脚本来进行相关的服务器后台程序开发工作。
注:通过适用于 Python 的 AWS 开发工具包 boto3 快速开始使用 AWS。Boto3 可以支持您轻松将Python 应用程序、库或脚本与 AWS 服务进行集成,包括 Amazon S3、Amazon EC2 和 Amazon DynamoDB 等。(创建AWS免费帐户)
另外,AWS控制台有些功能是非常人性化的,比如我通过控制台购买了一年的c3.xlarge(4 vcpu+ 7.5内存)预留实例(预留实例是一种比较节约的计费方式,通常为以年为计费单位,比单独购买一般要便宜35%左右),但在使用过程过程中,我发现业务量不需要c3.xlarge这样高性能的机器,那我们可以通过修改预留实例的方式,将其分离成2台性能稍弱的c3.large,这样剥离出来的一台c3.large机器就可以多出来跑别的业务了。
另外,AWS的产品线是非常丰富,通过控制台我们就能看到,各种各样的产品都在列表内,大家可以根据工作需求来取舍。我们一般用得比较多的有EC2(AWS云主机)、Route53(DNS)、CDN、Elastic Load Balancing (AWS负载均衡)、S3/Glacier(云存储)、数据库产品有RDS或Redshift、NoSQL有DynamonDB、ElasticMapReduce(Hadoop计算框架)等等,AWS的产品线是非常丰富的,甚至可以说,我们工作中产生的业务需求,很有可能就能通过AWS的产品来实现。通过AWS的EMR服务来实现工作中的Hadoop/Spark来进行海量离线业务日志的处理和分析,是一件非常容易和轻松的事情,事实上,这部分的工作是完全不需要运维人员来参与的。
另外,事实上,AWS云计算平台进行弹性扩容是一件非常容易和方便的事情,拿我们的业务平台来说,在上线前期,由于宣传及商务谈判等原因,入口流量及用户数都比较少,这个时候平台很稳定,整体系统负载及QPS都比较低,但随着后期商业谈判的成功,入口流量及用户都越来越多,系统负载、QPS都偏高,机器还经常出现了CPU利用率达到100%的情况。这个时候我们可以通过调用AWS API接口来实现弹性扩容,包括主机的分配、流量的分配、IP的绑定、域名解析的配置,还有存储服务等,这部分的工作如果做成自动扩容也是比较容易实现的,我们可以通过Ansible自动化配置管理工具或Python语言自行开发。事实上,为了节约费用,很多时候我们可以考虑开启更便宜的Spot Instance(比Instance实例收费便宜多了,但公网IP不固定,由于采用的是竞价模式,很容易被别人买走)。另外,后续的工作我们还是要在工作中考虑到,比如说某项业务量降下去以后,我们不再需要那么多机器了(AWS是以Instance实例实际使用的小时数来收费的,我们关闭机器以后AWS就不再收费了),我们应该如何在不影响业务稳定性的前提下来减少机器数量从而起到节约成本的作用呢,这些都需要我们在实际的开发工作中考虑到。
另外,在实际使用工作中我们也发现,AWS平台目前也还是存着一些问题的,这些也应该是我们在使用过程注意的地方:
一、有段时间,美国西部的机器因为亚马逊硬件升级的原因,不断的要进行业务迁移的工作,事实上如果是某个集群内的机器的话倒没什么影响,如果机器上面正跑着重要核心业务的话,对整体系统还是非常有影响的;
二、使用中有机器还是有重启的情况,还发生过机器失联的情况,当然了这种情况并不多见,一年中我们也只发现了两起,就是没有任何邮件通知的情况下,机器发生了失联情况;
三、亚马逊自带的监控功能或产口还不是很强,所以我们还是需要自己配置nagios或zabbix监控服务,并针对业务需求来开发插件;
四、预留实例的出售是一件比较麻烦的事情,比较好买,但感觉非常难出售,所以笔者每次购买预留实例会非常小心谨慎。
五、AWS的帐单功能还是挺完善的,但也可能会产生误收费的情况,这个时候需要英语口语或邮件沟通,一般情况下AWS会退款的。
虽然AWS云计算平台或多或少的存在些问题,但总体来说并不会影响我们业务系统的整体性能和稳定,我们能够在节约成本的前提下,能够非常方便的进行扩容工作和Hadoop/Spark数据计算,在全球部署自己的数据中心,这些工作由于使用了AWS平台感觉操作起来非常简单方便,感谢AWS提供了这么些伟大的产品,预祝其越做越好。 (联系AWS专家)