二、Eureka集群高可用配置

上一章:一、搭建Spring Cloud项目
在eureak服务加入两个配置文件,例如application-peer1.yml、application-peer2.yml
application.yml的内容:

spring:
  profiles:
    active: peer1
  application:
    name: server-eureka

application-peer1.yml的内容:

#配置端口
server:
  port: 8081

eureka:
  client:
    #是否从Eureka Server获取信息
    fetch-registry: true
    #是否注册到注册中心,默认为true
    register-with-eureka: true
    service-url:
      #设置注册中心地址,注册到peer2
      defaultZone: http://peer2:8089/eureka
  instance:
    hostname: peer1

application-peer2.yml的内容:

#配置端口
server:
  port: 8089

eureka:
  client:
    #是否从Eureka Server获取信息
    fetch-registry: true
    #是否注册到注册中心,默认为true
    register-with-eureka: true
    service-url:
      #设置注册中心地址,注册到peer1
      defaultZone: http://peer1:8081/eureka
  instance:
    hostname: peer2

可以看到这里是将fetch-registry和register-with-eureka都设置为ture了,因为集群说白了就是多个实例相互注册,然后成为一个集群,实现高可用。即使2个注册中心其中一个挂了,也不会影响到另外一个,所以client服务在配置注册中心的时候尽量配上所有的注册中心地址,那问题来了,为什么要互相注册呢?有啥用呀,其实呢假如呢,你只配置了一个注册中心的地址,那你这个注册中心挂了,但是它的注册信息还是存在的,因为eureka的注册信息会复制到另外一个注册中心中。

user服务的application.yml配置

eureka:
  client:
    service-url:
      #设置注册中心地址,以逗号分隔可配置多个地址
      defaultZone: http://peer1:8081/eureka,http://peer2:8089/eureka

在启动之前需要先修改一下hosts文件,mac的文件地址为/private/etc/hosts,windows的地址为:/etc/host
在文件末尾加入以下2行配置

127.0.0.1       peer1
127.0.0.1       peer2

然后开始启动项目,idea中是可以直接启动多个实例的
在这里插入图片描述
在这里插入图片描述

然后我们直接启动项目就好了,不出意外控制台会打印很多错误,这是因为找不到自己要注册的注册执行,启动完成之后,将application.yml中的配置指向peer2,然后再次启动

#配置环境
spring:
  profiles:
    active: peer2
  application:
    name: server-eureka

2次启动都成功之后应该是这样的,这样2个实例就启动成功了
在这里插入图片描述
然后我们随便进入到其中一个eureka的主页,可以看到,注册中心的服务有两个,只是port和hostname不一样,这两个必须唯一。
在这里插入图片描述
上面配的注册中心。我们也可以以相同的方式实现user服务的集群。
下一章:三、负载均衡-Ribbon


版权声明:本文为qq_40688739原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。