配置 Eureka Server 集群

简介

为了使 Eureka Server 实现高可用,咱们须要为它配置集群。这样当有一台 Eureka Server 有故障时,集群中的其余 Server 能够进行代替。Eureka 集群之中的 Node 经过 P2P 通讯的方式共享注册表,以使得每一个 Eureka Server 的注册表保持一致。本教程将在本地开启两台 Eureka Server 以测试集群的搭建。git

项目源码

Gitee码云spring

配置 Eureka Server

打开远程 git 仓库中的 eureka-server.yml 文件,添加以下配置:ide

---
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-eurekafetch-registry 以前设置为了 false, 由于只有一台 Eureka Server,并不须要本身注册本身,而如今有了集群,可在集群的其余节点中注册本服务。spring-boot

修改 hosts

修改 hosts 文件,以使 peer1 和 peer2 映射到 localhost,由于 eureka server 的主机名必须不一样才可互相注册,因此在本地须要模拟两个不一样的主机名:测试

127.0.0.1 peer1
127.0.0.1 peer2

配置 productService

打开远程 git 仓库中的 product-service.yml 文件,添加以下配置:fetch

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 能够同步注册表。url

测试

首先启动 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 均在注册表里。code

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

欢迎访问个人博客:张旭乾的博客

相关文章
相关标签/搜索