kong網關負載均衡配置方式分爲DNS-based loadbalancing和Ring-balancer兩種,Ring-balancer方式的負載均衡配置之前已經介紹過------[Ring-balancer],今天這裏主要介紹基於DNS的負載均衡配置。
DNS-based loadbalancing
當kong網關配置了dns解析器,後端服務的註冊是有dns服務器完成,也就是說,kong網關會定時(ttl值)請求dns解析器,完成hostname解析。
- DNS解析的結果爲A記錄
A記錄包含一個或多個IP地址。 因此,當主機名解析爲A記錄時,每個後端服務必須具有自己的IP地址。由於沒有重量信息,所有服務在負載均衡器中將被視爲相等加權,並且平衡器將執行直接循環。 - DNS解析的結果爲srv記錄
後端服務可以通過IP地址和端口號的唯一組合來識別。 因此,單個IP地址可以在不同端口上託管同一服務的多個實例。由於權重信息可用,每個條目將在負載均衡器中獲得自己的權重,並且它將執行加權循環。同樣,任何給定的端口信息都將被來自DNS服務器的端口信息覆蓋。
說人話就是如果你在kong網關配置的hostname在dns服務器中解析爲A類型,解析結果只包含ip,kong網關會用這個ip+service中配置的port來完成負載。 如果解析爲SRV類型。解析結果包含ip+post,附加的還有weight,ttl值,kong網關會用這裏的ip+port+weight完成負載。每個ttl秒時間,會請求一次dns服務器。在這個中間中kong網關會從緩存得到上次請求的信息,完成負載。
kong.config配置
- dns_resolver:配置dns解析器的地址。這裏我配置coreDNS的地址
- dns_hostsfile :指定host文件,只在kong網關啓動時加載,修改後要reload
- dns_order:這裏是解析的順序
The last successful type previously resolved ---------- 上次解析成功的記錄
SRV record
A record
CNAME record ---------- 相當於別名
換句話說,當給定的hostname解析的結果既包含SRV又有A時,會通過SRV完成路由。 - dns_stale_ttl :這個值將在後臺獲取新的DNS記錄時使用。具體不詳。
- dns_no_sync:我的理解是如果爲true,將會在緩存沒有命中時查詢dns解析器,當爲false時,相同類型的多個會hostname會請求一次dns解析器。
相關例子將在另一篇貼出來