使用多个 Eureka Server

spring cloud学习笔记

上文 创建、配置Eureka Server 和 Client
下文 使用RestTemplate进行应用间通信

通过不同的配置文件 application.yml 启动多个实例来实现

#Server 1
server:
  port: 8761
eureka:
  server:
    enable-self-preservation: false 
  client:
    service-url:
      defaultZone: http://localhost:8762/eureka/ #两个server相互注册
    register-with-eureka: false 
spring:
  application:
    name: eureka-demo
#Server 2
server:
  port: 8762
eureka:
  server:
    enable-self-preservation: false 
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/ #两个server相互注册
    register-with-eureka: false 
spring:
  application:
    name: eureka-demo

这样 在 idea 或者 Eclipse 中我们需要启动一个实例,然后修改配置再启动一个实例,有点乱。
可以把 application.yml 定义为下面的形式:

# 无参数启动
spring:
  application:
    name: eureka-demo
server:
  port: 8761
eureka:
  server:
    enable-self-preservation: false #防止由于eureka的机制导致 client 被错误显示在线 在开发环境使用
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
---
# 启动参数 --spring.profiles.active=server1
spring:
  profiles: server1
server:
  port: 8761
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8762/eureka/
---
# 启动参数 --spring.profiles.active=server2
spring:
  profiles: server2
server:
  port: 8762
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

运行方式

  1. 在idea中运行
    新建2个运行配置 server1 server2,按图片所示分别添加参数
    --spring.profiles.active=server1
    --spring.profiles.active=server2
    使用多个 Eureka Server_第1张图片
  2. 打包运行
    启动两个cmd窗口,切换到项目目录下,分别运行
    java -jar target/eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=server1
    java -jar target/eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=server2

我们同时运行刚才创建的 Client,注意我们只把 Client 注册到了http://localhost:8761/eureka/ 也就是server1中
此时,localhost:8761,localhost:8762的Eureka Server 均显示如下,即只在server1中注册的Client也被注册到了server2

使用多个 Eureka Server_第2张图片

虽然,Client被自动注册到了server2,但是如果server1不启动,server2无法得到Client的注册(Client在server2注册后,server1变成不可用并不影响)。所以我们在Client中做修改,配置2个defaultZone

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/

当有3个Eureka Server时,以此类推,三个Server相互配置另外2个地址,Client 配置 3个地址

你可能感兴趣的:(使用多个 Eureka Server)