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请求。后续的交互同前。

猜你喜欢

转载自blog.csdn.net/liaoxiangui/article/details/80604306