spring cloud 负载均衡 平滑上下线
eureka注册中心有缓存,服务重启后,你会发现有一小段时间重新启动的服务变成不可用。需要调整缓存时间间隔:
之前在注册中心看到服务后,还是不可用,一直以为是生产者滞后问题,其实是消费者没有更新时间。
eureka:
server: # 默认30s. eureka server刷新readCacheMap的时间,注意,client读取的是readCacheMap, # 这个时间决定了多久会把readWriteCacheMap的缓存更新到readCacheMap上 response-cache-update-interval-ms: 3000 # 默认60s. 启用主动失效,并且每次主动失效检测间隔为5s. eviction-interval-timer-in-ms: 5000 instance: # 默认90s. 服务过期时间配置,超过这个时间没有接收到心跳EurekaServer就会将这个实例剔除. # 注意,EurekaServer一定要设置eureka.server.eviction-interval-timer-in-ms否则这个配置无效,这个配置一般为服务刷新时间配置的三倍 lease-expiration-duration-in-seconds: 15 # 默认30s. 服务刷新时间配置,每隔这个时间会主动心跳一次,不建议修改 #lease-renewal-interval-in-seconds: 5
use-read-only-response-cache: false
eureka:
client:
# eureka client刷新本地缓存时间
registryFetchIntervalSeconds: 5
ribbon:
# eureka客户端ribbon刷新时间
ServerListRefreshInterval: 5000
修改配置后,下线前先将服务改为不可用状态,休眠20s,然后删除服务,停止应用,重启服务。
curl -X PUT 'http://huilian:hl123...@192.168.200.124:10011/eureka/apps/wph-external-hk/wph-external-hk-service-125/status?value=OUT_OF_SERVICE'
sleep 20s
kill -9 $PID
curl -X DELETE 'http://huilian:hl123...@192.168.200.124:10011/eureka/apps/wph-external-hk/wph-external-hk-service-125'