背景
当我的项目是分区部署时,心愿一个机房内的服务优先调用同一个机房内的服务,当同一个机房的服务不可用的时候,再去调用其它机房的服务,防止跨区拜访
eureka server1 配置
spring:
application:
name: eureka1
server:
port: 7101
eureka:
instance:
prefer-ip-address: true
hostname: localhost
client:
# 是否容许注册到 eureka 上
register-with-eureka: false
# 是否从 Eureka Server 获取注册的服务信息
fetch-registry: false
#如果 prefer-same-zone-eureka 为 false, 依照 service-url 下的 list 取第一个注册核心来注册,并维持心跳检测,不会再向 list 内的其余的注册核心注册和维持心跳,只有在第一个注册失败的情 况,才会顺次向其余注册核心注册,总共三次,如果三个 service-url 都没有注册胜利,则注册失败,每隔一个心跳工夫会再次尝试。#如果 prefer-same-zone-eureka 为 true, 先通过 region 取 availability-zones 内的第一个 zone, 而后通过这个 Zone 取 service-url 下的 List,并向 list 内的第一个注册核心注册和维持心跳,总共三次,如果三个 service-url 都没有注册胜利,则注册失败,每隔一个心跳工夫会再次尝试。prefer-same-zone-eureka: true
#地区,名称可自定义
region: myRegion
# 区域定义,配置须要按程序来
availability-zones:
myRegion: beijing,shanghai
service-url:
beijing: http://localhost:7101/eureka/
shanghai: http://localhost:7102/eureka/
eureka server2 配置
spring:
application:
name: eureka2
server:
port: 7102
eureka:
instance:
prefer-ip-address: true
hostname: localhost
client:
# 是否容许注册到 eureka 上
register-with-eureka: false
# 是否从 Eureka Server 获取注册的服务信息
fetch-registry: false
#如果 prefer-same-zone-eureka 为 false, 依照 service-url 下的 list 取第一个注册核心来注册,并维持心跳检测,不会再向 list 内的其余的注册核心注册和维持心跳,只有在第一个注册失败的情 况,才会顺次向其余注册核心注册,总共三次,如果三个 service-url 都没有注册胜利,则注册失败,每隔一个心跳工夫会再次尝试。#如果 prefer-same-zone-eureka 为 true, 先通过 region 取 availability-zones 内的第一个 zone, 而后通过这个 Zone 取 service-url 下的 List,并向 list 内的第一个注册核心注册和维持心跳,总共三次,如果三个 service-url 都没有注册胜利,则注册失败,每隔一个心跳工夫会再次尝试。prefer-same-zone-eureka: true
#地区,名称可自定义
region: myRegion
# 区域定义,配置须要按程序来
availability-zones:
myRegion: shanghai,beijing
service-url:
beijing: http://localhost:7101/eureka/
shanghai: http://localhost:7102/eureka/
service1(优先注册上海所在区域)配置
spring:
application:
name: service
server:
port: 7111
eureka:
instance:
prefer-ip-address: true
metadata-map:
# 定义所属 zone
zone: shanghai
client:
register-with-eureka: true
fetch-registry: true
prefer-same-zone-eureka: true
region: myRegion
availability-zones:
# 留神程序
myRegion: shanghai,beijing
service-url:
beijing: http://localhost:7101/eureka/
shanghai: http://localhost:7102/eureka/
service2(优先注册北京所在区域)配置
spring:
application:
name: service
server:
port: 7112
eureka:
instance:
prefer-ip-address: true
# 定义所属 zone
metadata-map:
zone: beijing
client:
register-with-eureka: true
fetch-registry: true
prefer-same-zone-eureka: true
region: myRegion
availability-zones:
# 留神程序
myRegion: beijing,shanghai
service-url:
beijing: http://localhost:7101/eureka/
shanghai: http://localhost:7102/eureka/
consumer(拜访上海所在区域)配置
spring:
application:
name: consumer
server:
port: 7121
eureka:
instance:
prefer-ip-address: true
# 定义所属 zone
metadata-map:
zone: shanghai
client:
register-with-eureka: true
fetch-registry: true
prefer-same-zone-eureka: true
region: myRegion
availability-zones:
# 留神程序
myRegion: shanghai,beijing
service-url:
beijing: http://localhost:7101/eureka/
shanghai: http://localhost:7102/eureka/
以上,也可加一个默认的 defaultZone,当服务不可用时,会从默认注册核心上获取对应服务