简介
为了使 Eureka Server 实现高可用,我们需要为它配置集群。这样当有一台 Eureka Server 有故障时,集群中的其他 Server 可以进行代替。Eureka 集群之中的 Node 通过 P2P 通信的方式共享注册表,以使得每个 Eureka Server 的注册表保持一致。本教程将在本地开启两台 Eureka Server 以测试集群的搭建。
项目源码
配置 Eureka Server
打开远程 git 仓库中的 eureka-server.yml
文件,添加如下配置:
---
spring:
profiles: peer1
server:
port: 8761
eureka:
instance:
hostname: peer1
client:
register-with-eureka: true
fetch-registry: true
serviceUrl:
defaultZone: http://peer2:8762/eureka
---
spring:
profiles: peer2
server:
port: 8762
eureka:
instance:
hostname: peer2
client:
register-with-eureka: true
fetch-registry: true
serviceUrl:
defaultZone: http://peer1:8761/eureka
三划线用于区分两个不同的 profile,使用 spring-boot 插件启动项目时可通过命令行参数指定 profile。这两个 profiles 分别指定了 profile 的名字,服务的端口号。ureka.instance.hostname
为主机名,必须要和 eureka.client.serviceUrl.defaultZone
中的 Peer 主机名保持一致。例如,在 peer1
的 profile 中,把 peer2
作为了集群中另一个镜像节点,那么这个 http://peer2:8762/eureka
URL 中的 peer2
就要和 peer2
profile 中的 eureka.instance.hostname
保持一致。serviceUrl
是 eureka server 的注册地址,defaultZone
想对于 AWS 的 availability zone,在本地测试可以用 defaultZone
或者其他名称,以把 Eureka Server 部署在不同集群。register-with-eureka
和 fetch-registry
之前设置为了 false, 因为只有一台 Eureka Server,并不需要自己注册自己,而现在有了集群,可在集群的其他节点中注册本服务。
修改 hosts
修改 hosts 文件,以使 peer1 和 peer2 映射到 localhost,因为 eureka server 的主机名必须不同才可互相注册,所以在本地需要模拟两个不同的主机名:
127.0.0.1 peer1
127.0.0.1 peer2
配置 productService
打开远程 git 仓库中的 product-service.yml
文件,添加如下配置:
server:
port: 8081
spring:
cloud:
config:
allow-override: true
override-system-properties: false
eureka:
client:
serviceUrl:
defaultZone: http://peer1:8761/eureka, http://peer2:8762/eureka
这里通过 eureka.client.serviceUrl.defaultZone
把 eureka 集群中的所有 url 都填写了进来,也可以只写一台,因为各个 eureka server 可以同步注册表。
测试
首先启动 configserver,然后分别运行如下两条命令启动 eureka server 集群:
mvn spring-boot:run -Dspring-boot.run.profiles=peer1
mvn spring-boot:run -Dspring-boot.run.profiles=peer2
最后启动 productService
,访问任一 Eureka Server,如:
http://peer1:8761
我们可以看到 Eureka Server 集群和 Product-Service 均在注册表里。
Application | AMIs | Availability Zones | Status |
---|---|---|---|
EUREKA-SERVER | n/a (2) | (2) | UP (2) - xuqians-imac:eureka-server:8761 , xuqians-imac:eureka-server:8762 |
PRODUCT-SERVICE | n/a (1) | (1) | UP (1) - xuqians-imac:product-service:8081 |
欢迎访问我的博客:张旭乾的博客
网友评论