curl -X PUT -i -H "Authorization:Basic d2**G9zOndSVEwxaUpaRVp3MFBU****" http://10.1.2.3:7001/eureka/apps/DEMO-SERVICE/10.0.2.*:7031/status?value=OUT_OF_SERVICE
-X PUT 表示这是PUT请求
-H 表示设置http头,如果背后的微服务,启用了basic auth安全认证,不加头的话,会提示没有权限,至于Authorization:Basic 后面的这一串密文是怎么来的,后面会讲到
http://10.1.2.3:7001/ 这是eureka-server所在的ip或域名
DEMO-SERVICE 是要下线的服务名称
10.0.2.*:7031 是服务实例的instanceId
参数下图:
当然,上面这个请求,也可以用postman之类的图形化工具来进行:
对于设置了Basic Auth的微服务,可参考上图,设置用户名、密码,然后点击Update Request,就得到了Header中的值(如下图)
调用成功后,再回到eureka server中观察,可以发现该服务已经下线:
注:下线后,还要经过几次心跳,zuul才会感知到这台节点的变化,建议下线后,先等待1-2分钟,这样新的请求,就不会通过zuul转发到这台目标机器。
2、对目标机进行常规发布
经常刚才的步骤,目标机上已经没有新请求进来,可以相对安全的进行程序更新发布
注:如果发布过程中,一般要先停止应用,建议用kill pid,不要带-9强杀,以防万一还有未执行完成的请求。另外,发布重启后,也建议等待1-2分钟,等应用彻底启动好,并注册到eureka server上,让zuul感知该节点已重新上线。
3、对其它节点重复1,2的操作。
其它技巧:
上一篇还提到了如何做灰度发布,其原理是通过meta-map元数据来实现,发布完成后,也可以通过eureka的rest url来动态修改元数据,让指定节点变成灰度机器,类似:
curl -X PUT -i -H "Authorization:Basic d2lucG9zOndSVEwxaUpaRVp1MFBUMm9=" http://10.0.19.71:7001/eureka/apps/DEMO-SERVICE/10.0.19.73:7031/metadata?gated-launch=true
参考文章: