本文从一个大客户云上稳定性保障入手,介绍这家企业是如何来做大促稳定性保障。接着会分析友商AWS在高可用保障这块的最佳实践及部分实现手段。最后介绍一下面向云时代,阿里云可以做哪些具体工作来提升客户稳定性保障工作效率。
背景介绍
相比于传统IDC,云时代企业对基础设施的稳定性保障手段会有比较大的差异。基于云平台的特有属性:敏捷的基础设施,真正做到即开即用,丰富的云组件极大降低企业自建SRE体系成本。
某企业大促稳定性保障
参考集团过往双11大促保障的一些经验。制订了如下的大促保障策略:
说明:
以上列的技术点,有部分是企业内部提供了系统来完成。但还有很多操作都是依赖人工逐一巡检排查。
稳定性保障多角色多团队协同
AWS在资源稳定性方向的最佳实践
AWS介绍了一些原则帮助客户提升稳定性,包括:
自动从故障中恢复:通过配置监控,当超过指定的监控阈值时触发自动化。典型的场景:主机磁盘报警,自动触发清理磁盘脚本。
故障演练:在云环境可以模拟故障并进行故障演练,确保业务能够正常恢复。
水平扩展原则:系统架构做到能水平扩展,才能有效避免瓶颈问题。
容量管理:业务出问题一个常见原因就是容量过载。有两种容量保护手段:在云上可以通过监控工作负载利用率,并自动添加或删除资源应应对资源弹性。另外一个就是当外部的请求过载之后,资源也可以做到自我保护,常见:限流,降级等。
基础设施变更自动化:推荐使用自动化的手段对基础设施进行更改,方便跟踪与审查,快速回滚等。
隔离原则:应该提供控制具体功能是否可用的配置,在系统出现故障时能够快速下线功能。
AWS的well architected 在稳定性这块也提供了一些架构建议:
AWS基于Config实现高可用的合规包规则(部分规则)
Control ID |
Control Description |
ConfigRule |
Guidance |
REL-1 |
基于云原生架构,很多云服务是有配置服务限额,这些配额是为了防止意外的请求超过了资源上限。 |
lambda-concurrency-check |
这条Config规则确保Lambda函数的并发上限和下限。有了这个上下限就可以确保你的函数在任何给定时间的请求数量。config会检查是否有配置,如果没配置则示为不合规。 |
REL-2 |
你会如何规划网络架构?企业的业务系统通常会部署在多套环境中。包括云环境(公网区互联区、私网等),客户IDC机房。稳定性需要考虑网络因素,如:系统内之间网络连通性,公网IP管理,私有IP管理和域名解析等。 |
ec2-instances-in-vpc |
将EC2实例部署在VPC内能够确保主机跟其他服务安全通信,而无需走NAT、VPN连接。典型的就是EC2去连接数据库或MQ这些资源。 当出现EC2资源不是部署在VPC内,则示为不合规 |
REL-3 |
你会如何监控系统资源呢?日志和监控指标是非常有效的两个工具。对系统配置上合适的监控指标和日志采集,并在超过指定阈值时发送告警通知。通过监控也能够快速知道系统出现故障并为自动化修复做出响应。 |
securityhub-enabled |
AWS Security Hub 有助于监控未授权的人员、连接、设备和软件。AWS Security Hub 能够汇总多个AWS服务的安全警报,发现并确定其优先级。 建议开启这个服务。 |
REL4 |
你会如何设计你的架构来满足快速的需求变化的?一个可扩展的架构提供了快速添加或删除资源,实现弹性。 |
autoscaling-launch-config-public-ip-disabled |
如果直接给EC2配置公网IP,很容易被黑客扫描到,实施攻击。所以EC2资源不应该公开访问。当配置了autoscaling之后,也需要检查是否通过弹性出来的EC2会配上公网IP。如果有这个配置,则示为不合规 |
REL5 |
你是如何做变更的?变更一定是要受管控的,如果线上变更不受控制,那就很难预测这些变化对业务带来的影响。 |
rds-automatic-minor-version-upgrade-enabled |
在RDS实例上启用自动次要版本升级,以确保安装RDBMS的最新次要版本更新。 |
REL6 |
你如何备份数据?备份数据、应用程序和配置以满足您对恢复时间目标 (RTO) 和恢复点目标 (RPO) 的要求。 |
db-instance-backup-enabled |
RDS备份功能能够为您的数据库和事务日志创建备份。Amazon RDS 自动创建数据库实例的存储卷快照,备份整个数据库实例。该系统允许您设置特定的保留期以满足您的弹性要求。 建议开启这个备份功能 |
REL7 |
通过故障隔离可以有效保护你的系统。通过故障隔离将故障影响限制在有限数量的组件中。故障外的组件不受故障影响。 |
elb-deletion-protection-enabled |
这条Config 规则确保ELB启用了删除保护。启用这个规则可以防止你的ELB设备被意外删除。 |
说明:
通过Config的能力,让AWS的客户真正做到一键开启资源巡检规则包。快速发现潜在风险。
阿里云在基础设施层面稳定性
参考友商AWS及业界如CIS的最佳实践。结合阿里云产品能力,关于资源稳定性保障简化成如下示意图:
后续会从高可用基础架构、容量保护、变更管理等方面沉淀一套面向资源保障层面的合规规则包。部分审计规则如下:
场景 |
云产品 |
规则描述 |
Guidance |
高可用基础架构 |
VPN |
检测VPN网关配置是否存在Down状态,如果存在说明有VPN连接不可用。存在视为不合规。 |
如果网关配置出现Down状态(可能是对端网络异常或网络异常),则VPN网关异常,对业务有可能会带来影响。 |
ECS |
检测是否存在ECS在VPC以外 |
建议将ECS部署在VPC内 |
|
ECS |
ECS镜像OS版本提醒(例如windows2003 windows2008 centos5.*版本官方早已经停止维护,存在安全漏洞等风险) |
建议采用最新版本OS镜像 |
|
ECS |
ECS存在漏洞,对接云安全中心,获取主机安全漏洞,如果存在则视为不合规 |
主机一旦出现安全漏洞建议第一时间完成安全修复。 |
|
容量保护 |
RDS |
监测RDS实例IOPS是否达到指定的IOPS上限,建议实例IOPS规格的80%,如果超过则视为不合规 |
RDS关键的一个指标IOPS值,建议做好容量管理 |
变更管理 |
RDS |
必须配置RDS变更升级窗口期,如果没有配置则视为不合规 |
企业会有自己的变更窗口,RDS规格升级建议是放在特定的变更窗口进行。而不是采用默认的时间。 |
ECS |
必须配置ECS磁盘快照窗口期,如果没有配置则视为不合规 |
因为打快照对磁盘性能影响大,建议在业务低峰进行。 |
|
ESS(弹性伸缩) |
检测弹性伸缩组是否有配置独立的公网IP,如果配置了,则不合规 |
不应该直接给ECS配置公网IP,主机出公网建议走NAT统一出口 |
|
ESS(弹性伸缩) |
检测弹性伸缩组跟LB设备关联,并且配置了LB到后端ECS的健康检测。 |
出于安全考虑,前端的LB设备会定期往弹性伸缩组中的ECS发送PING或尝试做连接,如果弹性伸缩组中的ECS无法接收到连接或发送响应,则流量会发往另外一台ECS。所以需要配置这个健康检测,否则会导致业务异常。 |
|
ESS(弹性伸缩) |
检测ESS的伸缩配置,如果配置是单规格,选择单交换机的配置视为不合规 |
建议在容量规划做好的前提下,也要优先考虑新增资源合理性 |
|
监控管理 |
ECS |
检测是否有配置云监控,并且在ECS的控制台上有展示 |
ECS必须要开启云监控 |
RDS/PolarDB |
检测是否对RDS实例有配置云监控 |
建议开启云监控 |
|
备份管理 |
RDS |
检测RDS实例是否有开启备份,另外这个规则支持特定的备份周期及窗口 |
依据备份原则,建议对RDS数据及binLog进行备份。 |
ECS |
检测数据盘/云盘是否有开启备份 |
依据备份原则,建议对主机数据盘进行备份。 |
|
Redis |
检测Redis集群是否有开启自动备份策略,另外这个规则可以支持特定备份窗口 |
依据备份原则,建议对缓存数据进行备份。 |
|
OSS |
检测 OSS的Bucket是否有开启跨Region复制 |
跨区域复制功能满足Bucket跨区域容灾或用户数据复制的需求 |
|
OSS |
检测OSS的Buckets是否开启版本化管理,如果没有打开则视为不合规 |
开启版本控制后,针对数据的覆盖和删除操作将会以历史版本的形式保存下来。您在错误覆盖或者删除对象(Object)后,能够将Bucket中存储的Object恢复至任意时刻的历史版本。 |
|
故障隔离 |
RDS/ALB/CLB |
检测是否支持跨区容灾,如果是单可用区资源视为不合规 |
依据故障隔离原则,如果只有一个可用区,一旦这个可用区故障,则无法隔离出去,导致业务受影响。 |
ALB/CLB |
检测ALB/CLB后端是否挂载了2台及2台以上ECS,否则就视为不合规 |
依据故障隔离原则,如果只有一台ECS当出现故障是无法切换,影响业务。 |
|
ALB/CLB |
检测是否有开启删除保护 |
防止误操作导致实例被删除 |
|
RDS |
检测实例是否有开启删除保护 |
||
ECS/RDS/CLB/ALB |
ECS/RDS/CLB/ALB使用共享实例规格,当其他业务出故障之后,有可能会影响同一宿主机上面共享实例业务。所以检测出是共享实例的ECS/RDS则视为不合规。 |
依据故障隔离原则,生产系统最好是跟独享物理资源 |
借助Config的多账号能力一处配置规则,可以实现对多账号的统一监测。技术架构如下:
本文小结
面向更多的企业客户,在云上如何做好资源保障。不断迭代资源层面审计规则,可以不断丰富阿里云在面向大B客户稳定性保障的产品能力。企业可以在控制台一键开启,即可快速发现潜在资源风险,及时规避因资源问题导致业务故障。