Eureka Server是一个web应用 ,可以启动多个实例(配置不同端口)保证Eureka Server的高可用

多个Eureka Server之间也会互相注册为服务,当服务提供者注册到Eureka Server集群中的某个节点时,该节点会把服务的信息同步给集群中的每个节点,从而实现数据同步。因此,无论客户端访问到Eureka Server集群中的任意一个节点,都可以获取到完整的服务列表信息。

高可用配置:将Eureka Server作为一个服务注册到其它Eureka Server ,这样多个Eureka Server之间就能够互相发现对方,同步服务,实现Eureka Server集群

要搭建两台EurekaServer的集群,端口分别为:1008610087

一、修改原来的EurekaServer配置;

修改 eureka-server\src\main\resources\application.yml 如下:

  1. server:
  2. port: ${port:10086}
  3. spring:
  4. application:
  5. # 应用名称,会在eureka中作为服务的id(serviceId)
  6. name: eureka-server
  7. eureka:
  8. client:
  9. service-url :
  10. # eureka服务地址;如果是集群则是其它服务器地址,后面要加/eureka
  11. defaultZone: ${defaultZone:http:=//127.0.0.1:10086/eureka}
  12. #是否注册自己,自身不提供服务所以不注册
  13. #register-wi th-eureka:false
  14. #是否拉取服务
  15. #fetch-registry: false

所谓的高可用注册中心,其实就是把EurekaServer自己也作为一个服务,注册到其它EurekaServer上,这样多个 EurekaServer之间就能互相发现对方,从而形成集群。因此我们做了以下修改:

注意把register-with-eureka和fetch-registry修改为true或者注释掉 在上述配置文件中的${}表示在jvm启动时候若能找到对应port或者defaultZone参数则使用,若无则使用后面的默认值

把service-url的值改成了另外一台EurekaServer的地址,而不是自己

二、另外一台在启动的时候可以指定端口port和defaultZone配置

修改原来的启动配置组件;在如下界面中的VM options
设置 -DdefaultZone=http:127.0.0.1:10087/eureka
image.png
image.png
复制一份并修改;在如下界面中的VM options
设置 -Dport=10087 -Ddefaultzone=http:127.0.0.1:10086/eureka

三、启动测试;同时启动两台eureka server

image.png

四、客户端注册服务到集群

因为EurekaServer不止一个,因此 user-service 项目注册服务或者 consumer-demo 获取服务的时候,service-url参 数需要修改为如下:

  1. eureka:
  2. client:
  3. service-url: # EurekaServert 地址,多个地址以','隔开
  4. defaultZone: http://127.0.0.1:10086/eureka, http://127.0.0.1:10087/eureka