在之前一篇文章(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
如图,x-discover-server已经启动了2个实例,10.0.23机器中的8761端口,10.0.2.24中的8762端口,
访问10.0.2.24:8762
由上图可以看出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查看效果
ok,至此我们的服务注册与发现集群就已经搭建成功了!