Kong提供多種請求負載均衡到多個后端服務(wù)的方式:默認的基于DNS的方法,以及使用Upstream實體的一組高級負載均衡算法。
默認情況下啟用DNS負載均衡器,僅限于循環(huán)調(diào)度負載均衡。Upstream實體還具有健康檢查和斷路器功能,除了更高級的算法,如最小連接數(shù)、一致性哈希和最低延遲。
根據(jù)您的基礎(chǔ)設(shè)施,請參考相應(yīng)的DNS注意事項。
每個使用主機名(而不是IP地址)定義的服務(wù),如果該名稱解析為多個IP地址,將自動使用基于DNS的負載均衡。
DNS記錄的ttl設(shè)置(存活時間)決定了信息刷新的頻率。當(dāng)使用ttl為0時,每個請求將使用自己的DNS查詢進行解析。顯然,這會帶來一定的性能損耗,但更新/更改的延遲將非常低。
所使用的循環(huán)調(diào)度算法(是否加權(quán))取決于主機名的DNS記錄類型。
A記錄
A記錄包含一個或多個IP地址。因此,當(dāng)主機名解析為A記錄時,每個后端服務(wù)必須有自己的IP地址。
由于沒有權(quán)重信息,負載均衡器將平等對待所有條目,并進行簡單的循環(huán)調(diào)度。
SRV記錄
SRV記錄包含所有IP地址的權(quán)重和端口信息。后端服務(wù)可以通過IP地址和端口號的唯一組合進行標識。因此,單個IP地址可以在不同的端口上承載多個相同服務(wù)的實例。
SRV記錄還具有優(yōu)先級屬性。Kong只會使用具有最高優(yōu)先級的條目,并忽略其他所有條目(請注意,SRV記錄中的“最高優(yōu)先級”實際上是具有最低優(yōu)先級值的記錄)。
因為可用權(quán)重信息,每個條目在負載均衡器中都會有自己的權(quán)重,并進行加權(quán)循環(huán)調(diào)度。
類似地,任何給定的端口信息都將被DNS服務(wù)器的端口信息覆蓋。如果一個服務(wù)具有主機屬性為myhost.com和端口屬性為123,并且myhost.com解析為一個帶有127.0.0.1:456的SRV記錄,那么請求將被代理到http://127.0.0.1:456/somepath,因為端口123將被456覆蓋。文章來源:http://www.zghlxwxcb.cn/news/detail-823733.html
DNS注意事項
- Kong將信任域名服務(wù)器。這意味著通過DNS查詢檢索到的信息將比配置的值具有更高的優(yōu)先級。這主要涉及到攜帶端口和權(quán)重信息的SRV記錄。
- 每當(dāng)DNS記錄刷新時,會生成一個列表來正確處理權(quán)重。為了保持算法的性能,盡量將權(quán)重保持為它們的倍數(shù),例如,17和31的2個權(quán)重將導(dǎo)致結(jié)構(gòu)中有527個條目,而16和32的權(quán)重(或者它們最小的相對項1和2)將導(dǎo)致結(jié)構(gòu)中僅有3個條目。這在非常?。ㄉ踔翞?)的ttl值下尤其重要。
- DNS使用默認限制為512字節(jié)的UDP進行傳輸。如果要返回的條目很多,DNS服務(wù)器將以部分數(shù)據(jù)進行響應(yīng),并設(shè)置截斷標志,表示有更多未發(fā)送的條目。DNS客戶端,包括Kong,將通過TCP發(fā)起第二個請求來檢索完整的條目列表。
- 一些域名服務(wù)器默認情況下不會響應(yīng)截斷標志,而是將響應(yīng)修剪為在512字節(jié)UDP大小以下。
- Consul是一個示例。在其默認配置中,Consul僅返回前三個條目,并且不設(shè)置截斷標志來指示還有剩余的未發(fā)送條目。Consul提供了一個選項來啟用截斷標志。
- 如果部署的域名服務(wù)器沒有提供截斷標志,那么上游實例的負載可能會不一致。由于域名服務(wù)器提供的信息有限,Kong節(jié)點實際上對某些實例不知情。為了緩解這個問題,可以使用一個不同的域名服務(wù)器,使用IP地址而不是名稱,或者確保使用足夠多的Kong節(jié)點以保持所有上游服務(wù)的使用狀態(tài)。
- 當(dāng)域名服務(wù)器返回一個“3 Name Error”的錯誤時,這對于Kong來說是一個有效的響應(yīng)。如果這是意外的情況,首先驗證查詢的名稱是否正確,其次檢查域名服務(wù)器的配置。
- 在DNS記錄(A或SRV)中,初始選擇的IP地址不是隨機的。因此,在使用TTL為0的記錄時,預(yù)期域名服務(wù)器會對記錄條目進行隨機排序。?
?文章來源地址http://www.zghlxwxcb.cn/news/detail-823733.html
到了這里,關(guān)于Kong工作原理 - 負載均衡 - 基于DNS的負載均衡的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!