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

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

原文地址:https://www.cnblogs.com/zxuqian/p/9050123.html

时间: 2024-07-31 16:02:10

配置 Eureka Server 集群的相关文章

3、Spring Cloud - Eureka(高可用Eureka Server集群)

在实际的项目中,可能有几十个或者几百个的微服务实例,这时 Eureka Server 承担了非 常高的负载.由于 Eureka Server 在微服务架构中有着举足重轻的作用,所以需要对 Eureka Server 进行高可用集群 1.此时需要两个服务 eureka-server的配置文件 server.port=8761 spring.application.name=eureka8761 eureka.client.fetch-registry=false eureka.client.reg

Eureka Server集群版搭建

springcloudの核心组件Eureka.Ribbon.Feign.Hystrix.Zuul 看了一篇关于springcloud核心组件的实例讲解,分析的简单透彻,更好的明白组件间的关系,记录下来. 各个组件角色扮演: Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从而知道其他服务在哪里 Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡,从一个

Eureka Server 集群配置

注册中心: debug: true spring: application: name: eureka-server logging: level: com.netflix.eureka: 'off' com.netflix.discovery: 'off' --- spring: profiles: manager1 server: port: 8100 eureka: instance: prefer-ip-address: true #以IP地址注册到服务中心,相互注册使用IP地址 #ip

实现Eureka Server的高可用并将应用注册到Eureka Sever集群上

1. 回顾 Eureka Client会定时连接Eureka Server,获取注册表中的信息并缓存到本地.微服务在消费远程API时总是使用本地缓存中的数据.因此一般来说,即使Eureka Server发生宕机,也不会影响到服务之间的调用.但如果Eureka Server宕机时,某些微服务也出现了不可用的情况,Eureka Server中的缓存若不被刷新,就可能会影响到微服务的调用,甚至影响到整个应用系统的高可用.因此,在生成环境中,通常会部署一个高可用的Eureka Server集群. Eur

从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html 第二篇http://www.cnblogs.com/lyhabc/p/4682028.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第二篇,主要讲述如何搭建故障转移集群,因为AlwaysOn是基于Windows的故障转移集群的 在讲解步骤之前需要了解一下故障转移集群仲裁配置 下面图片来自<Wind

从0开始搭建SQL Server 2012 AlwaysOn 第二篇(配置故障转移集群)

本篇主要讲配置Windows 故障转移集群及遇到的相关问题(坑),因为AlwaysOn是基于Windows的故障转移集群的 在讲解步骤之前需要了解一下故障转移集群仲裁配置 四种集群的仲裁配置: 1.多数节点:这种配置不会用到仲裁磁盘,而所谓多数节点就是在正常节点数量占多数的情况下,集群才会提供服务,否则就停止服务.这种配置适用于奇数节点的集群,例如5个节点的集群,其正常节点数量必须至少3个,集群才会提供服务 2.多数节点和磁盘:适用于偶数节点的集群,他在计算法定数量时会将仲裁磁盘计算进来,例如,

【跟我学Puppet】1.7 mco 配置amq的集群

在之前的1.2 Puppet 3.7 Mcollective+SSL加密和权限验证 中大家可以成功的部署mco.并且结合ssl证书做权限管理.... 通过mco自带的failover可以很简单的去做一个高可用...那么问题来了....这个简单的高可用是... 当有a.b两个mq.一堆server和client现在连接在mq a,当一个网络抖动,部分的机器到了mq b. 这个时候你用client 在mq a中是看不到在mq b中的主机...这..怎么办.. 配置ActiveMQ      MQ的配

SQL Server集群服务器的优缺点

由二台或更多物理上独立的服务器共同组成的“虚拟”服务器称之为集群服务器.一项称做MicroSoft集群服务(MSCS)的微软服务可对集群服务器进行管理.一个SQL Server集群是由二台或更多运行SQL Server的服务器(节点)组成的虚拟服务器.如果集群中的一个节点发生故障,集群中的另一个节点就承担这个故障节点的责任. 认为一个SQL Server集群能够给集群中的两个节点带来负载平衡,这是一种常见的误解.虽然这似乎很有用,但却是不正确的.这也意味着集束SQL Server不能真正提高性能

zookeeper安装和配置(单机+伪集群+集群)

#单机模式 解压到合适目录. 进入zookeeper目录下的conf子目录, 复制zoo_sample.cfg-->zoo.cfg(如果没有data和logs就新建):tickTime=2000 dataDir=/Users/apple/zookeeper/data dataLogDir=/Users/apple/zookeeper/logs clientPort=2180 参数说明:tickTime: zookeeper中使用的基本时间单位, 毫秒值.dataDir: 数据目录. 可以是任意目