鉴于上篇内容提出的思考拓展部分,此部门其实就是做了 application.yaml 的配置文件的更改。此篇的 Demo 通过单节点多端口来模拟多节点分布的 Eureka Server HA 集群。由于篇幅比较简单,我就直接将 microservice-discovery-eureka 做了 yaml 配置文件更改最终输出为 microservice-discovery-eureka-ha 的模块,就暂且不实现生产者服务和消费者服务了。


Eureka Server HA

microservice-discovery-eureka-ha

  • application.yaml 文件如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    spring:
    application:
    name: microserver-discovery-eureka-ha
    #eureka:
    # client:
    # service-url:
    # defaultZone: http://peer1:8001/eureka/,http://peer2:8002/eureka/
    ---
    spring:
    profiles: peer1
    server:
    port: 8001
    eureka:
    instance:
    hostname: peer1
    client:
    service-url:
    defaultZone: http://peer2:8002/eureka/
    # fetch-registry: true
    # register-with-eureka: true

    ---
    spring:
    profiles: peer2
    server:
    port: 8002
    eureka:
    instance:
    hostname: peer2
    client:
    service-url:
    defaultZone: http://peer1:8001/eureka/
    # fetch-registry: true
    # register-with-eureka: true
  • 配置本地 hosts 文件:

  • 由于是本地单节点模拟,为了能够解析到 domain 需要加如下配置*

    1
    2
    3
    127.0.0.1 peer1

    127.0.0.1 peer2
  • 通过 package 打成 jar 包运行

    1
    2
    java -jar microservice-discovery-eureka-ha/target/microservice-discovery-eureka-ha-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
    java -jar microservice-discovery-eureka-ha/target/microservice-discovery-eureka-ha-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
  • 验证
    成功运行后会嗨皮发现最终页面如下:
    sc3-1
    当然这是我在浏览器输入 http://peer1:8001 得到的输出,然后我们可以通过启动上篇的生产者服务和消费者服务,然后将其中的一个 Eureka Server 宕掉,发现服务还是可用的,即完成了验证。

示例代码链接