赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. Serverless应用引擎(新版)
  4. 服务支持
  5. 常见问题
  6. 网络FAQ
  7. SLB FAQ
  8. CLB、ALB、微服务等如何做到上下线的时候流量无损?

CLB、ALB、微服务等如何做到上下线的时候流量无损?

  • SLB FAQ
  • 发布于 2025-04-17
  • 0 次阅读
文档编辑
文档编辑

本文介绍在使用SAE时,如何解决上下线流量有损的问题。

说明

阿里云负载均衡SLB(Server Load Balancer)支持传统型负载均衡CLB(Classic Load Balancer)和应用型负载均衡ALB(Application Load Balancer)。更多信息,请参见负载均衡SLB产品家族介绍。

问题现象

在使用SAE过程中,CLB、ALB、微服务等上下线时流量有损。

问题原因

应用配置问题或客户端没有及时刷新服务列表的缓存。

解决方案

SAE单个实例视角的下线过程过长的步骤如下(同K8s):

  1. 实例进入Terminating状态。

  2. 如果该实例关联SLB、K8s Service等,并配置Readiness,则会将该实例摘除。关于应用业务就绪检查(Readiness)的更多信息,请参见设置健康检查。

  3. 如果该实例配置PreStop,则会开始执行;PreStop执行完毕后,如果没有超过TerminationGracePeriodSeconds,则会向该实例的1号进程发送SIGTERM信号。关于PreStop的更多信息,请参见设置应用生命周期管理。

  4. 在步骤3的PreStop或SIGTERM信号中,执行清理或者等待操作,平台会等待一段时间(即TerminationGracePeriodSeconds,默认值为30秒)。关于TerminationGracePeriodSeconds的更多信息,请参见设置应用生命周期管理。

  5. 若超过TerminationGracePeriodSeconds进程还未结束,则发送SIGKILL信号,强制结束实例。

您可以基于以上步骤测试单个实例的下线过程。只要您的程序不是收到SIGTERM就马上退出,基本都能实现流量的优雅下线。但是,如果您的程序收到SIGTERM信号就马上退出,您需要处理SIGTERM信号或者配置PreStop。同时,您也可以根据实际情况,调大TerminationGracePeriodSeconds。

针对微服务应用,因为微服务客户端会缓存一些服务端信息,导致调用到已经下线的实例,所以需要服务端在客户端缓存过期前,进行等待。

  • (推荐)配置SAE无损下线功能。如何实现一键配置的具体操作,请参见设置微服务无损下线。

  • 自行配置PreStop或者处理SIGTERM信号。参见上述步骤,在该方法内实现从注册中心摘除实例并且等待一段时间的逻辑(例如30~60秒)。

在发布滚动更新的过程中,假设当前是1个实例,重新部署时,为了满足最小存活实例数,SAE会确保先拉起一个新的实例,再销毁老的实例,不会出现流量有损的问题。因为,SAE多实例的轮转会确保实例整体满足“最小存活实例数”的配置,该值默认为1,可以在部署应用时修改。更多信息,请参见单批发布应用。

相关文章

HTTP如何跳转至HTTPS? 2025-04-17 10:56

本文介绍使用SAE时,HTTP如何跳转至HTTPS。 如果您在SAE中使用CLB,请参见使用CLB将HTTP访问重定向至HTTPS。 如果您在SAE中使用ALB,请参见使用ALB将HTTP

SAE并发数有什么限制吗? 2025-04-17 10:56

SAE的应用访问功能是通过阿里云的相关网络产品实现的,因此并发数的限制取决于相关的网络产品。如果您想查看应用连接数、访问流量、QPS等限制,可以在例如CLB、ALB、弹性公网IP等产品的控制台,查看和修改对应配置。

SAE应用添加不了SLB怎么办? 2025-04-17 10:56

当前阿里云账号的SLB配置已达到配额阈值。因此,您为SAE应用添加SLB时会失败。更多信息,请参见使用限制。

收到SLB配置冲突短信怎么办? 2025-04-17 10:56

本文介绍使用SAE时,如何处理SLB配置冲突的问题。 问题现象 收到SLB配置冲突短信。

找不到证书或无法选择已有的证书怎么办? 2025-04-17 10:56

本文介绍使用SAE时,如何解决找不到证书、无法选择已有证书的情况。 如果您使用CLB,需要先将证书导入传统型负载均衡CLB(Classic Load Balancer)。更多信息,请参见概述。 如果您

为什么实例可以启动,但是无法通过SLB访问? 2025-04-17 10:56

优先测试容器内是否联通。通过Webshell进入容器,执行curl 127.0.0.1:port/path命令。关于如何登录Webshell,请参见查看Webshell。

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号