在eureka的服务治理设计中,所有的节点既是服务提供方,也是服务消费方,注册中心也不例外。eureka server的高可用集群,其实就是将自己作为服务向其他注册中心注册自己,这样几个节点的eureka就可以互相注册,实现服务清单的互相同步,达到高可用的效果。
本文,记录在本地搭建2个eureka服务,互相注册为一个集群,生产环境可以部署更多的节点。示例中两个项目分别为eureka-server,port为8761,和eureka-server1,port为8762。这里列出重点步骤。
1.引入依赖 eureka-server
1 | <!--eureka-server--> |
2.启动类 eureka-server
添加注解
1 | @EnableEurekaServer |
3.配置文件 eureka-server
eureka-server注册到 eureka-server2上,并且,register-with-eureka: true, fetch-registry: true,两个参数,需要设置为true,让他们可以互相注册,同步服务清单;由于这里我使用的ip来做地址,而不是服务名,所以需要打开prefer-ip-address: true。
1 | server: |
4.引入依赖 eureka-server2
1 | <!--eureka-server--> |
5.启动类 eureka-server2
添加注解
1 | @EnableEurekaServer |
6.配置文件 eureka-server2
eureka-server2注册到 eureka-server上,并且,register-with-eureka: true, fetch-registry: true,两个参数,需要设置为true,让他们可以互相注册,同步服务清单;由于这里我使用的ip来做地址,而不是服务名,所以需要打开prefer-ip-address: true。
1 | server: |
7.服务注册
在其他服务向eureka集群注册时,可以只注册到一个节点,也可以向多节点注册。因为集群中节点会自动同步服务列表,所以上述2种方式均可。
这里给出一个示例,比如company-server,向注册中心注册,写法如下:
1 | eureka: |
可以发现,注册到eureka集群,和注册到单体eureka上,对于注册者而言,是相同的,无需额外处理。当然,也可以如下,向多个节点注册:
1 | eureka: |
这里采用第一种写法,注册完后,启动eureka集群(由于启动有先后,会报错,因为互相注册,对方可能还没起来,等都起来了,就好了),然后再启动company-server,访问2个注册中心,结果如下:
可以看到,尽管我们只向eureka-server注册了,但是eureka-server2也可以看到这个服务。
最后更新: 2020年01月14日 19:38
原始链接: https://java4all.cn/2018/01/08/SpringCloud教程(Finchley版本)-08:eureka集群搭建/