簡體   English   中英

spring-cloud和ribbon可以執行基於DNS的負載平衡嗎?

[英]Can spring-cloud and ribbon perform DNS-based load balancing?

Cloudfoundry計划添加對映射到多個IP的DNS A記錄的支持(每個應用容器實例一個),請參閱docs-proposal 我想知道彈簧雲發現是否與功能區配合可以支持基於DNS的客戶端負載平衡。

Spring-Cloud DiscoveryClient似乎沒有DNS解析,它管理主機名

功能區負載平衡庫通過ListOfServers屬性支持FQDN列表。

但我無法找到與指定服務器的DNS查找相關的文檔:即,如果DNS A / AAA記錄(從ListOfServers獲取)返回多個IP地址,那么Ribbon會在IP地址之間進行負載平衡嗎?

我需要在哪里配置DNS緩存指令? 這是java.security支持中的JVM范圍,還是可以將其作為客戶端幻燈片負載平衡選項(來自功能區)進行管理?

功能區不執行任何DNS查找,它按原樣返回ServerList中的條目(IP或名稱)。

您不需要功能區來進行基於DNS的負載均衡; 操作系統解析程序將在每次查找的可用IP地址之間輪換。 只是確保不緩存DNS。

對於更復雜的負載平衡,您需要將DNS解析為IP列表,然后將其傳遞給Ribbon。

如果您使用的是spring cloud eureka服務,則每個服務實例都會在eureka上注冊。 這意味着您可以在同一主機上托管同一服務的多個實例,並且eureka了解每個服務。

如果您使用功能區進行基於客戶端的負載平衡,則功能區會查詢eureka以獲取服務的所有實例,並了解服務的每個實例。

這樣,功能區可以選擇連接到每個實例。 因此,不需要多個DNS A記錄。 使用多個DNS A記錄會適得其反,因為功能區無法再通過DNS區分服務的多個實例。 在這種情況下,我建議將eureka.instance.preferIpAddress設置為true,以區分多個實例。

據我所知,功能區支持2種工作模式,RoundRobinRule和AvailabilityFilteringRule。

您可以在“Spring微服務”一書中找到一個好的介紹。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM