路由复测的一般方法(入站负载均衡HillstonesmartDNS实现)

入站负载均衡,主要使用场景是对外提供服务的数据中心。入站负载均衡,TCP连接的发起方是用户端,而不是服务器端。如果由服务器发起的,则属于出站负载均衡。入站负载均衡,可以是多活数据中心,也可以单个数据中心内部。本次主要详解下单个数据中心内,多线路接入的入站负载均衡。

路由复测的一般方法(入站负载均衡HillstonesmartDNS实现)(1)

入站的负载均衡在一些公众服务上面使用比较广泛。比如网盘供应商,肯定希望电信用户访问数据中心电信的线路、联通用户访问联通的线路。早些年,工信部在没有强制要求运营商之间高速互联互通之前,都是相互掐脖子。形成南方电信、北方联通的格局。南方电信用户访问北方联通的站点,就会表现为不太流畅。后来工信部强制要求不限速,现在这样的问题已经少了很多。

路由复测的一般方法(入站负载均衡HillstonesmartDNS实现)(2)

但从用户体验来讲,最优的方式依旧是电信用户访问电信的线路,这样才不会经过过多的路由设备。另外还有一个优势是当某条或者某几条线路down了,只要保障有一条线路在线,就不会对业务造成影响。早些年实现方式不外乎以下几种:

1.BGP多线接入。我们看到IDC广告的时候,都是这么宣传的。但从成本来讲,一般用户负担不了,而且技术的维护要求比较高。

2.用户手动选择。在我们访问站点的时候,首页会有电信、移动、联通等线路的选择。用户根据自己的线路选择相应的服务器。

路由复测的一般方法(入站负载均衡HillstonesmartDNS实现)(3)

其实主要是两种思路,一个是让用户手动选择;一个是根据用户的源地址判断所属ISP,自动分配对应ISP的地址。对于第二种方式,还可以变通下。我们可以把ISP的路由表预先存储在设备内部,而不再需要BGP路由更新通告过来。Hillstone产品即是使用的ISP路由表 smartDNS的解决方案。相比较之前的外置盒子智能DNS解决方案,又节约了一大笔费用。本次实现的拓扑图如下:

路由复测的一般方法(入站负载均衡HillstonesmartDNS实现)(4)

目前本数据中心内有电信、移动、联通三条线路接入。

内部的业务服务器处在三层交换机后面,使用10.10.10.0/24的地址段。

我们的需求是外部互联网电信用户,访问www.dcxxx.com.cn业务的时候返回218.x.x.26的地址。

移动用户访问www.dcxxx.com.cn的时候,返回36.x.x.98的地址。

实现入站负载均衡,主要需要配置Hillstone防火墙、域名解析委派两部分内容。

1.Hillstone防火墙部分

Hillstone防火墙目前主要分为5.0/5.5两个大版本。

本次主要讲解5.5版本。5.0稍微有一点不一样。

基础配置略过不再表。主要包含接口、路由、SNAT、DNAT、policy等配置。

A.配置域名表

路由复测的一般方法(入站负载均衡HillstonesmartDNS实现)(5)

路由复测的一般方法(入站负载均衡HillstonesmartDNS实现)(6)

这边的“域名配置”需要填写和业务相关的域名。

B.上传ISP路由表

针对不同的接入运营商,上传匹配的路由表。

路由表内容可以找400获取。有需要的也可以发邮箱。

我已经上传好的路由表截图:

路由复测的一般方法(入站负载均衡HillstonesmartDNS实现)(7)

下面两个是设备出厂自带的。user-xxx是为不同运营商自定义的名称、表项。

打开上传的路由表内容,其实也就是一些地址段。

只不过这个地址段是手工指定的。因此也是可以编辑的。

路由复测的一般方法(入站负载均衡HillstonesmartDNS实现)(8)

C.添加smartDNS规则表

路由复测的一般方法(入站负载均衡HillstonesmartDNS实现)(9)

路由复测的一般方法(入站负载均衡HillstonesmartDNS实现)(10)

添加好的内容如下:

路由复测的一般方法(入站负载均衡HillstonesmartDNS实现)(11)

这个域名表的意思是,当用户从0/0接口进来,使用电信的源地址过来后,返回218.x.x.26。当telcom_track监测对象有效的时候。

我们有三条ISP线路,先配置两条线路用来测试。

监测对象主要是用来判断当前线路是否正常。判断方法主要有如下几种:

路由复测的一般方法(入站负载均衡HillstonesmartDNS实现)(12)

一般采用ping或者ARP的方式探测网关是否有效。

ISP线路失效的情况最直接的表现是网关异常,而不是接口down。

当前环境有三条线路,所以最终是有三个smartDNS规则表。

命令行示例:

llb inbound smartdns "mytest"

domain "www.dc-is.com.cn"

IP 36.x.x.98 isp "user-mobile" interface "ethernet0/1" weight 1

ip 218.x.x.26 isp "user-telecom" interface "ethernet0/0" weight 1

ip 221.x.x.130 isp "user-unicom" interface "ethernet0/2" weight 1

exit

track "telcom_track"

icmp 218.x.x.25 interface ethernet0/0 src-interface ethernet0/0

exit

interface ethernet0/0

zone "telcom"

monitor track "telcom_track"

track对象另外两条线路的参照上面配置

2.域名解析部分

进入www.dcxxx.com.cn域名服务提供商的“解析”管理页面,进行配置。

本次以阿里dns配置为例:

A.A记录配置

路由复测的一般方法(入站负载均衡HillstonesmartDNS实现)(13)

我们配置三条A记录,主机记录都使用ns.dcxxx.com.cn

解析线路默认

记录值分别填写三个ISP的防火墙接口地址

B.NS记录配置

路由复测的一般方法(入站负载均衡HillstonesmartDNS实现)(14)

数据访问流程是这样的。当互联网用户发起一个访问www.dcxxx.com.cn请求的时候,首先查询本地DNS,然后再查找阿里的www.dcxxx.com.cn域名。由于阿里DNS配置了域名委派,所以查询再发送到Hillstone防火墙。Hillstone防火墙根据用户的源IP,以及smartDNS规则表,返回相应的IP。用户获得域名对应的IP之后,发起三次握手,然后再进行数据的传输等一系列后继过程。

测试:

测试网站测试:

路由复测的一般方法(入站负载均衡HillstonesmartDNS实现)(15)

实际线路测试:

路由复测的一般方法(入站负载均衡HillstonesmartDNS实现)(16)

路由复测的一般方法(入站负载均衡HillstonesmartDNS实现)(17)

注意事项:

1.smartDNS规则表的返回IP必须是DNAT表项中的地址(和接口IP一致的情况较多)。要不然返回个没业务的IP,没什么用处

2.当前测试的是www.dcxxx.com.cn的业务,如果有更多的业务则需要添加更多的规则表。

如果返回地址是一样的,则可以在当前域名表添加内容,如mail.dcxxx.com.cn。

返回地址不一样,则需要新建域名表,新建smartDNS规则。

3.如果源地址是我们ISP路由表之外的地址,Hillstone设备会把有效的A记录全部返回给用户,一次最多返回16条。然后PC再根据规则选择一个。

4.三条线路都正常的情况下,经过http://ping.chinaz.com测试,实际环境测试,确实和我们设计相符合。在某条线路失效的情况下,防火墙能够立即感知到异常,会将相应的smartDNS表项设置为失效。但是在用户端,有可能并不能够马上切换。有可能还会返回失效线路的IP。主要原因是DNS服务器之间相互更新需要一段时间。可以使用ipconfig/flushdns强制更新。

5.5.0版本需要在在接口的高级配置中启用“ISP动态探测”

路由复测的一般方法(入站负载均衡HillstonesmartDNS实现)(18)

命令行:

interface ethernet0/0

llb-outbd-prox-route

感谢阅读!欢迎各位大佬拍砖!

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页