我使用gRPC與Python作爲客戶端/服務器內kubernetes莢... 我想能夠啓動相同類型(gRPC服務器)的多個莢並讓客戶端連接到他們(隨機)。gRPC客戶端負載平衡
我派發了10個服務器,並設置了一個「服務」來定位它們。然後,在客戶端,我連接到服務的DNS名稱 - 這意味着kubernetes應該執行負載平衡並將我指向隨機服務器吊艙。 實際上,客戶端調用gRPC函數(這很好用),但是當我查看日誌時,我發現所有調用都轉到同一個服務器pod。
我認爲客戶端正在做某種DNS緩存,導致所有的呼叫被髮送到同一臺服務器。是這樣嗎?是否有禁用它,並設置相同的存根客戶端進行「新」呼叫,並通過每個電話通過DNS獲取新的IP?
我知道如果每次都會查詢DNS服務器,可能會導致開銷,但分配負載對我來說現在更重要。
編輯
可能不是一個緩存的問題...可能只是GRPC的工作方式。 HTTP/2和持久的可重用連接。任何方式在每次通話後「斷開」?
謝謝你的詳細解答。其實,我已經做了,你有什麼建議和創建爲每個請求(效率不高,我知道)的新渠道。從你的答案我明白,只有在DNS第一個IP會得到請求,直到它停止(沒有可用的連接/死亡/墜毀),只有那麼客戶端將獲得第二個IP等等......是嗎? – Idan
是的。直到變化使人們有可能首先作爲LB政策選擇代替挑循環賽,如提及。 –
是否有擴大多臺gRPC服務器的典型解決方案?或客戶端負載平衡? –