目标:本篇文章将手把手带你搭建Eureka-Server集群,来吧,搞定它!

1,首先,我们为什么要搭建微服务注册中心集群?

注册中心集群,保证高可用,这个很重要!

当注册中心挂掉之后,由于客户端保存有缓存,所以之前的服务依然可以正常交互,

但是后续的服务都无法接入和感知到其他服务节点的变化,所以,我们需要搭建一个高可用的服务注册中心集群

2,搭建微服务注册中心集群的步骤

1,Eureka集群需要两台以上,然后彼此进行注册即可, 刚启动时会报错,两两都启动之后,都找得到对方,则不会再报错。

2,实验阶段: 我们通过复制实例,并且在启动时,设置不同的端口及配置文件修改为对方的服务地址即可,或者配置文件配置两份信息即可。

生产环境肯定是部署在两台不同的云主机上,否则部署在同一台云主机,那就没有可用性的意义了。

3,修改配置,注意:application.name要保持一致

注意:采用ip或localhost域名的配置是有差异的,此处有坑,切记切记!

采用ip的方式配置



spring:
  application:
    name: eureka-service
---
spring:
  profiles: eurekaService1
server:
  port: 8888
eureka:
  instance:
    appname: eureka-service
    #hostname: localhost1
  client:
    service-url:
      defaultZone: http://127.0.0.1:8866/eureka/
  server:
    enable-self-preservation: false #关闭自我保护
    eviction-interval-timer-in-ms: 3000 #剔除服务间隔,单位毫秒
---
spring:
  profiles: eurekaService2
server:
  port: 8866
eureka:
  instance:
    appname: eureka-service
    #hostname: localhost2
  client:
    service-url:
      defaultZone: http://127.0.0.1:8888/eureka/
  server:
    enable-self-preservation: false #关闭自我保护
    eviction-interval-timer-in-ms: 3000 #剔除服务间隔,单位毫秒



采用域名的方式

如果采用域名的方式,要设置不同的hostname才可以配置集群成功



spring:
  application:
    name: eureka-service
---

spring:
  profiles: eurekaService1
server:
  port: 8888
eureka:
  instance:
    appname: eureka-service
    hostname: localhost1
  client:
    service-url:
      defaultZone: http://localhost:8866/eureka/

---
spring:
  profiles: eurekaService2
server:
  port: 8866
eureka:
  instance:
    appname: eureka-service
    hostname: localhost2
  client:
    service-url:
      defaultZone: http://localhost:8888/eureka/



4,分别启动两台Eureka-server服务实例




搭建微服务系统 微服务集群搭建_搭建微服务系统


5,Eureka的关键参数配置说明


eureka:
  client:
    service-url:
      defaultZone: http://localhost:8888/eureka/,http://localhost:8866/eureka/
    registry-fetch-interval-seconds: 30
  instance:
    lease-renewal-interval-in-seconds: 30
    lease-expiration-duration-in-seconds: 90


registry-fetch-interval-seconds:每隔30秒抓取一次新的注册信息

lease-renewal-interval-in-seconds:客户端的实例会向服务器发送周期性的心跳,默认是30秒/次 服务器接收心跳请求,如果超过3次没有收到客户端的心跳包,则认为是有问题的, 那么会将该实例从注册表中删除掉,这个时间是90秒