构建spring cloud高可用服务中心

springCloud workingTime 103℃ 0评论

准备知识

在微服务架构这样的分布式环境中,我们需要充分考虑发生故障的情况,所以在生产环境中必须对各个主件进行高可用部署,对于微服务如此,对于微服务注册中心亦是如此。

Enreka Server的设计一开始就考虑了高可用问题,在Enreka的服务治理设计中,所有节点既是服务提供方,也是服务消费方,服务注册中心也不例外。之前单节点服务,不向服务中心注册自己,代码如下:


是否注册自己
eureka.client.register-with-eureka=false
## 是否检索服务
eureka.client.fetch-registry=false

而构建高可用的服务中心,Enreka Server不仅仅是将自己作为注册中心,而且需要向其他Enreka Server服务注册自己。这样就可以形成一组相互注册的服务中心,以实现服务清单的互相同步,达到高可用的效果。

构建高可用服务中心

在上节课的cloud-eureka-center项目中创建application-peer1.properties配置文件,作为注册中心一的配置,并将serviceUrl指向注册中心二


server.port=1111
spring.application.name=eureka-server
# peer1是注册中心1的名称
eureka.instance.hostname=peer1
# 地址指向peer2
eureka.client.service-url.defaultZone=http://peer2:2222/eureka/

创建application-peer2.properties配置文件,作为注册中心二的配置,并将serviceUrl指向注册中心一


server.port=2222
spring.application.name=eureka-server
# peer2是注册中心2的名称
eureka.instance.hostname=peer2
# 地址指向peer1
eureka.client.service-url.defaultZone=http://peer1:1111/eureka/

配置hosts文件,添加对peer1和peer2的转换,让上面配置的host形式的serverUrl能在本地访问到。


127.0.0.1 peer1
127.0.0.1 peer2

注意:这时候application.properties的配置保持不变。

项目启动

我这里使用maven打包项目,执行命令:


mvn clean install

进入项目目录的target目录下,执行命令:


java -jar cloud-eureka-server-1.0-SNAPSHOT.jar --spring.profiles.active=peer1

java -jar cloud-eureka-server-1.0-SNAPSHOT.jar --spring.profiles.active=peer2

这个启动两个jar包,分别传入两个参数,启动服务中心一和服务中心二。

此时访问:http://peer1:1111/http://peer2:2222/ ,可以看到互相互相注册了服务,如下图:

将项目注册到高可用服务中

现在我们需要改造一下spring-boot-server项目,才能将服务注册到Eureka Server集群中。

修改application.properties配置文件


#生产环境配置
server.port=8080
# 服务的注册名称。就像淘宝店铺名
spring.application.name=hello-server
# 注册中心地址
eureka.client.service-url.defaultZone=http://peer1:1111/eureka/,http://peer2:2222/eureka/

注册成功后如下图:


转载请注明:R&M » 构建spring cloud高可用服务中心

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

联系我:rm@rmworking.com