基于SLB的滚动发布脚本示例
更新时间:2018-01-12 16:12:44 滚动发布 滚动发布(rolling update)是最常见的一种发布模式。比如我有10台机器,一台一台的进行部署。每台机器进行部署时,需要保证没有请求会派发到该机器,否则用户就会看到502的错误。所以需要有一个“下线”的操作,把当前机器从负载均衡中摘除,然后在部署完成之后,再把自己挂回到负载均衡中,这个过程称为“上线”。接下来会讲解,配合阿里云SLB如何做上线/下线操作。 基于阿里云SLB的滚动发布 在SLB中进行如下配置: 图中的关键点: 健康检查路径,需要由实例上的web服务器提供,在本例中是/nginx-status 。 健康检查间隔,配置为2S。 健康阈值,配置为2,也就说2次健康检查失败,则认为该后端服务器不可用。同样的,两次连续的健康检查成功,就会认为该后端服务器可用。 按照这个配置,如果/nginx-status这个URL不可用超过4S,则SLB会把该服务器摘除。在这4S内,应用服务仍需要是可用的,因为还会有请求派发过来。可以通过如下方式达到这个效果。 配置nginx 将/nginx-status这个URL派发到一个本地文件,使用如下配置文件: server { location ~ ^/(nginx-status) { root /home/admin/status; } } 并在机器上放置文件:/home/admin/status/nginx-status。当该文件被删除时候,/nginx-status这个请求会返回404,4S之后,该实例就会被从SLB中摘除。这个过程也就是“下线”的过程。 与之对应,touch /home/admin/status/nginx-status这个操作就是上线的过程,也是4S之后生效。 上/下线脚本 所以对应的,应用启停的脚本就是这样样子:…