超详细-从0搭建 Spring Cloud 环境 (二) eureka 集群环境搭建

源码见文章底部

1、修改 host 文件,后边配置会用到,要保持名称一致。

host位置:(C:\Windows\System32\drivers\etc\hosts) Linux(/etc/hosts)

127.0.0.1 f-eureka1
127.0.0.1 f-eureka2
127.0.0.1 f-eureka3

2、选择单文件配置还是多文件配置:

    根据 Eureka 配置的复杂程度,简单的话就选择单文件配置,多的话选择多文件配置。

3、单文件配置 application.yml

spring:
  application:
    name: f-eureka
server1:
  server: f-eureka1
  port: 8711
server2:
  server: f-eureka2
  port: 8712
server3:
  server: f-eureka3
  port: 8713
# 单文件配置
---
spring:
  profiles: f-eureka1
eureka:
  instance:
    hostname: f-eureka1
  client:
    # 自己就是注册中心,不用注册自己
    registerWithEureka: true
    # 要不要去注册中心获取其他服务的地址
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://${server2.server}:${server2.port}/eureka/,http://${server3.server}:${server3.port}/eureka/
---
eureka:
  instance:
    hostname: f-eureka2
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://${server1.server}:${server1.port}/eureka/,http://${server3.server}:${server3.port}/eureka/
---
eureka:
  instance:
    hostname: f-eureka3
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://${server1.server}:${server1.port}/eureka/,http://${server2.server}:${server2.port}/eureka/

4、多文件配置 application-f1.yml、application-f2.yml、application-f3.yml

application-f1.yml

server:
  port: 8711

server2:
  server: f-eureka2
  port: 8712
server3:
  server: f-eureka3
  port: 8713
# 多文件配置
eureka:
  instance:
    hostname: f-eureka1
  client:
    # 自己就是注册中心,不用注册自己
    registerWithEureka: true
    # 要不要去注册中心获取其他服务的地址
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://${server2.server}:${server2.port}/eureka/,http://${server3.server}:${server3.port}/eureka/

spring:
  # 集群环境下请保证一致
  application:
    name: f-eureka

application-f2.yml

server:
  port: 8712

server1:
  server: f-eureka1
  port: 8711
server3:
  server: f-eureka3
  port: 8713

eureka:
  instance:
    hostname: f-eureka2
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://${server1.server}:${server1.port}/eureka/,http://${server3.server}:${server3.port}/eureka/

spring:
  application:
    name: f-eureka

application-f3.yml

server:
  port: 8713

server1:
  server: f-eureka1
  port: 8711
server2:
  server: f-eureka2
  port: 8712

eureka:
  instance:
    hostname: f-eureka3
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://${server1.server}:${server1.port}/eureka/,http://${server2.server}:${server2.port}/eureka/

spring:
  application:
    name: f-eureka

5、启动项目

6、检查

在启动第一个和第二个后控制台会存在报错,是正常现象,等待全部启动完毕就可以了。

启动第一个后访问地址:http://localhost:8711/

三个全部启动成功,访问地址:http://localhost:8711/

集群搭建完成。

如果要打 jar 包:

java -jar demo.jar --spring.profiles.active=application-f1.yml

 

源码地址:https://gitee.com/biyanfa/f-cloud/tree/eureka-cluster/

 

自我保护机制:

解决方式有三种:

  • 关闭自我保护模式(eureka.server.enable-self-preservation设为false),不推荐
  • 降低renewalPercentThreshold的比例(eureka.server.renewal-percent-threshold设置为0.5以下,比如0.49),不推荐
  • 部署多个 Eureka Server 并开启其客户端行为(eureka.client.register-with-eureka不要设为false,默认为true),推荐

Eureka 的自我保护模式是有意义的,该模式被激活后,它不会从注册列表中剔除因长时间没收到心跳导致租期过期的服务,而是等待修复,直到心跳恢复正常之后,它自动退出自我保护模式。这种模式旨在避免因网络分区故障导致服务不可用的问题。例如,两个客户端实例 C1 和 C2 的连通性是良好的,但是由于网络故障,C2 未能及时向 Eureka 发送心跳续约,这时候 Eureka 不能简单的将 C2 从注册表中剔除。因为如果剔除了,C1 就无法从 Eureka 服务器中获取 C2 注册的服务,但是这时候 C2 服务是可用的。

所以,Eureka 的自我保护模式最好还是开启它。

推荐 Eureka 的自我保护机制

https://www.cnblogs.com/xishuai/p/spring-cloud-eureka-safe.html

 

参考地址:

https://www.cnblogs.com/xmf3628/p/11999956.html

https://blog.csdn.net/qq_35976271/article/details/101693174

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值