一般在實際集羣中,Eureka的註冊中心前面是域名和IP。而測試搭建環境的時候在同一臺主機搭建集羣就無法滿足這個情況。而Eureka是默認用ip去解析defaultZone。
測試通過可用的集羣 yml配置:
spring:
application:
name: EurekaServer
---
spring:
profiles: EurekaServer_8699
server:
port: 8699
# 指定當前eureka客戶端的註冊地址,
eureka:
instance:
hostname: peer8699
preferIpAddress: false
client:
service-url:
defaultZone: http://peer8699:8699/eureka,http://peer8698:8698/eureka,http://peer8697:8697/eureka
register-with-eureka: true #自身 不在向eureka註冊
fetch-registry: true #啓動時禁用client的註冊
---
spring:
profiles: EurekaServer_8698
server:
port: 8698
# 指定當前eureka客戶端的註冊地址,
eureka:
instance:
hostname: peer8698
preferIpAddress: false
client:
service-url:
defaultZone: http://peer8698:8698/eureka,http://peer8697:8697/eureka,http://peer8699:8699/eureka
register-with-eureka: true #自身 不在向eureka註冊
fetch-registry: true #啓動時禁用client的註冊
---
spring:
profiles: EurekaServer_8697
server:
port: 8697
# 指定當前eureka客戶端的註冊地址,
eureka:
instance:
hostname: peer8697
preferIpAddress: false
client:
service-url:
defaultZone: http://peer8697:8697/eureka,http://peer8699:8699/eureka,http://peer8698:8698/eureka
register-with-eureka: true #自身 不在向eureka註冊
fetch-registry: true #啓動時禁用client的註冊
我們可以看見爲了在同一個主機下能測試集羣的高可用,我們需要自己映射域名,需要在windows中的修改hosts文件
在win7中改變hosts的方法:https://mp.csdn.net/postedit/90563819
我的hosts文件:
改好後添加hostname,如上面yml中hostname的配置,這裏給出配置片段:
eureka:
instance:
hostname: peer8699
preferIpAddress: false
第四行是關鍵:當我把preferIpAddress寫成prefer-ip-address是無效的!需要駝峯原則!!並且在其他配置項也會出現 橫杆無法配置的情況!
能正常使用的是 preferIpAddress: false
這是配置Eureka在解析默認空間時不偏好IP地址來解析的方法,因爲我們本地測試一臺主機的情況沒有多的IP地址來測試,只能通過在hosts中設置映射,使不同域名映射到一個本機ip(127.0.0.1 )來達到一個defaultZone中有多個配置中心掛載點的方式。這樣配置後就能出現正常的配置了,所有掛載點都 有效了: