搭建Eureka的高可用集群


接上回 https://blog.csdn.net/weixin_43119903/article/details/104802546

为什么要搭建集群

我们先来看看在单注册中心中的服务架构
在这里插入图片描述
这里我们可以看出来,这里面,注册中心起到了一个不可或缺的作用,假如,注册中心挂掉了,整个系统将会瘫痪,这违背了CAP原则中的A。因此,需要对注册中心做一个集群,当这个注册中心挂掉,还有另一个注册中心可以顶上。

怎么搭建

我这里只搭建两台Eureka展示就可以了
其实搭建起来很简单,我们只需要将其相互注册就好了,这样,Eureka就会自动帮你将数据同步,以及在一台机器出现问题的时候,另一台可以顶上。

准备两个Eureka注册中心

  • 我这里准备了一个是8999端口的,另一个是9000端口的
  • 配置文件
    9000端口的yml
server:
  port: 9000 #端口
#配置eureka server
eureka:
  instance:
    hostname: localhost #主机名称
  client:
    #register-with-eureka: false #是否将自己注册到注册中心
    fetch-register: false #是否从eureka中获取注册信息
    service-url: #配置暴露给Eureka Client的请求地址
      defaultZone: http://127.0.0.1:8999/eureka/

8999端口的yml

server:
  port: 8999 #端口
#配置eureka server
eureka:
  instance:
    hostname: localhost #主机名称
  client:
    #register-with-eureka: false #是否将自己注册到注册中心
    fetch-register: false #是否从eureka中获取注册信息
    service-url: #配置暴露给Eureka Client的请求地址
      defaultZone: http://127.0.0.1:9000/eureka/

我们需要注意两个地方
1.在defaultZone的参数中,我们写的是其他Eureka的ip以及端口
2.register-with-eureka参数我们需要将它改成true或者直接默认值

Eureka注册中心配置完成

然后我们来到Eureka的管理后台查看一下
在这里插入图片描述
我们可以看到,在服务列表中有一个UNKNOWN服务(其实没有配置spring.application.name),这里服务中,Status中,我们可以看到,有两个端口,这就代表我们成功了,我们可以尝试一下关掉其中一个Eureka,看看生产者和消费者之间会不会出现问题。(这里我就不做展示了)

那么在生产者和消费者间又要怎么处理?

  • 首先我们看看不处理,直接启动的情况下,会是什么情况
    启动生产者,我们来看看9000端口的注册中心:
    在这里插入图片描述
    我们再来看看8999端口的注册中心:
    在这里插入图片描述
    我们发现,就算我们不去改动,两个注册中心也会进行数据同步,那是不是代表着我们不用修改了呢?
    当然不是,我们要考虑到一种情况,我们现在的生产者只在9000端口的机器上注册了,假如9000机器挂了,这个注册就失败了,8999端口的机器就算活着,也不会有生产者的信息,所以我们需要对yml文件中的defaultZone参数进行修改:
eureka:
  client:
    service-url:
      defaultZone: http://localhost:9000/eureka/,http://localhost:8999/eureka/

当然,消费者那边处理的方式也是一样的

发布了22 篇原创文章 · 获赞 0 · 访问量 1002

猜你喜欢

转载自blog.csdn.net/weixin_43119903/article/details/104814549