Eureka的高可用

配置Eureka的高可用

我们重新开一个工程,将microservice-discovery-eureka工程复制一个并重命名microservcie-discovery-eureka-ha,并修改pom.xml和.project中工程名。
在IDE中,我们导入这个工程,接下来重点来了。
1) 配置文件application.yml 清空内容,并写入如下内容:

spring:
  application:
    name: eureka-server-ha
---
server:
  port: 8762
spring:
  profiles: peer1
eureka:
  instance:
    hostname: peer1
    instance-id: ${spring.application.name}:${server.port}
  client:
    serviceUrl:
      defaultZone: http://peer2:8763/eureka/,http://peer3:8764/eureka/

---
server:
  port: 8763
spring:
  profiles: peer2
eureka:
  instance:
    hostname: peer2
    instance-id: ${spring.application.name}:${server.port}
  client:
    serviceUrl:
      defaultZone: http://peer1:8762/eureka/,http://peer3:8764/eureka/

---
server:
  port: 8764
spring:
  profiles: peer3
eureka:
  instance:
    hostname: peer3
    instance-id: ${spring.application.name}:${server.port}
  client:
    serviceUrl:
      defaultZone: http://peer1:8762/eureka/,http://peer2:8763/eureka/

强调:”—”必须要有,用来隔开每个服务。在上面,我配置了三个服务,并让他们分别注册另外两个Eureka Server。还有我们这里配置了hostname,那我们需要配置hosts。

因为,比如启动peer1时,我们给peer1配置了peer2、peer3的Eureka Server,那么peer1在启动时就回去找对应的peer2、peer3进行注册,因为peer2、peer3还没有启动,所有就会报错。

好,将三个服务都启动之后,我们用浏览器分别访问这三个Eureka Server,会发现DS Replicas有另两个Eureka Server的副本,在Instance currently registered with Eureka有这三个服务的实例。

这里提一个问题:为什么我只被另外两个服务所注册,但为什么在实例列表中还会有自己本身的实例呢?

答:在最开始时,我们就说了官网中Eureka高可用说明,官网告诉我们注册表中的实例都要发送心跳以保持注册更新。简单来说,就是各服务之间通过相互发送心跳来保持同步,所以就会在实例表中包含了自己本省的实例。

Eureka-provider-user注册Eureka Server配置

在eureka-provider-user工程的配置文件application.yml中,我们将eureka.client.service-url.defaultZone的值配置为:http://peer1:8762/eureka/ ,然后启动user工程。

发现,虽然我们只配置了user注册在peer1上,但是在peer2、peer3也会有user的实例,这也就是它们各实例之间通过发送心跳来实现注册同步的机制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值