天天看点

springcloud 之 EurekaServer 服务注册集群

在之前一篇文章(https://blog.csdn.net/zwx19921215/article/details/79800409)中我们已经搭建了一个EurekaServer,

至于它的功能我已经不再赘述,但是很明显这是一个单点服务,而我们都知道,服务注册中心是整个分布式系统的核心,我们所有的微服务实例都注册在其中,一旦该服务注册中心宕机,则可能导致整个服务集群瘫痪,所以很明显在真实的生产环境中,我们必须将注册中心进行集群化部署(至少2个节点),那么接下来我们来搭建一个简单的2个节点的集群吧.

1.环境准备

我准备了2台机器,因为我打算在2台机器上部署2个实例;其实也可以一台机器上部署,但是我是为了更好的模拟真实环境

2.准备好工程,我沿用了之前的工程(discover-server)

3.配置更改

第一份配置如下:

#端口
server.port=8761
spring.application.name=x-discover-server
eureka.instance.hostname=10.0.2.23
#配置另一个服务注册中心实例的host和port
eureka.server.host=10.0.2.24
eureka.server.port=8762
#通过eureka.client.registerWithEureka:false和fetchRegistry:false来表明自己是一个eureka server.
#register-with-eureka:表示是否将自己注册到eureka server,因为要构建集群环境,需要将自己注册到集群中,所以应该开启。默认为true,可不显式设置。
eureka.client.register-with-eureka=true
#fetch-registry:表示是否从eureka server获取注册信息,如果是单一节点,不需要同步其他eureka server节点,则可以设置为false,但此处为集群,应该设置为true,默认为true,可不设置。
eureka.client.fetch-registry=true
eureka.client.serviceUrl.defaultZone=http://${eureka.server.host}:${eureka.server.port}/eureka/

#-----------------------------------关闭eureka自我保护---------------------------------------
#注意:更改Eureka更新频率将打破服务器的自我保护功能,生产环境下不建议自定义这些配置。
#Eureka Server端:配置关闭自我保护,并按需配置Eureka Server清理无效节点的时间间隔
#设为false,关闭自我保护
eureka.server.enable-self-preservation=false
#清理间隔(单位毫秒,默认是60*1000)
eureka.server.eviction-interval-timer-in-ms=4000
      

第二份配置如下:

#端口
server.port=8762
spring.application.name=x-discover-server
#eureka 实例名
eureka.instance.hostname=10.0.2.24
#配置另一个服务注册中心实例的host和port
eureka.server.host=10.0.2.23
eureka.server.port=8761
#通过eureka.client.registerWithEureka:false和fetchRegistry:false来表明自己是一个eureka server.
#register-with-eureka:表示是否将自己注册到eureka server,因为要构建集群环境,需要将自己注册到及群众,所以应该开启。默认为true,可不显式设置。
eureka.client.register-with-eureka=true
#fetch-registry:表示是否从eureka server获取注册信息,如果是单一节点,不需要同步其他eureka server节点,则可以设置为false,但此处为集群,应该设置为true,默认为true,可不设置。
eureka.client.fetch-registry=true
eureka.client.serviceUrl.defaultZone=http://${eureka.server.host}:${eureka.server.port}/eureka/

#-----------------------------------关闭eureka自我保护---------------------------------------
#注意:更改Eureka更新频率将打破服务器的自我保护功能,生产环境下不建议自定义这些配置。
#Eureka Server端:配置关闭自我保护,并按需配置Eureka Server清理无效节点的时间间隔
#设为false,关闭自我保护
eureka.server.enable-self-preservation=false
#清理间隔(单位毫秒,默认是60*1000)
eureka.server.eviction-interval-timer-in-ms=4000      

配置具体说明见内容

分别打包2份配置,并将2个jar部署到对应的机器,访问10.0.2.23:8761

springcloud 之 EurekaServer 服务注册集群

如图,x-discover-server已经启动了2个实例,10.0.23机器中的8761端口,10.0.2.24中的8762端口,

访问10.0.2.24:8762

springcloud 之 EurekaServer 服务注册集群

由上图可以看出2个实例都已经相互注册了,形成了一个2个服务的小集群。

4.接下来我们注册一个客户端服务到其中,沿用之前的项目demo-springboot

5.更改demo-springboot中的相应配置

#端口
server.port=8889

#实例名
spring.application.name=demo-springboot
#注册中心
eureka.server.host1=10.0.2.23
eureka.server.host2=10.0.2.24
eureka.server.port1=8761
eureka.server.port2=8762
eureka.client.service-url.defaultZone=http://${eureka.server.host1}:${eureka.server.port1}/eureka/,http://${eureka.server.host2}:${eureka.server.port2}/eureka/
#feign read timeout(10s)
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000
#feign read timout disable
#hystrix.command.default.execution.timeout.enabled=false
#开启eureka client健康检查
eureka.client.healthcheck=true
# 续约到期时间(默认90秒)
eureka.instance.lease-expiration-duration-in-seconds=30
# 续约更新时间间隔(默认30秒)
eureka.instance.lease-renewal-interval-in-seconds=10      

将demo-springboot向2个实例同时注册(只向其中一个实例注册也是可以的,会自动发现)

启动demo-springboot查看效果

springcloud 之 EurekaServer 服务注册集群
springcloud 之 EurekaServer 服务注册集群

ok,至此我们的服务注册与发现集群就已经搭建成功了!

继续阅读