先写一下整理过程, 之后总结一下踩的坑,(参考了翟永超的书籍,和一些相关博客)
Eureka高可用的作用
之所以进行eureka集群的搭建,在于我们平时的生产环境中,很难保证单节点的eureka服务能提供百分百不间断的服务,如果eureka无响应了,整个项目应用都会出现问题,因此要保证eureka随时都能提供服务的情况下,最好的方式就是采用eureka的集群模式,也就是搭建eureka的高可用,在eureka的集群模式下,多个eureka server之间可以同步注册服务,因此,在一个eureka宕掉的情况下,仍然可以提供服务注册和服务发现的能力,从而达到注册中心的高可用。
创建 两个 注册中心, 节点为 peer1, peer2
创建appliaction-peer1.yml
#本机端口
server:
port: 1111
spring:
application:
name: eureka-server
eureka:
instance:
hostname: peer1
client:
fetch-registry: true
register-with-eureka: true
serviceUrl:
defaultZone: http://peer2:1112/eureka/
创建 application-peer2.yml
server:
port: 1112
spring:
application:
name: eureka-server
eureka:
instance:
hostname: peer2
client:
fetch-registry: true
register-with-eureka: true
serviceUrl:
defaultZone: http://peer1:1111/eureka/
修改配置文件hosts文件
127.0.0.1 peer1
127.0.0.1 peer2
本地分别启动两个注册中心
java -jar springcloud-demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar springcloud-demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
打开http://localhost:1112 查看peer2 节点 , registered-replicas 里面出现了 http://peer1:11111/eureka ,
切换到 peer1 节点,可以看到peer 为备用节点,
这里面用 peer1,peer2 代表 ip地址,主要是方便区分, 没有特别的意义, 如果你想使用ip的字的话, 设置:
eureka.instance.prefer-ip-address=true
我没测试,需要测试的话, 可以自己去测试一下,
踩坑:这里面的话,需要手动设置
如果不手动设置,按道理默认是为true 的 但是如果不填的话, 不会将自己 注册到注册中心, 会导致,副本注册中心 不可用
不知道是不是spring cloud 依赖的版本问题导致的