SpringCloud学习笔记(六)注册中心高可用——Eureka集群

专辑目录:SpringCloud学习日志

背景:

如果只有一台服务器作为注册中心,当唯一的注册中心宕机时会导致整个微服务瘫痪。

为了提高服务费的容灾能力,注册中心往往搭建集群。

原理:

你中有我,我中有你

如何搭建?

首先拷贝一份工程,修改其项目名。

我原本的注册中心的项目名是springcloud-eureka-server

现在复制一份成spring-eureka-server2

然后修改他们的配置文件application.yml

server:

server:
   ### 端口号
   port: 8100

spring:
   application:
      ### 注册中心的服务名,在服务中心集群时要保持一致
      name: app-eureka
### eureka 配置
eureka:
   client:
      ### 是否需要将自己注册给注册中心?   (因为自己是注册中心所以为false,集群的时候要true)
      register-with-eureka: true
      ### 是否需要检索服务中心(因为自己是注册中心,所以为false)
      fetch-registry: true
      service-url:
         ###注册中心的地址
         defaultZone: http://127.0.0.1:8101/eureka/

server2:

server:
   ### 端口号
   port: 8101

spring:
   application:
      ### 注册中心的服务名,在服务中心集群时要保持一致
      name: app-eureka
### eureka 配置
eureka:
   client:
      ### 是否需要将自己注册给注册中心?   (因为自己是注册中心所以为false,集群的时候要true)
      register-with-eureka: true
      ### 是否需要检索服务中心(因为自己是注册中心,所以为false)
      fetch-registry: true
      service-url:
         ###注册中心的地址
         defaultZone: http://127.0.0.1:8100/eureka/

server 和 server2 的配置文件差异主要在于defaultZone

因为我是在一台电脑上开发的,所以用了不同端口号,如果是多台服务器的话端口号可以重复,

原本注册中心是不需要服务名的,但是为了达到集群的效果,要像普通服务集群一样,用同一个服务名就可以。

然后切记 register-with-eureka 和 fetch-registry 要设置为 true ,因为需要将自己注册到其他注册中心

最重要的就是defaultZone了,设置的是其他注册中心的地址,如果有多个就以逗号隔开

然后启动项目,顺序不重要,先启动的会报错

 

com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect

这是因为其他的注册中心还没跑起来,在向其他注册中心注册自己的时候没有得到回应。

只要等全部注册中心都启动成功就没有问题了。

接下来我们访问一下两个注册中心

 

会发现两个注册中心都包含了自己和对方,这时候集群就搭建完成了。(如果注册中心没显示全那就稍等一会儿再刷新一下就行了)

 

至于服务端,我们只需要以逗号相连加在defaultZone就可以了

member的部分配置:

 

## eureka 配置
eureka:
  client:
    #### 注册中心的地址
    service-url:
      defaultZone: http://127.0.0.1:8100/eureka/,http://127.0.0.1:8101/eureka/
    ## 是否需要注册到eureka
    register-with-eureka: true
    fetch-registry: true

我也把order加上了server2的地址

然后启动member和order

当member和order启动完成后,我们可以在8100看到order和member已经注册

 

再看8101,

 

和视频中不一样,他的另一台注册中心是没有member和order的,然而我的都有。这不影响我们的使用。

接下来我们测试一下当8100宕机时的反应,因为8100放在前面,所以目前它是主注册中心。

我们先访问getMember,没有问题,然后关掉8100后再次访问。

会发现getMember任何可以访问,这就达成了我们最初的目的了。

视频中是要等30秒服务才能恢复,而我的马上就可以恢复访问了,

至于为什么会有差异,我想是因为由于依赖是交由Finchley.M7托管的,所以导致我和视频中的依赖版本不同,eureka可能升级了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值