DNS實現HA和負載均衡

NAPTRSRV均可以實現後臺服務器的master/slaveload balancing。但是兩者實現的粒度不一樣,所以兩者通常結合起來使用。通過NAPTR可以查找服務(service),通過SRV可以查找某個service的細節比如協議,PORTserver

1 SRV(service location)

The SRV RR allows administrators to use several servers for a singledomain, to move services from host to host with little fuss, and to designatesome hosts as primary servers for a service and others as backups. SRV can beused for load balancing.

SRV可實現負載均衡和高可靠性。

●service

對應的service名稱

●protocol

協議名稱。常用的有TCP,UDP,_x-3gpp-pgw

●name

除掉服務和協議後的域名。

●priority

值越低,優先級越高。只能選擇優先級最高的。利用這個字段可以實現master/slave

●weight

用於負載均衡,如果priority一樣,則需要把請求安裝weight指示的比例分配到各個target上。priority聯合使用可以實現maser/slave load balancing

●port

提供服務的端口號。

●target

提供服務的真正server。


2 NAPTR

全稱是naming authority pointer。通過正則表達式對輸入的域名進行計算,輸出一個新域名/URI.

●name

正則表達式的輸入,即key。

●order

只能選擇優先級最高(order值最小)的。

●preference

類似於SRV中的priority,用戶負載均衡

●flags

“S”NAPTR終止。下一步應該是SRV查找。

“A”NAPTR終止。下一步應該是A/AAAA查找。

“U”NAPTR終止。下一步不是DNS查找,生成的URI比較特殊,沒有研究。

“P”還需要進行下一步NAPTR查詢?

“”  regexp一定爲空,需要對replace進行下一步的NAPTR查詢。即S-NAPTR,straightforward- NAPTR。

●service

指定的服務名稱。

●regex

●replacement

提供服務的server。

 

3 NAPTR和SRV使用案例

NAPTRSRV均可以實現後臺服務器的master/slaveloadbalancing。但是兩者實現的粒度不一樣,所以兩者通常結合起來使用。通過NAPTR可以查找服務(service),通過SRV可以查找某個service的細節比如協議,PORTserver

3.1 SIP

SIP(RFC 3263)建議發起一個會話時,首先進行NAPTR查找。比如,如果試圖解析sip:[email protected],首先需要對some.example.com進行一次NAPTR查詢,只有當NAPTR失敗了才直接進行SRV查詢。因爲NAPTR允許定義service,而SRV只提供細節比如端口號和server name。

NAPTR查詢的結果如下。flag “S”指示進行NAPTR後,還需要進行一次SRV查詢,從而得到協議、端口、真正的server。可以看出,NAPTR和SRV的層次是不一樣的。

NAPTR 50  50  "s"  "SIPS+D2T"     ""  _sips._tcp.example.com.

NAPTR 90  50  "s"  "SIP+D2T"      ""  _sip._tcp.example.com

NAPTR 100 50  "s"  "SIP+D2U"      ""  _sip._udp.example.com.

3.2 ENUM

ENUMIETF的電話號碼映射工作組(Telephone NumberMapping working group, 簡稱ENUM)定義的一個協議——RFC2916。它定義了將E.164號碼轉換爲域名的方法,從而使國際統一的E.164電話號碼成爲可以在互聯網中使用的網絡地址資源。E.164號碼是傳統電信網絡中使用的重要資源,DNS系統是互聯網的重要基礎,ENUM將兩者結合起來,有益於傳統電信服務向基於IP包交換的方向發展,ENUM是對促進兩網最終融合具有重要意義的技術。

比如,需要把電話號碼+441115551234轉換成對應的域名,則首先要進行如下處理:

AUS = +441115551234

# remove +

441115551234

# reverse digits

432155511144

# separate with a dot

4.3.2.1.5.5.5.1.1.1.4.4

# append .e164.arpa.

4.3.2.1.5.5.5.1.1.1.4.4.e164.arpa

然後再利用NAPTR對4.3.2.1.5.5.5.1.1.1.4.4.e164.arpa進行計算,最後得出[email protected].

3.3  PGW選擇

3GPP-TS-29.3035.1.13小節和3GPP-TS-23.003小節描述了相關信息。PGW提供的服務名稱是x-3gpp-pgw,協議包括x-s2a-pmip,x-s2b-pmip…

類似於SIP。client端從AAA得到PGW的域名後,先進行一次NAPTR查詢,然後再執行SRV查詢和A記錄查詢,具體流程如下。

1 get aa.bb.com from AAA.

2 send NAPTR.name=aa.bb.com

3 get NAPTR rsp. flag=”s”,replacement= _x-3gpp-pgw._x-s2a-pmip.cc.dd.com

4 send SRV query.name= _x-3gpp-pgw._x-s2a-pmip.cc.dd.com

5 get SRV rsp.target=ff.hh.com

6 send A query. name=ff.hh.com

7 get A rsp. ip=1.2.3.4

另外,client端也需支持SNAPTR。收到的NAPTR響應,如果flag爲空,則稱爲SNAPTR,下一步需要再執行NAPTR請求。後續的交互同前。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章