本篇是关于spring cloud中Eureka Server的番外篇,主要介绍下Eureka Server的集群搭建,以及springcloud 客户端如何连接到Eureka Server集群。
为了简便起见,我就不搞3台虚拟机了,直接修改下本机hosts文件来模拟3台机器即可。
本机hosts文件
#springcloud eureka 服务集群
127.0.0.1 eureka1.tingcream.com
127.0.0.1 eureka2.tingcream.com
127.0.0.1 eureka3.tingcream.com
Eureka Server 集群application.yml 和单机环境下的application.yml配置不同。
集群环境中:
spring.application.name设置为相同值,eureka.client.register-with-eureka 需设置为默认的true,eureka.client.retch-registry需设置为默认的true,eureka.client.service-url.defaultZone 设置为所有其他的eureka server的地址。
sim-eureka-8001 中application.yml
server:
port: 8001
spring:
application:
name: sim-eureka
eureka:
instance:
# 单机 hostname: localhost #eureka注册中心实例名称
hostname: eureka1.tingcream.com # 集群
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://eureka2.tingcream.com:8002/eureka/,http://eureka3.tingcream.com:8003/eureka/
sim-eureka-8002 中application.yml
server:
port: 8002
spring:
application:
name: sim-eureka
eureka:
instance:
hostname: eureka2.tingcream.com # 集群
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://eureka1.tingcream.com:8001/eureka/,http://eureka3.tingcream.com:8003/eureka/ #集群
sim-eureka-8003 中application.yml
server:
port: 8003
spring:
application:
name: sim-eureka
eureka:
instance:
hostname: eureka3.tingcream.com # 集群
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://eureka2.tingcream.com:8002/eureka/,http://eureka1.tingcream.com:8001/eureka/
你可以复制3份sim-eureka 工程,让后分别修改其application.yml文件,或者,不用复制工程只需要在运行程序时指定程序参数即可,如:
在 eclipse 的工具栏, Run --》 Run Configurations ,在程序参数分别中填入,
--server.port=8001 --spring.application.name=sim-eureka --eureka.client.register-with-eureka=true --eureka.client.fetch-registry=true --eureka.instance.hostname=eureka1.tingcream.com --eureka.client.service-url.defaultZone=http://eureka2.tingcream.com:8002/eureka/,http://eureka3.tingcream.com:8003/eureka/
--server.port=8002 --spring.application.name=sim-eureka --eureka.client.register-with-eureka=true --eureka.client.fetch-registry=true --eureka.instance.hostname=eureka2.tingcream.com --eureka.client.service-url.defaultZone=http://eureka1.tingcream.com:8001/eureka/,http://eureka3.tingcream.com:8003/eureka/
--server.port=8003 --spring.application.name=sim-eureka --eureka.client.register-with-eureka=true --eureka.client.fetch-registry=true --eureka.instance.hostname=eureka3.tingcream.com --eureka.client.service-url.defaultZone=http://eureka1.tingcream.com:8001/eureka/,http://eureka2.tingcream.com:8002/eureka/
完了后,分别启动SimEurekaServer-8001、SimEurekaServer-8002 、SimEurekaServer-8003 ,分别访问
http://eureka1.tingcream.com:8001/ http://eureka2.tingcream.com:8002/ http://eureka3.tingcream.com:8003/
可以看到 DS Replicas 中有2条记录 。
springcloud客户端应用如何连接到Eureka Server集群呢?
以sim-provider 工程为例,修改application.yml 中eureka.client.default-url.defaultZone值即可。
#eureka客户端
eureka:
instance:
hostname: localhost #eureka客户端主机实例名称
prefer-ip-address: true
client:
service-url:
defaultZone: http://eureka1.tingcream.com:8001/eureka/,http://eureka2.tingcream.com:8002/eureka/,http://eureka3.tingcream.com:8003/eureka/ # 集群