Eureka 集群搭建与踩坑

刚刚跑起来,趁着热,就写进了博客,记录下再这个过程踩过的坑:

官方的文档指出配置HA关键:


By default every Eureka server is also a Eureka client and requires (at least one) service URL to locate a peer. If you don’t provide it the service will run and work, but it will shower your logs with a lot of noise about not being able to register with the peer.


是时候展现英语功底的时候了(开玩笑的,英语不怎么太好的童鞋,可以粘贴到google翻译),主要意思就是:Eureka Server同时也是Eureka Client,配置对等节点时,只需要像我们注册服务时,配置个serviceUrl指向对等节点地址即可。

下面开始动手,我是在1台机器起了2个实例,我的配置文件:

---
spring:
  application:
    name: discovery
    version: 1.0.0
    env: test

server:
  port: ${PORT:8761}

eureka:
  environment: ${ENV:test}
  datacenter: ${DATACENTER:master}
  instance:
    hostname: 127.0.0.1
    leaseRenewalIntervalInSeconds: ${LEASE-TTL:30}
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://127.0.0.1:8762/eureka/
  server:
    waitTimeInMsWhenSyncEmpty: 0
    enable-self-preservation: false # 关闭安全模式
    eviction-interval-timer-in-ms: 60000 # 清理间隔
    
---
spring:
  application:
    name: discovery
    version: 1.0.0
    env: test

server:
  port: ${PORT:8762}

eureka:
  environment: ${ENV:test}
  datacenter: ${DATACENTER:master}
  instance:
    hostname: 127.0.0.1
    leaseRenewalIntervalInSeconds: ${LEASE-TTL:30}
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://127.0.0.1:8761/eureka/
  server:
    waitTimeInMsWhenSyncEmpty: 0
    enable-self-preservation: false # 关闭安全模式
    eviction-interval-timer-in-ms: 60000 # 清理间隔

成功启动后,只有8762端口上能看到DS Replicas,8761端口没有DS Replicas,我怀疑HA没有搭建成功,果然:

8762上服务正在evict,显然两个实例没有正常通信,两个实例使用的hostname都是127.0.0.1,修改主机名:

127.0.0.1   node1 node2

 重新修改配置:

spring:
  application:
    name: discovery
    version: 1.0.0
    env: test

server:
  port: ${PORT:8761}

eureka:
  environment: ${ENV:test}
  datacenter: ${DATACENTER:master}
  instance:
    hostname: node1
    leaseRenewalIntervalInSeconds: ${LEASE-TTL:30}
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://node2:8762/eureka/
  server:
    waitTimeInMsWhenSyncEmpty: 0
    enable-self-preservation: false # 关闭安全模式
    eviction-interval-timer-in-ms: 60000 # 清理间隔
    
---
spring:
  application:
    name: discovery
    version: 1.0.0
    env: test

server:
  port: ${PORT:8762}

eureka:
  environment: ${ENV:test}
  datacenter: ${DATACENTER:master}
  instance:
    hostname: node2
    leaseRenewalIntervalInSeconds: ${LEASE-TTL:30}
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://node1:8761/eureka/
  server:
    waitTimeInMsWhenSyncEmpty: 0
    enable-self-preservation: false # 关闭安全模式
    eviction-interval-timer-in-ms: 60000 # 清理间隔

重启之后,成功。


如果觉得还不错的话,关注、分享、在看, 原创不易,且看且珍惜~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【非典型Coder】

赏个鸡腿吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值