負載平衡

原始碼

loadbalance 會隨機化 A、AAAA 和 MX 記錄的順序。

描述

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.

其中 ipXYdomain-nameX 的 IP 位址,而 weightXY 是與該 IP 相關聯的權重值。權重值在 [1,255] 的範圍內。

weighted 原則會選取結果清單中的其中一個位址記錄,並將其移至清單的頂部(第一個)位置。隨機選取會考慮到權重檔案中指派給位址的權重值。如果結果清單中的位址在權重檔案中沒有相關聯的權重值,則在執行選取時,會假設其預設權重值為「1」。

範例

負載平衡來自 Google 公用 DNS 的回覆

. {
    loadbalance round_robin
    forward . 8.8.8.8 8.8.4.4
}

使用 weighted 策略來負載平衡由 file 外掛程式提供的回覆。我們分別將權重值 312 指派給 IP 100.64.1.1100.64.1.2100.64.1.3。這些 IP 是 ./db.example.com 區域檔案中定義的網域名稱 www.example.com 的 A 記錄中的位址。100.64.1.1100.64.1.2100.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