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

【有夜间上线困惑的小伙伴,可以关注“SRE运维部落”并在下方评论交流。】

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

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

首先我们解决第一个问题,单节点应用的优雅重启。

网上相关的优雅重启的方案有很多,很多都有一定的开发量和代码侵入性,对于热衷自动化运维的我,自然选用的无代码侵入和便于改造的Eureka REST API优雅重启服务这项技术。

拒绝夜间上线:Eureka热部署服务_第1张图片

api文档如上图所示,两个接口可以解决这个问题

1.在Authorization填写注册中心账号

2.按照上述文档的要求,拼接完整URL,发出请求

    appID为微服务名称

    instanceID为微服务实例名称

拒绝夜间上线:Eureka热部署服务_第2张图片

OUT_OF_SERVICE的节点服务在集群中依旧正常运行,可以处理逻辑,但是不再接受新的请求,新请求会被分流到其他节点,保证服务集群的稳定可用。

下线微服务:PUThttp://ip:port/eureka/apps/appID/instanceID/status?value=OUT_OF_SERVICEHTTP响应码为200则成功,500则失败;
上线微服务:DELETEhttp://ip:port/eureka/apps/appID/instanceID/status?value=UPHTTP响应码为200则成功,500则失败;

深度思考:

有了eureka优雅重启的机制,我们可否将这套机制引入我们的上线的持续集成和持续部署中呢?

为此我们以CI/CD为理念,以Jenkins Api为基础,Eureka REST API为核心,开发了整套ops上线系统,实现了白天的线上发布,省掉了无数杯咖啡和红牛。

拒绝夜间上线:Eureka热部署服务_第3张图片

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

注意事项:

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

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

推荐阅读

大厂必备:ansible 自动化工具

推荐5款免费网盘,空间大不限速!

亲测好评:国产开源APM运维监控

APM钉钉告警二次开发pinpoint(附带源码)

Prometheus + Granafa 构建高大上的MySQL监控平台

高效开发:IntelliJIDEA的这些Debug技巧你都知道吗

声援Pandownload的同时,一定要懂法!

syncd一款高效开源的代码部署工具

高效开发:IntelliJIDEA的这些Debug技巧你都知道吗

运维必备:goreplay流量复制工具

一款SQL高效审计工具|解放DBA双手

实用技能:git子模块功能

你可能感兴趣的:(java,java,运维)