请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Eureka高可用方案

师兄,我在部署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

正在回答 回答被采纳积分+3

1回答

廖师兄 2018-10-24 23:21:10

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

0 回复 有任何疑惑可以回复我~
  • 提问者 水煮米波 #1
    Nginx作为负载均衡,下面的服务器挂了,应该不会再把请求分发到已经挂掉的服务器上呀?
    回复 有任何疑惑可以回复我~ 2018-10-24 23:31:23
  • 提问者 水煮米波 #2
    这个方案不好使的话,线上一般用什么高可用方案呢?
    回复 有任何疑惑可以回复我~ 2018-10-25 13:49:34
  • 廖师兄 回复 提问者 水煮米波 #3
    我的意思是你应该去了解下nginx对于服务"挂了"的判断,是ping不同还是http请求不到。
    线上用的就是我视频里说方案。
    回复 有任何疑惑可以回复我~ 2018-10-26 23:08:57
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信