Appearance
网关双中心配置
ehcache缓存配置
网关从3.4.6开始之前的版本用到本地缓存是ehcache
,3.4.6之后的版本使用的Caffeine
。 ehcache
中多个节点的缓存同步配置如下:
xml
<!-- 网关多节点集群配置 -->
<!-- 多节点之间的缓存需要添加如上的配置,在rmiUrls中添加其余节点的ip和本地缓存的端口,后面在跟上所要同步的缓存块的名称,如果需要同步多个节点中间使用“|”隔开,注意:每个ip:port+ 缓存块名称后面没有“/” -->
<cacheManagerPeerProviderFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=manual,peerDiscovery=manual,rmiUrls=//127.0.0.1:11112/route|127.0.0.1:11113/route"/>
<!--本地缓存的配置,port可指定本地缓存的端口-->
<cacheManagerPeerListenerFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="hostName=localhost,port=11111,socketTimeoutMillis=2000"/>
<!-- 指定的命名空间route -->
<!--timeToLiveSeconds 缓存自创建日期起至失效时的间隔时间-->
<!--timeToIdleSeconds:缓存创建以后,最后一次访问缓存的日期至失效之时的时间间隔-->
<cache
name="route"
eternal="false"
maxElementsInMemory="100"
overflowToDisk="false"
diskPersistent="false"
timeToIdleSeconds="0"
timeToLiveSeconds="300"
memoryStoreEvictionPolicy="LRU"/>
eureka配置
配置示例中,dc01
代表中心1,dc02
代表中心2
中心1配置示例
yaml
eureka:
instance:
hostname: ${hostname:localhost}
prefer-ip-address: true
lease-expiration-duration-in-seconds: 15 #服务过期时间
lease-renewal-interval-in-seconds: 5 #服务刷新时间,每5s心跳一次
metadata-map:
#本服务地区
zone: dc01
client:
#是否注册至eureka
register-with-eureka: true
#是否获取注册表
fetch-registry: true
#优先选择本zone服务
prefer-same-zone-eureka: true
#区域
region: changshu
#可用地区
availability-zones:
#区域下的可用地区
changshu: dc01,dc02
#地区对应的url
service-url:
dc01: http://192.168.164.179:9527/eureka/
dc02: http://192.168.164.180:9527/eureka/
healthcheck:
enabled: false
eurekaServiceUrlPollIntervalSeconds: 60
#设置拉取服务注册信息时间
registry-fetch-interval-seconds: 5
中心2配置示例
yaml
eureka:
instance:
hostname: ${hostname:localhost}
prefer-ip-address: true
lease-expiration-duration-in-seconds: 15 #服务过期时间
lease-renewal-interval-in-seconds: 5 #服务刷新时间,每5s心跳一次
metadata-map:
#本服务地区
zone: dc02
client:
#是否注册至eureka
register-with-eureka: true
#是否获取注册表
fetch-registry: true
#优先选择本zone服务
prefer-same-zone-eureka: true
#区域
region: changshu
#可用地区
availability-zones:
#区域下的可用地区
changshu: dc01,dc02
#地区对应的url
service-url:
dc01: http://192.168.164.179:9527/eureka/
dc02: http://192.168.164.180:9527/eureka/
healthcheck:
enabled: false
eurekaServiceUrlPollIntervalSeconds: 60
#设置拉取服务注册信息时间
registry-fetch-interval-seconds: 5
redis配置
网关的redis主要用于限流令牌桶的计算的存储。
每一个中心的redis配置应该一致,每个中心默认都会使用redis01,当配置了多中心限流,并且配置的中心与redis02的id相同时,才会使用redis02进行多中心限流。
yaml
gateway:
discovery: eureka
doubleCenter:
enable: true #是否启用双中心
redis:
redis01:
id: dc01 #默认redis, 非双中心模式下只需配置redis01即可。
database: 0
lettuce:
pool:
max-idle: 10
max-active: 1000
max-wait: 1000ms
min-idle: 5
timeout: 100000ms
# cluster:
# nodes: 127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381
host: 192.168.164.179
port: 6379
redis02:
id: dc02 #双中心的另一个redis, 此处要确保另一个中心的zone名称与此处一致
database: 0
lettuce:
pool:
max-idle: 10
max-active: 1000
max-wait: 1000ms
min-idle: 5
timeout: 100000ms
# cluster:
# nodes: 127.0.0.1:7379,127.0.0.1:7380,127.0.0.1:7381
host: 192.168.164.180
port: 6379