SpringCloud系列之Eureka集群

作者 胡萝虎 日期 2018-04-19
SpringCloud系列之Eureka集群

SpringCloud系列之Eureka中介绍了如何搭建起Eureka Server以及创建Eureka Client(服务提供者)。在微服务架构中,Eureka Server作为服务注册与发现的核心组件,单机无法保证服务的高可用。因而在实际生产环境中通过实现Eureka Server集群部署来实现高可用性。

准备

开始之前,需要先创建Eureka Server和Eureka Client应用,具体方法详见:**SpringCloud系列之Eureka**。

配置Eureka Server

在项目的src/main/resource目录下创建application-cluster1.yml和application-cluster2.yml,两个文件的配置分别如下:

image-20180419193734139

application-cluster1.yml

spring:
profiles: cluster2
server:
port: 8761
eureka:
instance:
prefer-ip-address: true
server:
enable-self-preservation: true
eviction-interval-timer-in-ms: 60000
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8762/eureka/ #配置的是cluster2的地址
datacenter: 机房1

application-cluster2.yml

spring:
profiles: cluster2
server:
port: 8762
eureka:
instance:
prefer-ip-address: true
server:
enable-self-preservation: true
eviction-interval-timer-in-ms: 60000
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8761/eureka/ #配置的是cluster1的地址
datacenter: 机房2

两个配置文件的主要差异就是,application-cluster1.yml中eureka.client.service-url.defaultZone配置的是cluster2的地址,而application-cluster2.yml中eureka.client.service-url.defaultZone配置的是cluster1的地址,另外就是启动的端口不同。

配置Eureka Client

在项目的src/main/resources目录下创建application-cluster.yml

image-20180419194703780

application-cluster.yml

spring:
profiles: cluster
server:
port: 8080
eureka:
instance:
prefer-ip-address: true
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8762/eureka/,http://localhost:8761/eureka/

将eureka.client.service-url.defaultZone设置为Eureka Server的cluster1和cluster2的地址,用逗号分隔。

验证集群

  • 将Eureka Server应用的active profiles分别设置为cluster1和cluster2并启动:

cluster1

image-20180419195104027

cluster2

image-20180419195229224

⚠️注意:在非IDE中可以通过java启动参数修改active profiles: -Dspring.profiles.active=xxx

  • 将Eureka Client应用的active profiles设置为cluster并启动:

image-20180419195742618

  • 最后,分别在浏览器中打开localhost:8761和localhost:8762:

localhost:8761

image-20180419201915581

localhost:8762

image-20180419201935911

可以看到Eureka Client(PROVIDER-APPLICATION)应用已经分别注册到两台Eureka Server上了。

当然,在实际生产环境中,建议部署3个或以上的Eureka Server节点,这时候Eureka Client最好配置2个或以上的Eureka Server节点作为defaultZone,以增加可靠性和稳定性。

你可能会喜欢

“扫一扫接着看”