Eureka高可用搭建、验证

106 阅读2分钟

参考:blog.csdn.net/qq_42087460…

Eureka简介

Eureka 是一个基于REST风格的服务注册与发现组件。

设计方案

通常我们的注册中心服务只有一个,如果当前的这个注册中心挂了,那整个系统是不是就都出问题了,那我们是不是可以多创建几个注册中心服务,防止其中如果一个服务挂了,那你还可以去另一个注册中心里面去注册,就不会对系统造成影响。

方案验证

安装双注册中心

  • eureka1的配置文件
spring:
  application:
    name: eureka1
server:
  port: 8761
eureka:
  instance:
    prefer-ip-address: true
  client:
    # 是否将自己注册到Eureka,默认为true。如果是单注册中心的话需改为false,多注册中心相互注册,设为true
    registerWithEureka: true
    # 是否从注册中心获取注册信息,多注册中心,设为true
    fetchRegistry: true
    # 设置为其他注册中心的url
    service-url:
      defaultZone: http://localhost:8762/eureka
  • eureka2的配置文件
spring:
  application:
    name: eureka2
server:
  port: 8762
eureka:
  instance:
    prefer-ip-address: true
  client:
    # 是否将自己注册到Eureka,默认为true。如果是单注册中心的话需改为false,多注册中心相互注册,设为true
    registerWithEureka: true
    # 是否从注册中心获取注册信息,多注册中心,设为true
    fetchRegistry: true
    # 设置为其他注册中心的url
    service-url:
      defaultZone: http://localhost:8761/eureka
  • 结果验证,启动2个服务,查看服务中心的注册信息:

高可用验证

  • 启动一个client服务,只向单个注册中心注册,查看是否2个注册中心都有注册信息
    • client的配置信息
server:
  port: 8001
spring:
  application:
    name: client1
eureka:
  instance:
    prefer-ip-address: true
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
  • 结果显示

  • 启动一个client服务,向2个注册中心注册,查看是否2个注册中心都有注册信息
    • client的配置信息
server:
  port: 8002
spring:
  application:
    name: client2
eureka:
  instance:
    prefer-ip-address: true
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
  • 结果显示

  • 停掉eureka1,在eureka2中依然可以发现client2 =》问题:依然可以看到CLIENT1、EUREKA2
  • 在client中添加业务,测试功能
    • 使用openfeign相互访问业务接口,能够正常访问
    • 当掉线一个注册中心后,也能够正常访问

过程问题

  • 注册中心显示:EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.=》blog.csdn.net/u012373281/…

  • Openfeign报错:Load balancer does not have available server for client=》之前我是新建一个maven project,再建module;后改为新建一个empty project,问题没有了。