佳木斯湛栽影视文化发展公司

主頁 > 知識(shí)庫 > 在 Linux 上用 DNS 實(shí)現(xiàn)簡(jiǎn)單的負(fù)載均衡的方法

在 Linux 上用 DNS 實(shí)現(xiàn)簡(jiǎn)單的負(fù)載均衡的方法

熱門標(biāo)簽:百度競(jìng)價(jià)點(diǎn)擊價(jià)格的計(jì)算公式 硅谷的囚徒呼叫中心 智能手機(jī) 網(wǎng)站建設(shè) 美圖手機(jī) 檢查注冊(cè)表項(xiàng) 阿里云 使用U盤裝系統(tǒng)

DNS 輪詢將多個(gè)服務(wù)器映射到同一個(gè)主機(jī)名,并沒有為這里展示的魔法做更多的工作。

如果你的后端服務(wù)器是由多臺(tái)服務(wù)器構(gòu)成的,比如集群化或者鏡像的 Web 或者文件服務(wù)器,通過負(fù)載均衡器提供了單一的入口點(diǎn)。業(yè)務(wù)繁忙的大型電商在高端負(fù)載均衡器上花費(fèi)了大量的資金,用它來執(zhí)行各種各樣的任務(wù):代理、緩存、狀況檢查、SSL 處理、可配置的優(yōu)先級(jí)、流量整形等很多任務(wù)。

但是你并不需要做那么多工作的負(fù)載均衡器。你需要的是一個(gè)跨服務(wù)器分發(fā)負(fù)載的簡(jiǎn)單方法,它能夠提供故障切換,并且不太在意它是否高效和完美。DNS 輪詢和使用輪詢的子域委派是實(shí)現(xiàn)這個(gè)目標(biāo)的兩種簡(jiǎn)單方法。

DNS 輪詢是將多臺(tái)服務(wù)器映射到同一個(gè)主機(jī)名上,當(dāng)用戶訪問 foo.example.com 時(shí)多臺(tái)服務(wù)器都可用于處理它們的請(qǐng)求,使用的就是這種方式。

當(dāng)你有多個(gè)子域或者你的服務(wù)器在地理上比較分散時(shí),使用輪詢的子域委派就比較有用。你有一個(gè)主域名服務(wù)器,而子域有它們自己的域名服務(wù)器。你的主域名服務(wù)器將所有的到子域的請(qǐng)求指向到它們自己的域名服務(wù)器上。這將提升響應(yīng)時(shí)間,因?yàn)?DNS 協(xié)議會(huì)自動(dòng)查找最快的鏈路。

DNS 輪詢

輪詢和旅鶇鳥robins沒有任何關(guān)系,據(jù)我相熟的圖書管理員說,它最初是一個(gè)法語短語,ruban rond、或者 round ribbon。很久以前,法國政府官員以不分級(jí)的圓形、波浪線、或者直線形狀來在請(qǐng)?jiān)笗虾炞?,以蓋住原來的發(fā)起人。

DNS 輪詢也是不分級(jí)的,簡(jiǎn)單配置一個(gè)服務(wù)器列表,然后將請(qǐng)求轉(zhuǎn)到每個(gè)服務(wù)器上。它并不做真正的負(fù)載均衡,因?yàn)樗揪筒粶y(cè)量負(fù)載,也沒有狀況檢查,因此如果一個(gè)服務(wù)器宕機(jī),請(qǐng)求仍然會(huì)發(fā)送到那個(gè)宕機(jī)的服務(wù)器上。它的優(yōu)點(diǎn)就是簡(jiǎn)單。如果你有一個(gè)小的文件或者 Web 服務(wù)器集群,想通過一個(gè)簡(jiǎn)單的方法在它們之間分散負(fù)載,那么 DNS 輪詢很適合你。

你所做的全部配置就是創(chuàng)建多條 A 或者 AAAA 記錄,映射多臺(tái)服務(wù)器到單個(gè)的主機(jī)名。這個(gè) BIND 示例同時(shí)使用了 IPv4 和 IPv6 私有地址類:

fileserv.example.com. IN A 172.16.10.10
fileserv.example.com. IN A 172.16.10.11
fileserv.example.com. IN A 172.16.10.12
fileserv.example.com. IN AAAA fd02:faea:f561:8fa0:1::10
fileserv.example.com. IN AAAA fd02:faea:f561:8fa0:1::11
fileserv.example.com. IN AAAA fd02:faea:f561:8fa0:1::12

Dnsmasq 在 /etc/hosts 文件中保存 A 和 AAAA 記錄:

172.16.1.10 fileserv fileserv.example.com
172.16.1.11 fileserv fileserv.example.com
172.16.1.12 fileserv fileserv.example.com
fd02:faea:f561:8fa0:1::10 fileserv fileserv.example.com
fd02:faea:f561:8fa0:1::11 fileserv fileserv.example.com
fd02:faea:f561:8fa0:1::12 fileserv fileserv.example.com

請(qǐng)注意這些示例都是很簡(jiǎn)化的,解析完全合格域名有多種方法,因此,關(guān)于如何配置 DNS 請(qǐng)自行學(xué)習(xí)。

使用 dig 命令去檢查你的配置能否按預(yù)期工作。將 ns.example.com 替換為你的域名服務(wù)器:

$ dig @ns.example.com fileserv A fileserv AAA

它將同時(shí)顯示出 IPv4 和 IPv6 的輪詢記錄。

子域委派和輪詢

子域委派結(jié)合輪詢要做的配置會(huì)更多,但是這樣有一些好處。當(dāng)你有多個(gè)子域或者地理位置比較分散的服務(wù)器時(shí),就應(yīng)該去使用它。它的響應(yīng)時(shí)間更快,并且宕機(jī)的服務(wù)器不會(huì)去響應(yīng),因此客戶端不會(huì)因?yàn)榈却貜?fù)而被掛住。一個(gè)短的 TTL,比如 60 秒,就能幫你做到。

這種方法需要多臺(tái)域名服務(wù)器。在最簡(jiǎn)化的場(chǎng)景中,你需要一臺(tái)主域名服務(wù)器和兩個(gè)子域,每個(gè)子域都有它們自己的域名服務(wù)器。在子域服務(wù)器上配置你的輪詢記錄,然后在你的主域名服務(wù)器上配置委派。

在主域名服務(wù)器上的 BIND 中,你至少需要兩個(gè)額外的配置,一個(gè)區(qū)聲明以及在區(qū)數(shù)據(jù)文件中的 A/AAAA 記錄。主域名服務(wù)器中的委派應(yīng)該像如下的內(nèi)容:

ns1.sub.example.com. IN A 172.16.1.20
ns1.sub.example.com. IN AAAA fd02:faea:f561:8fa0:1::20
ns2.sub.example.com. IN A 172.16.1.21
ns2.sub.example.com. IN AAA fd02:faea:f561:8fa0:1::21
sub.example.com. IN NS ns1.sub.example.com.
sub.example.com. IN NS ns2.sub.example.com.

接下來的每臺(tái)子域服務(wù)器上有它們自己的區(qū)文件。在這里它的關(guān)鍵點(diǎn)是每個(gè)服務(wù)器去返回它自己的 IP 地址。在 named.conf 中的區(qū)聲明,所有的服務(wù)上都是一樣的:

zone "sub.example.com" {
  type master;
  file "db.sub.example.com";
};

然后數(shù)據(jù)文件也是相同的,除了那個(gè) A/AAAA 記錄使用的是各個(gè)服務(wù)器自己的 IP 地址。SOA 記錄都指向到主域名服務(wù)器:

; first subdomain name server
$ORIGIN sub.example.com.
$TTL 60
sub.example.com IN SOA ns1.example.com. admin.example.com. (
    2018123456   ; serial
    3H       ; refresh
    15       ; retry
    3600000     ; expire
)
sub.example.com. IN NS ns1.sub.example.com.
sub.example.com. IN A 172.16.1.20
ns1.sub.example.com. IN AAAA fd02:faea:f561:8fa0:1::20
; second subdomain name server
$ORIGIN sub.example.com.
$TTL 60
sub.example.com IN SOA ns1.example.com. admin.example.com. (
    2018234567   ; serial
    3H       ; refresh
    15       ; retry
    3600000     ; expire
)
sub.example.com. IN NS ns1.sub.example.com.
sub.example.com. IN A 172.16.1.21
ns2.sub.example.com. IN AAAA fd02:faea:f561:8fa0:1::21

接下來生成子域服務(wù)器上的輪詢記錄,方法和前面一樣?,F(xiàn)在你已經(jīng)有了多個(gè)域名服務(wù)器來處理到你的子域的請(qǐng)求。再說一次,BIND 是很復(fù)雜的,做同一件事情它有多種方法,因此,給你留的家庭作業(yè)是找出適合你使用的最佳配置方法。

在 Dnsmasq 中做子域委派很容易。在你的主域名服務(wù)器上的 dnsmasq.conf 文件中添加如下的行,去指向到子域的域名服務(wù)器:

server=/sub.example.com/172.16.1.20
server=/sub.example.com/172.16.1.21
server=/sub.example.com/fd02:faea:f561:8fa0:1::20
server=/sub.example.com/fd02:faea:f561:8fa0:1::21

然后在子域的域名服務(wù)器上的 /etc/hosts 中配置輪詢。

獲取配置方法的詳細(xì)內(nèi)容和幫助,請(qǐng)參考這些資源:

  • Dnsmasq
  • DNS and BIND, 5th Edition

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:山南 懷化 湖北 湘潭 通遼 賀州 黃山 煙臺(tái)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《在 Linux 上用 DNS 實(shí)現(xiàn)簡(jiǎn)單的負(fù)載均衡的方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    休宁县| 婺源县| 成安县| 平度市| 罗田县| 巴东县| 芦山县| 阳新县| 绥中县| 满洲里市| 当雄县| 正宁县| 马尔康县| 饶河县| 彭阳县| 南平市| 思茅市| 盱眙县| 广宁县| 施甸县| 金塔县| 永年县| 海兴县| 调兵山市| 吉首市| 谢通门县| 嘉义县| 元谋县| 青神县| 赣州市| 金华市| 怀仁县| 白玉县| 应城市| 玉山县| 邢台市| 民勤县| 永丰县| 肇庆市| 镇巴县| 高清|