描述
loadbalance 將作為循環式 DNS 負載平衡器,方法是隨機化回應中 A、AAAA 和 MX 記錄的順序。
請參閱 維基百科,瞭解此設定的優缺點。它會注意在任何位址記錄之前對任何 CNAME 進行排序,因為某些 Stub 解析器實作(如 glibc)對此有特殊要求。
語法
loadbalance [round_robin | weighted WEIGHTFILE] {
reload DURATION
}
-
round_robin
原則會隨機化 A、AAAA 和 MX 記錄的順序,並應用均勻機率分佈。這是預設的負載平衡原則。 -
weighted
原則會將權重值指派給 IP,以控制特定的 IP 在回應中作為第一個(頂部)A/AAAA 記錄返回的相對可能性。請注意,它不會洗牌回應中的所有記錄,它只關注回應中返回的第一個 A/AAAA 記錄。 -
WEIGHTFILE 是包含指派給各網域名稱的 IP 的權重值檔案。如果路徑是相對路徑,則會將 root 外掛程式的路徑附加到其前面。格式在下面的「權重檔案」章節中說明。
-
DURATION 重新載入
WEIGHTFILE
並在檔案發生變更時更新權重指派的間隔。預設值為30 秒
。值為0 秒
表示不掃描變更和重新載入。
權重檔案
通用的權重檔案語法
# Comment lines are ignored
domain-name1
ip11 weight11
ip12 weight12
ip13 weight13
domain-name2
ip21 weight21
ip22 weight22
# ... etc.
其中 ipXY
是 domain-nameX
的 IP 位址,而 weightXY
是與該 IP 相關聯的權重值。權重值在 [1,255] 的範圍內。
weighted
原則會選取結果清單中的其中一個位址記錄,並將其移至清單的頂部(第一個)位置。隨機選取會考慮到權重檔案中指派給位址的權重值。如果結果清單中的位址在權重檔案中沒有相關聯的權重值,則在執行選取時,會假設其預設權重值為「1」。
範例
負載平衡來自 Google 公用 DNS 的回覆
. {
loadbalance round_robin
forward . 8.8.8.8 8.8.4.4
}
使用 weighted
策略來負載平衡由 file 外掛程式提供的回覆。我們分別將權重值 3
、1
和 2
指派給 IP 100.64.1.1
、100.64.1.2
和 100.64.1.3
。這些 IP 是 ./db.example.com
區域檔案中定義的網域名稱 www.example.com
的 A 記錄中的位址。100.64.1.1
、100.64.1.2
或 100.64.1.3
在頂部(第一個)A 記錄中的答案數量的比率應收斂至 3 : 1 : 2
。(例如,頂部 A 記錄中包含 100.64.1.3
的答案應該比包含 100.64.1.2
的答案多兩倍)。Corefile
example.com {
file ./db.example.com {
reload 10s
}
loadbalance weighted ./db.example.com.weights {
reload 10s
}
}
權重檔案 ./db.example.com.weights
www.example.com
100.64.1.1 3
100.64.1.2 1
100.64.1.3 2