SpringCloud微服务系列(3): 为已有的Eureka Server增加高可用HA
作者:家辉,日期:2017-08-01 CSDN博客: http://blog.csdn.net/gobitan
摘要: 在本系列的前两篇先后创建了一个Eureka微服务注册中心和一个hello服务,该服务注册到了Eureka Server。但一个注册中心会存在单点故障,如果服务注册中心挂了,系统就找不到服务。本文为注册中心增加高可用功能。
第一步:准备两台Eureka高可用测试机
先准备两台主机,可用Ubuntu或者CentOS,将它们配置在一个网段(可用虚拟机),这里用CentOS7.3。假设它们的IP地址分别为10.191.30.24和10.191.30.25.
将/etc/hostname分别改为eureka1和eureka2,改完需要重启操作系统。
在/etc/hosts中加入如下配置:
10.191.30.24 eureka1 10.191.30.25 eureka2
第二步:配置高可用Eureka Server
在原有Eureka Server基础上增加两个application.properties配置文件,分别如下:
[1] application-eureka1.properties
spring.application=eureka-server server.port=1111 eureka.instance.hostname=eureka1 eureka.client.serviceUrl.defaultZone=http://eureka2:1112/eureka
[2] application-eureka2.properties
spring.application=eureka-server server.port=1112 eureka.instance.hostname=eureka2 eureka.client.serviceUrl.defaultZone=http://eureka1:1111/eureka
说明:
(1) eureka server1的监听端口为1111,eureka server2的监听端口为1112;
(2) 它们各自的serviceUrl指向对方;
第三步:启动eureka1和eureka2
[1] 在主机eureka1启动
java -jar eurekaserver-0.0.1-SNAPSHOT.jar --spring.profiles.active=eureka1
[2] 在主机eureka2启动
java -jar eurekaserver-0.0.1-SNAPSHOT.jar --spring.profiles.active=eureka2
启动之后,登录http://10.191.30.24:1111/和http://10.191.30.25:1112/可以分别在DS Replicas看到注册的eureka2和eureka1.
第四步:修改之前建立好的RESTFul服务
修改springboot hello service的application.properties配置文件
spring.application.name=hello-service eureka.client.serviceUrl.defaultZone=http://eureka1:1111/eureka,http://eureka2:1112/eureka
如果配置用IP地址,需要添加参数eureka.instance.prefer-ip-address=true。
第五步:启动hello-service的RESTFul服务
注意:下面的这台主机的/etc/hosts中需要加入如下部分,否则会不认识上面application.properties中配置的主机名。
10.191.30.24 eureka1 10.191.30.25 eureka2
在另外一台主机(如:10.191.30.23)执行如下命令启动服务:
java -jar springboot-0.0.1-SNAPSHOT.jar
查看注册情况,可看到两台eureka server都注册了hello-servcie,如下所示:
一个服务(如hello-service)同时在两个注册中心注册成功,这样确保注册中心的高可用。另外,经过测试,注册中心重启后,服务也会自动重新注册进来。
参考资料:
[1] http://start.spring.io/
[2] http://projects.spring.io/spring-cloud/