Spring Cloud Eureka集群 动态扩展新节点

Posted 剑握在手

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud Eureka集群 动态扩展新节点相关的知识,希望对你有一定的参考价值。

场景描述:

 

Eureka的集群节点有两个,互相注册形成集群,已经支持动态刷新(不知道怎么让Eureka支持动态刷新的可以参考http://www.cnblogs.com/flying607/p/8459397.html),已经在运行,使用nginx做负载均衡,代理该集群,服务的注册中心地址直接写nginx地址。

 

现在想增加一个Eureka节点到这个集群中,又不重启任何服务。

 

扩展新节点步骤如下:

0、新节点配置完整的集群地址(eureka.client.service-url.defaultZone) 并启动
1、修改每个eureka的application.yml(该配置文件是放在jar包外部的,所以可以方便修改),增加新的节点
2、挨个刷新每个eureka的配置
3、等待大约十分钟(这个配置暂时不知道从哪能找到,我等了大约十分钟才看到新节点上有了动静),刷新新节点,看到有服务信息同步过去了
4、修改nginx的负载均衡地址,加入新的节点地址
5、nginx -s reload

 

使用的版本:Dalston.SR1

 

题外话:

本文场景中描述的集群方案存在一定缺陷,如果集群中某个节点挂掉了,并没有比较完善的熔断和重试措施保护。

如果对这方面要求比较高可以考虑使用keepalived(虚出一个IP,监听某个端口,及时剔除),或者zuul搭配ribbon自动重试(博主暂未验证),

来取代nginx的代理。

各位大佬如果有什么好的想法欢迎在评论区留言。

以上是关于Spring Cloud Eureka集群 动态扩展新节点的主要内容,如果未能解决你的问题,请参考以下文章

3Spring Cloud - Eureka(高可用Eureka Server集群)

Spring Cloud Eureka - 集群间数据同步

Spring Cloud Netflix-Eureka集群数据同步

Spring Cloud笔记 Eureka通过集群实现高可用

Spring Cloud Eureka集群搭建与注册

Spring-Cloud Eureka集群配置