Eureka高可用方案

来源:3-4 Eureka的高可用

水煮米波

2018-10-23

师兄,我在部署eureka高可用的时候,采用nginx做为负载均衡,后面挂多个eureka server。
业务服务A、B以及网关注册的地址就是nginx的地址,请见下图。
这样就不用把eureka server的url直接写死在defaultZone里,实现eureka server的水平扩展。
这个方案是否可行?
图片描述
我对方案进行了测试,结果如下:
ClientA通过负载域名注册,通过观察后台,注册到了8761上,当Eureka同步完后,我把8761停掉,此时ClientA会不断报错。我在nginx上把8761删掉后,不再报错。nginx用的是普通轮训机制,没有加权,按理说应该自动剔除不可用服务的,一直没想明白怎么回事?

…………此处省略Exception………………
2018-10-23 17:54:40.719 WARN 205084 — [tbeatExecutor-0] c.n.d.s.t.d.RetryableEurekaHttpClient : Request execution failed with message: java.net.SocketTimeoutException: Read timed out
2018-10-23 17:54:40.733 INFO 205084 — [tbeatExecutor-0] c.n.d.s.t.d.RetryableEurekaHttpClient : Request execution succeeded on retry #1

写回答

1回答

廖师兄

2018-10-24

你把8761停掉,为什么nginx就会知道down掉并且自动剔除呢?你再去看看nginx的负载均衡机制

0
3
廖师兄
回复
水煮米波
我的意思是你应该去了解下nginx对于服务"挂了"的判断,是ping不同还是http请求不到。 线上用的就是我视频里说方案。
2018-10-26
共3条回复

SpringCloud Finchley(M2+RELEASE+SR2)微服务实战

SpringCloud组件实现微服务,【已升级Finchley.Release】

5668 学习 · 2489 问题

查看课程