SAE弹性伸缩最佳实践

SAE弹性伸缩可以实现在秒级流量波峰到来时应用实例自动扩容,波峰结束后自动缩容,保障应用平稳运行,具有高可靠性、免运维、低成本的特点。以应对电商大促为例,您可以通过部署应用、配置弹性规则、实时监控并调整策略,以及执行后续的运维优化的全流程,确保平台高效稳定响应用户的需求。

弹性伸缩流程图

SAE弹性伸缩场景的实践全流程如下图所示。

dg_best_practice_of_sae_scaling_rule

使用限制

仅适用于微服务应用。

准备工作

  • 配置应用健康检查:确保应用在弹性伸缩过程中的整体可用性,仅在启动、运行并且准备完成时才接收流量。具体操作,请参见设置健康检查

  • 配置应用生命周期管理:确保缩容时按照预期实现应用优雅下线,配置停止前处理(PreStop设置)。具体操作,请参见设置应用生命周期管理

  • 采用指数重试机制:为避免因弹性不及时、应用启动不及时或应用没有优雅上下线导致服务调用异常,采用Java指数重试机制进行服务调用。

  • 优化应用启动速度。

    • 软件包优化:优化应用启动时间,降低因类加载、缓存等外部因素对应用启动时长造成的影响。

    • 镜像优化:精简镜像大小,减少创建实例时镜像拉取耗时,可以借助开源工具分析并精简镜像层信息。

    • Java应用启动优化:在SAE上创建应用时,选择Dragonwell 11环境能够开启应用加速功能。

配置弹性规则

配置弹性伸缩指标

SAE支持基础监控、应用监控多指标组合配置,您可以根据当前应用的属性(CPU敏感、内存敏感或IO敏感)灵活配置。

您可以查看基础监控应用监控对应指标的历史数据( 例如过去6小时、12小时、1天或7天峰值,P95或P99数值)并预估指标目标值,借助PTS等压测工具进行压测,了解应用可以应对的并发请求数量、需要的CPU和内存数量,以及高负载状态下的应用响应方式,以评估应用容量峰值大小。

在配置弹性伸缩策略时,您需要考虑以下因素:

  • 权衡可用性与成本,配置指标目标值。示例如下:

    • 可用性优化策略:配置指标值为40%。

    • 可用性成本平衡策略:配置指标值为50%。

    • 成本优化策略:配置指标值为70%。

  • 考虑梳理上下游、中间件和DB等相关依赖性,并配置对应的弹性规则或限流降级手段,以确保扩容时全链路的可用性。

弹性规则配置完成后,您可以通过监控并调整弹性规则使容量接近应用实际负载。关于查看监控的具体步骤,请参见查看基础监控数据

配置内存指标

Java应用运行时优化是通过释放物理内存,增强内存指标与业务关联性。借助Dragonwell运行时的环境,通过增加JVM参数开启ElasticHeap能力,支持Java堆内存的动态弹性伸缩,从而节约了Java应用在运行时实际使用的物理内存。关于ElasticHeap的更多信息,请参见G1ElasticHeap

推荐配置为Dragonwell+ElasticHeap Periodic uncommit模式 (自动模式)。具体操作,请参见在SAE控制台使用JAR文件部署微服务应用设置启动命令

  • Java环境:在配置JAR包区域,从Java环境下拉列表中,选择Dragonwell类型的配置项。配置Jar包

  • JVM参数:在启动命令设置区域,输入-XX:+ElasticHeapPeriodicUncommit启动参数

说明

不适用配置内存指标的应用类型:采用动态内存管理进行内存分配(例如Java JVM内存管理、Glibc Malloc和Free操作)的部分应用,没有及时向操作系统释放其闲置内存,导致无法实时减少实例消耗的物理内存和新增实例消耗的平均内存,进而导致无法触发缩容。

配置实例数

  • 最小实例数配置

    确认最小实例数≥2,配置多可用区vSwitch。避免因底层节点异常导致实例驱逐或可用区无可用实例,应用停止工作。

  • 最大实例数配置

    确认最大实例数≤可用区IP数。避免因配置的IP数超出限制,应用无法新增实例。

    您可以在基本信息页面的应用信息区域查看当前应用的可用IP数。如果可用IP较少,请替换或新增vSwitch。

    应用信息

观测弹性伸缩过程

弹性达到最大值

您可以在应用概览页页面查看当前开启弹性伸缩配置的应用,并监控当前实例数已经到达峰值的应用,对其弹性伸缩配置重新进行评估。

弹性生效的应用

说明

如果单个应用需要弹出超过50个实例,请加入钉群(钉群号:32874633)申请白名单。

可用区再均衡

弹性伸缩触发缩容后,可能会导致可用区分配不均。您可以在应用基本信息页面的实例列表,查看实例所属可用区。如果可用区不均衡,您可以通过重启实例实现再均衡。

vSwitch

配置自动恢复弹性

进行部署应用等变更单操作时,SAE会停止当前应用的弹性伸缩配置,避免两种操作冲突。如果您希望变更单完成后能够恢复弹性配置,可以在部署应用页面选择系统自动恢复

恢复自动弹性方式

运维弹性伸缩

查看应用事件

您可以在目标应用的应用事件页面,观测SAE弹性生效行为,包括查看弹性伸缩时间和动作,以此来衡量弹性伸缩策略的有效性并按需调整。更多信息,请参见查看应用事件

应用事件

查看应用实例监控图

您可以在目标应用的基本信息页面的基本信息页签,观测应用实例趋势图,包括7天内的CPU使用率、内存使用率和TCP活跃连接数、服务请求量和平均响应时间等监控指标。

sc_pod_trend_indicator_chart