笔记:Spring Cloud Eureka 高可用注册中心
在微服务架构这样的分布式环境中,我们需要充分考虑发生故障的情况,所以在生产环境中必须对各个组件进行高可用部署,对与微服务和服务注册中心都需要高可用部署,Eureka 高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组互相注册的服务注册中心,已实现服务清单的互相同步,达到高可用效果,下面的示例构建一个服务注册中心集群,在配置单个服务注册中心的基础上进行扩展,示例代码如下:
- 创建 application-server1.properties 作为服务注册中心集合的 server1 注册中心,并将 serviceUrl 指向 server2 注册中心,配置如下:
server.port=1111
spring.application.name=eureka-server
eureka.instance.hostname=eurekaserver1
eureka.client.service-url.defaultZone=http://eurekaserver2:1112/eureka
- 创建 application-server2.properties 作为服务注册中心集合的server2 注册中心,并将serviceUrl指向server1 注册中心,配置如下:
server.port=1112
spring.application.name=eureka-server
eureka.instance.hostname=eurekaserver2
eureka.client.service-url.defaultZone=http://eurekaserver1:1111/eureka
- 在 /etc/hosts 文件中添加对 eurekaserver1 和 eurekaserver2 的域名解析,代码如下:
127.0.0.1 eurekaserver1
127.0.0.1 eurekaserver2
- 通过 spring.profiles.active 属性来分别启动 eurekaserver1 和 eurekaserver2:
java -jar eureka-server-1.0.0.jar --spring.profiles.active=server1
java -jar eureka-server-1.0.0.jar --spring.profiles.active=server2
启动之后访问 http://localhost:1111 ,可以看到 registered-replicas 中已经有 eurekaserver2 的注册中心,如下图所示:
- 在设置了多节点的服务注册中心之后,服务提供方还需要做一些简单的配置才能将服务注册到 Eureka Server 集群中,在前面的 hello-service 为例,修改 application.properties 配置文件,如下所示:
spring.application.name=hello-service
eureka.client.service-url.defaultZone=http://eurekaserver1:1111/eureka/,http://eurekaserver2:1112/eureka
上面的配置主要对 eureka.client.service-url.defaultZone 属性进行了修改,将注册中心指向了之前我们搭建的服务注册中心集群,启动服务后,可以看到在 eurekaserver1 和 eurekaserver2 都进行了注册。