(此次创建的Demo小案例都是基于springBoot【2.0.0.M3】,springCloud【Finchley.M2】创建的,读者若是为了演示正常,请务必保持版本一致)
前两节我们讲解了Eureka服务端以及客户端如何搭建和使用,但是都是单个的,若是生成环境下注册中心这个节点挂掉的话,我们的整个服务都将无法使用,所以单节点是不可行的。下面我们来说一下多个节点如何保证服务的高可用。
下面我们以两个Eureka的服务端和一个客户端来进行讲解。
首先我们准备好我们的两个服务端和客户端项目(详细请看【SpringCloud 之 Eureka注册中心的创建】和【SpringCloud 之 Eureka Client 客户端的创建与使用】)
1.项目准备好我们就来修改配置,如何做到两个服务节点挂掉一个还可以保持继续使用呢?其实就是让两个服务端互相注册即可,下面我们看详细的配置
1.1)Eureka1的配置,我们向Eureka2进行注册
注意看配置,我们当前服务端口是8761,但是我们向8762端口进行注册
# 因为 我们这里的eureka 即是server又是client,所以为了我们启动不报错,需要指定client地址
eureka:
client:
service.url:
defaultZone: http://localhost:8762/eureka/
#是否将自己注册到注册中心上,true 是注册,false是不注册,代表自己只是一个服务
register-with-eureka: true
# 统计客户端上线率的保护机制,建议开发环境可以关闭,默认true,开启
server:
enable-self-preservation: false
#服务的名字
spring:
application:
name: eureka1
#指定服务端口
server:
port: 8761
1.2)Eureka2的配置,我们向Eureka1进行注册
注意看配置,我们当前服务端口是8762,但是我们向8761端口进行注册
# 因为 我们这里的eureka 即是server又是client,所以为了我们启动不报错,需要指定client地址
eureka:
client:
service.url:
defaultZone: http://localhost:8761/eureka/
#是否将自己注册到注册中心上,true 是注册,false是不注册,代表自己只是一个服务
register-with-eureka: true
# 统计客户端上线率的保护机制,建议开发环境可以关闭,默认true,开启
server:
enable-self-preservation: false
#服务的名字
spring:
application:
name: eureka2
#指定服务端口
server:
port: 8762
(注意:这里我们为了演示高可用,两个节点的相互注册,这里的【register-with-eureka: true】我们设置为true,本机false时没有成功)
2.客户端的修改,我们也只需要修改一下配置文件即可
注意我们将需要注册的两个客户端地址都配置上即可,中间逗号隔开
eureka:
client:
service.url:
defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
#服务的名字
spring:
application:
name: client
3.然后分别启动我们的两个服务端和一个客户端,并进行http://localhost:8761/ 和 http://localhost:8762/ 的访问,可以看到客户端已经都注册成功
这样其中任何一个服务端的节点挂掉也能保证我们的注册中心的可用性