上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
高可用实践之切换部署
因为通过对有状态数据(诸如Kafka、HBase、Zookeeper)实现多可用区,从底层向上的各个业务可形成自我恢复的能力,即使在发生故障时,也能在极端的情况下为用户无缝提供完整服务。
当跨可用区级别切换时,FreeWheel更多贯彻的是DevOps理念,即不用专职的运维人员,通过监控和脚本自动化的工具和方式保证服务高可用。目前在FreeWheel内部受重视的一种模式是监控和报警的代码化,即通过相应的框架实现监控和报警,用代码做管理,而非以往那种在站点上做简单配置的方式。
对于监控和报警,FreeWheel用到的主要工具包括Datadog及开源工具如TerraForm(类似于AWS CloudFormation)和SaltStack等。
Datadog的工作方式是在每一台需要监控的服务器上运行它的Agent。FreeWheel主要用Datadog实现EC2级别监控,这样可以基于机器类型、用途等,分门别类对其服务进行监控,一是实现系统级别(如CPU、内存、磁盘、网络I/O)的相关监控,二是实现基于应用级别的监控。
另外,TerraForm会应对启动资源、扩展 / 回收和权限配置之类的场景,从而实现AWS资源配置。SaltStack实现配置的幂等性管理,并针对机器Tag进行分布式调用和部署检查。
当可用区级别需切换时,目标是希望能做到让用户无感知。但目前如果需从主区域切换至备用区域情况下,FreeWheel当前的设计方案是允许有一定(分钟级别)的宕机时间。因为在一般情况下,一个区域3个或3个以上的可用区(FreeWheel只会使用有至少3个可用区的区域)已经足够保证高可用性。当整个区域出现整体性故障时,允许有一定的宕机时间是综合成本和需求的整体考虑。