zoukankan      html  css  js  c++  java
  • 配置 Eureka Server 集群

    简介

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

    项目源码

    Gitee码云

    配置 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-eurekafetch-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

    欢迎访问我的博客:张旭乾的博客

  • 相关阅读:
    MYSQL分库分表
    MYSQL主从数据库
    mysql not in用法
    python 文件及目录操作
    python 读写文件
    python字符编码
    python类的继承、封装和多态
    python之定义类创建实例
    理解OSI参考模型
    python闭包与装饰器
  • 原文地址:https://www.cnblogs.com/zxuqian/p/9050123.html
Copyright © 2011-2022 走看看