关于运维:eureka优雅下线某个服务

34次阅读

共计 1217 个字符,预计需要花费 4 分钟才能阅读完成。

一、需要

在咱们我的项目公布的时候,如果咱们的注册核心应用的是eureka,当咱们有多个服务实例,在公布某个服务的时候心愿达到平滑的公布,不要在服务的调用过程中呈现谬误。

eg:
比方:咱们的商品服务有 2 个,咱们公布的时候,先发实例 A,在发实例 B。假如咱们要先发 A 实例,如果 A 实例曾经有正在解决的申请,要失常解决实现,当 A 实例齐全没有流量进入时,在关掉 A 实例,重启 A 实例。

二、实现步骤

1、应用 eureka 的 rest api 查问服务列表

发送 GET 申请,拜访/eureka/apps

curl --location --request GET 'http://localhost:8761/eureka/apps' \
--header 'Accept: Application/json' \
--header 'User-Agent: apifox/1.0.0 (https://www.apifox.cn)'

2、应用 eureka 的 rest api 将 服务的状态标记为DOWN

    > 此时只是将要下线的服务标记为 down 了,然而这个服务并没有关掉,还是能够对外提供服务的。> 在下个 eureka client 拉取 eureka server 上可用的服务列表时,不会拉取 down 的服务。> 此时可能须要期待肯定的工夫(eureka.client.registry-fetch-interval-second=30 + 肯定的业务解决工夫) 后执行下方的步骤 3,保障这台机器上的工作都执行完,没有外来的流量流入就能够关掉服务了。> 不必再去执行 DELETE /appId/instanceId 这个申请,将这个服务从 eureka server 上下调,如果解决的慢的话,可能这个服务在下个心跳的时候会再次注册到 eureka server 上。

发送 PUT 申请,拜访 /eureka/apps/appId/instanceId/status?value=DOWN

  • appId 见上图的 appId
  • instanceId 见上图的 instanceId
  • value=[DOWN | UP] DOWN标记服务不可用,UP标记服务可用。
curl --location --request PUT 'http://localhost:8761/eureka/apps/PRODUCT-PROVIDER/product-provider:192.168.0.85:8083/status?value=DOWN' \
--header 'Accept: Application/json' \
--header 'User-Agent: apifox/1.0.0 (https://www.apifox.cn)'

3、失常敞开服务、启动服务

敞开: kill -15 pid
启动: java -jar xxx.java 等等

三、eureka rest api

四、参考链接

1、https://github.com/Netflix/eureka/wiki/Eureka-REST-operations

正文完
 0