linux實現DNS輪詢實現負載平衡

大雄45發表於2020-08-04
導讀 DNS 輪詢機制會受到多方面的影響,如:A記錄的TTL時間長短的影響;別的 DNS 伺服器 Cache 的影響;windows 客戶端也有一個DNS Cache。這些都會影響 DNS 輪詢的效果。因此 DNS 的輪詢機制並不能做為一個 load balancing的解決方案,只能作為一個 load distribution 方案。

不過有一個引數你可以試試看是否能調整一下輪詢的效果:
在 named.conf 中可以設定 bind 的 round-robin 的給出結果的順序:

options {
rrset-order { order random; };
};

rrset-order 支援三個引數:fixed, random, cyclic 。
fix 會將多個A記錄按配置檔案的順序固定給出
random 會隨機給出
cyclic 會迴圈給出

DNS輪詢就是指DNS伺服器將域名解析請求按照A記錄的順序,逐一分配到不同的IP上,同時在一定程度上也實現了簡單的負載均衡。

我們先看一下 WINDOWS2003下如何設定DNS輪詢。比如:有兩臺WEB主機,A主機ip是 192.168.1.1,B主機ip是192.168.1.4 , 企業裡有單獨一臺DNS伺服器,然後在該DNS伺服器的正向區域裡(域名為haiquan.net)分別建立兩個主機A記錄,第一個主機記錄的記錄IP是 192.168.1.1, 第二個主機記錄的記錄IP是192.168.1.4,附圖:
linux實現DNS輪詢實現負載平衡linux實現DNS輪詢實現負載平衡
轉: 實現DNS輪詢實現負載平衡

然後在DNS主機QINGYG上點選右鍵選擇屬性,在出現的對話方塊中勾選"啟用迴圈",如圖:
linux實現DNS輪詢實現負載平衡linux實現DNS輪詢實現負載平衡

注意:網路掩碼排序可以根據子網掩碼來判斷dns地址和客戶端是否在同一個網段或者離的比較近,然後優先返回較近的伺服器的地址。

設定完畢後,我們看一下效果:
linux實現DNS輪詢實現負載平衡linux實現DNS輪詢實現負載平衡

注意:WINDOWS會快取DNS結果,為方便觀察輪詢情況,我們需要用"ipconfig /flushdns"來清空DNS快取。

下面我們看一下LINUX下如何設定DNS輪詢,以RHEL 5為例:
1、首先需要安裝BIND並搭建DNS伺服器(具體DNS搭建過程請參考相關資料)

#yum install -y bind* caching-nameserver*

安裝DNS伺服器一般需要安裝以下三個資料包:

bind-utils-9.3.3-7.el5

查詢用

bind-chroot-9.3.3-7.el5

安全機制

caching-nameserver-9.3.3-7.el5

配置檔案

2、修改區域資料配置檔案(example.com.db),這裡主要看一下DNS輪詢配置

IN MX 10 mail.example.com.
... ...
mail IN A 192.168.1.9
IN A 192.168.1.10
IN A 192.168.1.11

在以上配置中,mail.example.com對應了3個IP地址,此時具體選擇哪一條A記錄,是由rrset-order語句決定的。另外,在反向解析檔案中,這3個IP也都要對應mail主機,以免有些郵件伺服器為了反垃圾郵件進行反向查詢時出現問題。

這是在 /etc/named.conf 檔案中 options 語句有關rrset-order配置的一個例子:

rrset-order {
class IN type A name "mail.example.com" order random;
order cyclic;
};

這個設定會使處於IN類中的A記錄的響應以隨機順序返回,IN 類以"mail.example.com"為字尾。其他的記錄以迴圈記錄被返回。

rrset-order 支援三個引數:fixed, random, cyclic 。
fixed 將多個A記錄按配置檔案的順序固定給出
random 隨機給出
cyclic 迴圈給出

注:rrset-order語句並不被BIND9支援,BIND9目前只支援"random-cyclic"排序,伺服器隨機選擇RRset集中的開始點,有順序返回在那個點開始的記錄。

3、測試看結果:

[root@linux252:/]#host mail.example.com
mail.example.com has address 192.168.1.9
mail.example.com has address 192.168.1.10
mail.example.com has address 192.168.1.11

總結一下:

DNS輪詢的配置是比較方便的,如果網路擴增,新增的Web伺服器只要增加一個公網IP即可。 但相對來說,DNS輪詢也有其自身的一些缺點,這個工作當中也是我們需要注意的。

其一:如果某臺伺服器當機,DNS伺服器是無法知曉的,仍舊會將訪問分配到此伺服器。修改DNS記錄全部生效一般要1-3小時,甚至更久;

其二:如果幾臺Web伺服器之間的硬體配置不同,導致能夠承受的壓力也是不同的,但是DNS輪詢解析目前不能很好的按權重進行分配。

其三:如果是 需要身份驗證的網站,DNS解析無法將驗證使用者的訪問持久分配到同一伺服器。雖然有一定的本地DNS快取,但是很難保證在使用者訪問期間,本地DNS不過 期,而重新查詢伺服器並指向了新的伺服器,那麼原伺服器儲存的使用者資訊是無法被帶到新伺服器的,而且可能被要求重新認證身份,而且來回切換時間長了各臺服 務器都儲存有使用者不同的資訊,對伺服器資源也是一種浪費。

原文來自: 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2709269/,如需轉載,請註明出處,否則將追究法律責任。

相關文章