看啥推荐读物
专栏名称: 浮世清欢965
SRE工程师
目录
相关文章推荐
今天看啥  ›  专栏  ›  浮世清欢965

拒绝夜间上线:Eureka热部署服务

浮世清欢965  · 掘金  ·  · 2020-04-25 15:49
阅读 4

拒绝夜间上线:Eureka热部署服务

【有夜间上线困惑的小伙伴,可以关注“SER运维部落”并在下方评论交流。】
各位研发运维小伙伴们一定忘不了凌晨12点上线时被困意支配的恐惧,很多公司为了保证业务文档要求必须夜间上线,有些特殊情况不可避免,但是看了这篇文章,基本可以避免绝大部分的夜间上线。

首先我们既要保证服务稳定可用还要重启切换服务,第一步肯定是要保证接口链路的稳定,其次保证集群压力负载的稳定,节点不可过多离线。

首先我们解决第一个问题,单节点应用的优雅重启。
网上相关的优雅重启的方案有很多,很多都有一定的开发量和代码侵入性,对于热衷自动化运维的我,自然选用的无代码侵入和便于改造的Eureka REST API优雅重启服务这项技术。
api文档如上图所示,两个接口可以解决这个问题
1.在Authorization填写注册中心账号
2.按照上述文档的要求,拼接完整URL,发出请求
appID为微服务名称
instanceID为微服务实例名称
OUT_OF_SERVICE的节点服务在集群中依旧正常运行,可以处理逻辑,但是不再接受新的请求,新请求会被分流到其他节点,保证服务集群的稳定可用。
下线微服务:
PUT
http://ip:port/eureka/apps/appID/instanceID/status?value=OUT_OF_SERVICE
HTTP响应码为200则成功,500则失败;复制代码

上线微服务:

DELETE

http://ip:port/eureka/apps/appID/instanceID/status?value=UPHTTP

响应码为200则成功,500则失败;复制代码

深度思考:
有了eureka优雅重启的机制,我们可否将这套机制引入我们的上线的持续集成和持续部署中呢?
为此我们以CI/CD为理念,以Jenkins Api为基础,Eureka REST API为核心,开发了整套ops上线系统,实现了白天的线上发布,省掉了无数杯咖啡和红牛。

完美的融入了之前的自动化部署流程中,见图如上所示


注意事项:

优雅重启,我们更要注重事实,我们down掉了服务,并不是kill掉服务,服务依旧在运行,在处理还未完成的逻辑,却不在接受新的请求。因此优雅关停后并不能立即释放服务,需依旧服务数据处理时间延时10~20s再进行服务的彻底关停kill。


【后期可能还会出几期关于 Dubbo Nacos架构下的热部署类的文章,欢迎大家关注】

推荐阅读





原文地址:访问原文地址
快照地址: 访问文章快照