思路:创建多个注册中心,在他们的配置文件中配置相互之间的注册
1 在eureka-server项目的resources目录下创建两个配置文件application-peer1.yml和application-peer2.yml
#application-peer1.yml
server:
port: 8761
eureka:
instance:
hostname: peer1
client:
serviceUrl:
defaultZone: http://peer2:8769/eureka/ #向peer2进行注册
spring:
profiles: peer1
application:
name: eureka-server #注册中心
info: #/info请求的显示信息
app:
name: ${spring.application.name}
version: 1.0.0
build:
artifactId: @project.artifactId@
version: @project.version@
#application-peer2.yml
server:
port: 8769
eureka:
instance:
hostname: peer2
client:
serviceUrl:
defaultZone: http://peer1:8761/eureka/ #向peer1进行注册
spring:
application:
name: eureka-server #注册中心
info: #/info请求的显示信息
app:
name: ${spring.application.name}
version: 1.0.0
build:
artifactId: @project.artifactId@
version: @project.version@
2 修改本地的hosts文件(C:windowsSystem32driversetcHOST)
3 分别使用application-peer1.yml和application-peer2.yml配置文件启动项目
第一种方式使用 mvn spring-boot:run -Dspring.profiles.active=peer1
mvn spring-boot:run -Dspring.profiles.active=peer2
第二种方式使用java -jar eureka-server-0.0.1-SNAPSHOT.jar - -spring.profiles.active=peer1
java -jar eureka-server-0.0.1-SNAPSHOT.jar - -spring.profiles.active=peer2
4 在客户端指定任意一台注册中心即可
eureka:
client:
serviceUrl:
defaultZone: http://peer1:8761/eureka/ #注册服务器地址
5 这样启动客户端在两个注册中心都可以看到
此时就是peer1宕机,引用service-hi服务的程序仍然能够继续访问
效果演示:
1 将cloud-consumer-ribbon项目的注册中心配置到peer2上eureka.client.serviceUrl.defaultZone= http://peer2:8769/eureka/
2 启动cloud-consumer-ribbon
3 将peer1停掉,仍然可以访问
4 将peer1启动,将peer2停掉,仍然如2中的效果一样