实现一个高可用的注册中心
在微服务结构这样的分布式环境中,我们需要充分考虑发生故障的情况,所以在生产环境中必须为服务的各个组件进行高可用的部署。但是前面两节中,我们玩的都是单点的注册中心,这在生产环境下是不合适的,所以现在就需要搭建一个高可用的服务注册中心,以增加系统的可用性。
其实在Eureka Server的设计中就已经充分考虑了高可用的问题,在Eureka Server中,所有的节点即是服务的提供方也是服务的消费方。在前面的“《spring cloud微服务实战》读书笔记——Spring Cloud Eureka(一)搭建一个注册中心” 中的配置文件里我们设置了两个参数,就是让注册中心不要注册自己
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
Eureka Server的高可用实现的方式其实就是将自己作为实例注册到其他的注册中心中,形成两个你中有我,我中有你的,互相注册的服务注册中心。
1、改造之前的服务注册中心Eureka项目
- 创建两个配置文件application-peer1.properties和application-peer2.properties
application-peer1.properties
spring.application.name=eureka-server
server.port=1111
eureka.instance.hostname=peer1
eureka.client.serviceUrl.defaultZone=http://localhost:1112/eureka
application-peer2.properties
spring.application.name=eureka-server
server.port=1112
eureka.instance.hostname=peer2
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka
2.通过命令行的方式分别启动peer1和peer2
找到项目jar文件存放的地方,通过命令行+启动参数的方式分别启动两个项目
分别启动两个项目
3.分别访问peer1和peer2查看结果
发现各自的可用分片中已经有了对方,所以到此为止注册中心的集群就已经搭建完成了
4.修改服务的提供方的配置文件,使其可以注册到服务注册中心集群中
现在要做的就是改造我们前面写的eureka-service项目,使其能够成功的注册到注册中心集群中
spring.application.name=eureka-service
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka,http://localhost:1112/eureka
5.启动eureka-service项目,测试
启动好eureka-service项目后,我们刷新ocalhost:1111和localhost:1112页面,观察到两个页面中的application下都已经有了我们的eureka-service实例。这证明eureka-service已经成功的注册到注册中心集群中了。
访问localhost:8080/hello,成功返回。
下面再来测试一下高可用好不好用,现在我们停掉peer1,然后再访问localhost:8080/hello
停掉peer1,peer1注册中心无法访问
访问localhost:8080/hello
依旧返回成功。
本文介绍如何通过搭建EurekaServer集群实现高可用的服务注册中心。通过创建两个配置文件并启动两个服务实例,使它们相互注册,形成集群。改造服务提供方配置,确保其能注册到集群中。
662

被折叠的 条评论
为什么被折叠?



