Eureka的高可用

  我们之前搭建的是一个简单的注册中心,而且这个注册中心是一个单点的,那么我们的系统就会存在一个风险,

一旦我们这个注册中心故障了,则整个服务都不可用,那我们可以对注册中心进行集群部署,

这样我们不会担心因为某一台注册中心出现故障,而影响到整个服务.也就实现了注册中心的高可用。

分布式和集群这两个概念:

  • 分布式:一个业务分拆多个子业务,部署在不同的服务器上
  • 集群:同一个业务,分别部署在不同的服务器上

搭建的步骤 

由上面的思路,我们知道,端口为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/

 

posted @ 2020-07-10 20:32  64Byte  阅读(266)  评论(0编辑  收藏  举报