多个Eureka Server之间也会互相注册为服务,当服务提供者注册到Eureka Server集群中的某个节点时,该节点会把服务的信息同步给集群中的每个节点,从而实现数据同步。因此,无论客户端访问到Eureka Server集群中的任意一个节点,都可以获取到完整的服务列表信息。
我们假设要搭建两条EurekaServer的集群,端口分别为:8080和7080
1、 我们修改原来的EurekaServer配置:
server:
port: 8080# 端口
spring:
application:
name: eureka-server # 应用名称,会在Eureka中显示
eureka:
client:
service-url: # 配置其他Eureka服务的地址,而不是自己,比如7080
defaultZone: http://127.0.0.1:7080/eureka
所谓的高可用注册中心,其实就是把EurekaServer自己也作为一个服务进行注册,这样多个EurekaServer之间就能互相发现对方,从而形成集群。因此我们做了以下修改:
- 删除了register-with-eureka=false和fetch-registry=false两个配置。因为默认值是true,这样就会吧自己注册到注册中心了。
- 把service-url的值改成了另外一台EurekaServer的地址,而不是自己
2、 另外一台配置恰好相反:
server:
port: 7080# 端口
spring:
application:
name: eureka-server # 应用名称,会在Eureka中显示
eureka:
client:
service-url: # 配置其他Eureka服务的地址,而不是自己,比如8080
defaultZone: http://127.0.0.1:8080/eureka
idea中一个应用不能启动两次,我们需要重新配置一个启动器,然后启动两个Eureka
3、 客户端注册服务到集群
因为EurekaServer不止一个,因此注册服务的时候,service-url参数需要变化:
eureka:
client:
service-url: # EurekaServer地址,多个地址以','隔开
defaultZone: http://127.0.0.1:8080/eureka,http://127.0.0.1:7080/eureka
4、然后访问localhost:8080/或localhost:7080/ 都可以看到注册的服务