2.1.2 Eureka的高可用

按照前文对Eureka的讲解,我们即可构建出一个简单的注册中心。但此时的Eureka是单点的,不适合于生产环境,那么如何实现Eureka的高可用呢?

  • 添加主机名:
127.0.0.1 peer1 peer2
  • 修改application.yml
---
spring:
  profiles: peer1                                 # 指定profile=peer1
server:
  port: 8761
eureka:
  instance:
    hostname: peer1                               # 指定当profile=peer1时,主机名
  client:
    serviceUrl:
      defaultZone: http://peer2:8762/eureka/      # 将自己注册到peer2这个Eureka上面去

---
spring:
  profiles: peer2
server:
  port: 8762
eureka:
  instance:
    hostname: peer2
  client:
    serviceUrl:
      defaultZone: http://peer1:8761/eureka/
  • 分别启动两个Eureka应用:
java -jar microservice-discovery-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar microservice-discovery-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
  • 访问http://peer1:8761 ,我们会发现registered-replicas 中已经有peer2 节点了,同样地,访问http://peer2:8762 ,也能发现其中的registered-replicaspeer1 节点,如下图:

Eureka 高可用

  • 我们尝试将peer2 节点关闭,然后访问http://peer1:8761 ,会发现此时peer2会被添加到unavaliable-replicas 一栏中。

注意:

该示例中的hostname 并非必须的,如果不配置,默认将会使用IP进行查找。

将服务注册到高可用的Eureka

如果注册中心是高可用的,那么各个微服务配置只需要将defaultZone 改为如下即可:

eureka:
  client:
    serviceUrl:
      defaultZone: http://peer1:8761/eureka/,http://peer2:8762/eureka

参考文档

http://cloud.spring.io/spring-cloud-static/Brixton.SR5/#spring-cloud-eureka-server

results matching ""

    No results matching ""