从零开始学习Spring-Cloud之Eureka集群搭建

上一篇文章中我已经讲述了如何搭建一个简单的eureka注册中心和eureka客户端,但是在生产环境中我们如果只搭建一个eureka注册中心的话,那一但注册中心挂了的话(服务器故障,网络故障,访问量过大都会引起)那么我们的系统不就直接瘫痪了,毕竟都没法注册了,因此我们一般都会搭建Eureka集群,以保证高可用。

eureka集群原理

服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取,完成一次调用。

eureka集群配置

刚刚我们了解到 Eureka Server会将注册信息向其他Eureka Server进行同步 那么我们得声明有哪些server呢?
这里 假设我们有3个Eureka Server 如图:
在这里插入图片描述
他们之间的关系就是两两注册,简单来说就是自己向其他2个Eureka注册中心注册,如下图:
在这里插入图片描述
这里 方便理解集群 我做了一个域名的映射(条件不是特别支持我使用三台笔记本来测试。。。) 至于域名怎么映射的话 这里简单提一下吧 修改你的hosts文件(win10的目录在C:\Windows\System32\drivers\etc 其他系统的话自行百度一下把)附上我的hosts文件:
127.0.0.1 eureka3000.com
127.0.0.1 eureka3001.com
127.0.0.1 eureka3002.com

接下按照搭建单个Eureka注册中心的步骤在搭建Eureka3001,Eureka3002两个模块,pom文件都是一样的,我这里就省略了。。。

重点是配置,我这里直接贴出3个Eureka注册中心的配置文件:

Eureka3000:

server:
  port: 3000
eureka:
  server:
    enable-self-preservation: false  #关闭自我保护机制
    eviction-interval-timer-in-ms: 4000 #设置清理间隔(单位:毫秒 默认是60*1000)
  instance:
    hostname: eureka3000.com
  client:
    serviceUrl:
        defaultZone: http://eureka3001.com:3001/eureka,http://eureka3002.com:3002/eureka   #将自己当成服务注册到其他注册中心
spring:
  application:
    name: eureka-server-cluster  #设置服务名

Eureka3001:

server:
  port: 3001
eureka:
  server:
    enable-self-preservation: false  #关闭自我保护机制
    eviction-interval-timer-in-ms: 4000 #设置清理间隔(单位:毫秒 默认是60*1000)
  instance:
    hostname: eureka3001.com
  client:
    serviceUrl:
        defaultZone: http://eureka3000.com:3000/eureka,http://eureka3002.com:3002/eureka   #将自己当成服务注册到其他注册中心
spring:
  application:
    name: eureka-server-cluster  #设置服务名

Eureka3002:

server:
  port: 3002
eureka:
  server:
    enable-self-preservation: false  #关闭自我保护机制
    eviction-interval-timer-in-ms: 4000 #设置清理间隔(单位:毫秒 默认是60*1000)
  instance:
    hostname: eureka3002.com
  client:
    serviceUrl:
        defaultZone: http://eureka3001.com:3001/eureka,http://eureka3000.com:3000/eureka   #将自己当成服务注册到其他注册中心
spring:
  application:
    name: eureka-server-cluster  #设置服务名

根据上面的配置,原来我们搭建单机版的只是将自己作为一个服务注册中心供其他服务来注册,而集群版则是每注册中心将自己当成一个服务注册到其他2个注册中心。
我们可以依次启动3个注册中心,我选取其中一个:eureka3000.com:3000,
在这里插入图片描述
可以看到其他2个节点都已注册上来,并且也显示了当前有3个实例注册在Eureka上。你查看另外2个地址也能看到类似的界面。

当然,上面我们只是搭建了一个Eureka集群,我们接下来还需使用一个客户端去向集群注册。

这里我就不再搭建了,直接使用上一篇文章搭建的User客户端。
其实注册并没有什么区别,唯一需要修改的地方就是配置文件,如下:

server:
  port: 5000
eureka:
  client:
    serviceUrl:
        defaultZone: http://eureka3000.com:3000/eureka,http://eureka3001.com:3001/eureka,http://eureka3002.com:3002/eureka
  instance:
    instance-id: user-1 #此实例注册到eureka服务端的唯一的实例ID
    prefer-ip-address: true #是否显示IP地址
    leaseRenewalIntervalInSeconds: 10 #eureka客户需要多长时间发送心跳给eureka服务器,表明它仍然活着,默认为30 秒 (与下面配置的单位都是秒)
    leaseExpirationDurationInSeconds: 30 #Eureka服务器在接收到实例的最后一次发出的心跳后,需要等待多久才可以将此实例删除,默认为90秒
spring:
  application:
    name: server-user #此实例注册到eureka服务端的name

可以看到我只是修改了注册地址,原来只写了一个地址,这次把集群的3个地址都写了上去,但是不是代表他会注册三次,因为我们eureka server的注册信息是同步的,这里只需要注册一次就可以了,但是为什么要写三个地址呢。因为这样就可以做到高可用的配置:打个比方有3台服务器。但是突然宕机了一台, 但是其他2台还健在,依然可以注册我们的服务,换句话来讲, 只要有一台服务还建在,那么就可以注册服务。
我们启动user客户端,看效果如下:

在这里插入图片描述
我们可以看到user服务也已经注册上来了,大家自行搭建的时候可以看看其他2个节点,这里我就不演示了,只要正确的话,任何一个节点上都会有该客户端的信息。

至此,我们的Eureka集群搭建已经完毕了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值