平时学习的时候单机就可以用了,但是到了生产环境就不行了。为了提高Eureka的高可用就必须搭建集群了。Eureka集群有两种。一种是每个Eureka Server之间不同步服务列表(保存了每个注册的服务信息)。第二种是每个Eureka Server之间同步信息。第一种在单机Eureka Server上不需要配置,只需要在Eureka Client连接Eureka Server时提供所有的服务地址即可。第二种就需要配置了。地址:https://docs.spring.io/spring-cloud-netflix/docs/3.1.4/reference/html/#spring-cloud-eureka-server-zones-and-regions
。Eureka集群需要多个主机名。下面用两个Eureka Server模拟Eureka集群。
配置主机名:
在主机名配置文件加入,Windows系统文件是C:\Windows\System32\drivers\etc\hosts,Linux系统文件在/etc/hosts:
127.0.0.1 test1.com
127.0.0.1 test2.com
配置完了记得ping test1.com,要ping通才行。
下一步在原来的单机Eureka Server的基础上更改配置,参考https://www.cnblogs.com/shigongp/p/17231537.html。
一、在Resources目录下新建application-eu1.yml作为第一个Eureka Server的配置文件:
eureka:
instance:
hostname: test1.com
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/,http://test2.com:8762/eureka/
server:
port: 8761
eureka.instance.hostname填写第一个Eureka Server的域名。registerWithEureka和fetchRegistry必须为true或者不写。defaultZone填其他Eureka Server的注册中心地址。
二、在Resources目录下新建application-eu2.yml作为第二个Eureka Server的配置文件:
server:
port: 8762
eureka:
instance:
hostname: test2.com
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/,http://test1.com:8761/eureka/
配置参数和上面类似。
三、application.yml启用配置和公共配置:
spring:
application:
name: eurekaServer
profiles:
active: eu1
注意application-eu1.yml和application-eu2.yml的spring.application.name参数必须相同。模拟Eureka集群同一个项目要启动多次,如果使用IDEA请先配置同一个项目多次启动,参考https://blog.csdn.net/m0_59301720/article/details/125741033。首先将spring.profiles.active改成eu1然后启动。如果启动过程出现连接另一个Eureka Server出错的问题请先忽略。再将spring.profiles.active改成eu2然后启动。访问http://localhost:8761/,可看到:
图中Instances currently registered with Eureka有两个服务。General Info下面的registered-replicas和available-replicas为http://test2.com:8762/eureka/
。且unavailable-replicas没有内容。
访问http://localhost:8762/可看到和http://localhost:8761/类似的内容即搭建成功: