为什么要配置高可用的多注册中心?
答:在于我们平时的生产环境中,很难保证单节点的eureka服务能提供百分百不间断的服务,如果eureka无响应了,
整个项目应用都会出现问题,因此要保证eureka随时都能提供服务的情况下,最好的方式就是采用eureka的集群模式,
也就是搭建eureka的高可用,在eureka的集群模式下,多个eureka server之间可以同步注册服务,因此,在一个eureka宕掉的情况,仍然可以提供服务注册和服务发现的能力,从而达到注册中心的高可用。
Eureka实现高可用多注册中心的思路
所有的节点既是服务提供方也是服务消费方,服务的注册中心也是如此
单机的Eureka注册中心向其他的注册中心注册自己,这样就可以形成互相注册的注册中心
步骤
首先前提是将springcloud项目搭建好
第一步:需要把注册中心分为多个,我这里分了三个。因为多个注册中心的代码是一样的,只有pom.xml中配置不一样,所以要将pom.xml分为多个,在yml文件中,通过3个减号“---”来区分多个文件,减少配置文件个数。
第二步:高可用配置中的节点,每个节点的端口号不同 7101/7102/7103 ,分别对应三个配置文件(其实只有一个配置文件,它通过“---”分成了3个)
第三步:# 集群配置新增属性
spring.profiles=peer1
spring.application.name=eureka-cluster
---
# 高可用节点1的配置
server:
# 端口号
port: 7101
spring:
# 节点1的标签
profiles: peer1
application:
# 服务名称,注意:所有节点的服务名称要保持一致
name: eureka-server
eureka:
instance:
# 服务实例主机名
hostname: peer1
# 服务提供者配置
client:
# 进行注册(高可用配置、默认配置)
# registerWithEureka: true
# 获取注册信息(高可用配置、默认配置)
# fetchRegistry: true
serviceUrl:
# 节点1向节点2/3进行服务注册
defaultZone: http://peer2:7102/eureka/,http://peer3:7103/eureka/
---
# 高可用节点2的配置
server:
# 端口号
port: 7102
spring:
# 节点1的标签
profiles: peer2
application:
# 服务名称,注意:所有节点的服务名称要保持一致
name: eureka-server
eureka:
instance:
# 服务实例主机名
hostname: peer2
# 服务提供者配置
client:
# 进行注册(高可用配置、默认配置)
# registerWithEureka: true
# 获取注册信息(高可用配置、默认配置)
# fetchRegistry: true
serviceUrl:
# 节点2向节点1/3进行服务注册
defaultZone: http://peer1:7101/eureka/,http://peer3:7103/eureka/
---
# 高可用节点3的配置
server:
# 端口号
port: 7103
spring:
# 节点1的标签
profiles: peer3
application:
# 服务名称,注意:所有节点的服务名称要保持一致
name: eureka-server
eureka:
instance:
# 服务实例主机名
hostname: peer3
# 服务提供者配置
client:
# 进行注册(高可用配置、默认配置)
# registerWithEureka: true
# 获取注册信息(高可用配置、默认配置)
# fetchRegistry: true
serviceUrl:
# 节点3向节点1/2进行服务注册
defaultZone: http://peer1:7101/eureka/,http://peer2:7102/eureka/
到现在,其实还是只有一个注册中心,只是分了三个pom.xml,现在就要有三个注册中心,下面图片是步骤
注:因为我们主机名写的是peer1,peer2.....,而不是localhost,peer1/peer2/peer3这3个域名是没注册的,假的,怎么办?
到电脑中这个路径中C:\Windows\System32\drivers\etc\hosts 末尾添加3行
127.0.0.1 peer1
127.0.0.1 peer2
127.0.0.1 peer3
测试:重新启动3个注册中心,并打开浏览输入以下地址
http://peer1:7101/
http://peer2:7102/
http://peer3:7103/
高可用服务:就是在消费者和生产者中注册多个注册中心
只需要更改消费者和生产者中pom.yml的 defaultZone: http://peer1:7101/eureka/,http://peer2:7102/eureka/,http://peer3:7103/eureka/
即使是其中一个注册中心挂机了,另外两个也可以使用。