我们之前搭建的是一个简单的注册中心,而且这个注册中心是一个单点的,那么我们的系统就会存在一个风险,
一旦我们这个注册中心故障了,则整个服务都不可用,那我们可以对注册中心进行集群部署,
这样我们不会担心因为某一台注册中心出现故障,而影响到整个服务.也就实现了注册中心的高可用。
分布式和集群这两个概念:
- 分布式:一个业务分拆多个子业务,部署在不同的服务器上
- 集群:同一个业务,分别部署在不同的服务器上
搭建的步骤
由上面的思路,我们知道,端口为8001需要挂上端口为8002和端口为8003,所以在端口为8001的配置文件中需要重新配置一下defaultZone,如下:
OK,defaultZone 配置好了端口为8002和 端口为8003。
spring.application.name=spring-cloud-eureka-server server.port =8001 eureka.instance.hostname =eurekaServer8001 #设置是否将自己作为客户端注册到注册中心(缺省true) #这里为不需要,查看@EnableEurekaServer注解的源码,会发现它间接用到了@EnableDiscoveryClient eureka.client.register-with-eureka=false #设置是否从注册中心获取注册信息,默认值为true #因为这是一个单点的EurakaServer,不需要同步其他EurekaServer节点的数据,故设置为false eureka.client.fetch-registry=false # 实际测试:若修改尾部的eureka为其它的,比如/myeureka,注册中心启动没问题,但服务端在注册时会失败 # 报告异常:com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server eureka.client.serviceUrl.defaultZone =http://eurekaServer8002:8002/eureka/,http://eurekaServer8003:8003/eureka/
安装上面方法,依次搭建端口为8002和端口为8003
端口为8002的配置文件:
spring.application.name=spring-cloud-eureka-server server.port =8002 eureka.instance.hostname =eurekaServer8002 #设置是否将自己作为客户端注册到注册中心(缺省true) #这里为不需要,查看@EnableEurekaServer注解的源码,会发现它间接用到了@EnableDiscoveryClient eureka.client.register-with-eureka=false #设置是否从注册中心获取注册信息,默认值为true #因为这是一个单点的EurakaServer,不需要同步其他EurekaServer节点的数据,故设置为false eureka.client.fetch-registry=false # 实际测试:若修改尾部的eureka为其它的,比如/myeureka,注册中心启动没问题,但服务端在注册时会失败 # 报告异常:com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server eureka.client.serviceUrl.defaultZone =http://eurekaServer8001:8001/eureka/,http://eurekaServer8003:8003/eureka/
端口为8003的配置文件:
spring.application.name=spring-cloud-eureka-server server.port =8003 eureka.instance.hostname =eurekaServer8003 #设置是否将自己作为客户端注册到注册中心(缺省true) #这里为不需要,查看@EnableEurekaServer注解的源码,会发现它间接用到了@EnableDiscoveryClient eureka.client.register-with-eureka=false #设置是否从注册中心获取注册信息,默认值为true #因为这是一个单点的EurakaServer,不需要同步其他EurekaServer节点的数据,故设置为false eureka.client.fetch-registry=false # 实际测试:若修改尾部的eureka为其它的,比如/myeureka,注册中心启动没问题,但服务端在注册时会失败 # 报告异常:com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server eureka.client.serviceUrl.defaultZone =http://eurekaServer8001:8001/eureka/,http://eurekaServer8002:8002/eureka/
修改服务的提供者HelloService项目的配置文件:
# 指定服务注册中心的地址 eureka.client.serviceUrl.defaultZone=http://eurekaServer8001:8001/eureka/,
http://eurekaServer8002:8002/eureka/,http://eurekaServer8003:8003/eureka/
测试
然后浏览器地址栏输入:http://eurekaServer8001:8001/