郭建伟
对于规模较大的企业来说,因为内网用户很多,往往会租用多个运营商的线路,来满足实际的上网需求。这样做的好处有很多,例如当其中某条线路出现问题后,可以利用别的线路上网等。当拥有了多条上网线路后,就会面对如何对其进行有效管理和调度的问题。很多网络厂商推出了对应的AD应用交付设备,可以化繁为简的轻松实现出站负载均衡功能。
实验环境的说明
这里使用深信服的某款AD设备,通过简单的实验,来说明如何实现出站链路的负载均衡。对于该AD设备来说,存在一个网络管理接口,其默认IP包括10.254.254.254和10.252.252.252。该设备提供了多个接口,可以连接不同的网络设备。在本实验环境中,该AD设备的NET1接口配置的IP为200.150.60.0/24网段,连接的是电信线路。将NET2和NET3接口进行聚合绑定,配置的IP为100.68.30.0/24网段,连接的是联通的线路。
使用上述连个接口,连接到运营商提供的路由器上,在该路由器上连接了IP为200.150.6.0/24网段的服务器,表示从内网访问的电信上的目标设备。在该路由器上还连接了IP为100.68.3.0/24网段的服务器,表示从内网访问的联通上的目标设备。在该路由上还连接了IP为150.99.1.0/24网段的服务器,表示需要从内网访问的其他ISP网络上的目标设备。为了实现域名解析,在该路由器上又连接了四台DNS服务器,分别表示电信DNS服务器,联通DNS服务器,其他ISP网络DNS服务器以及根DNS服务器。
因为AD设备的接口数量毕竟有限,为此可以为NET4接口创建两个子接口,分别对应内网中VLAN 10和VLAN 20网段。对于前者来说,对应的是内网中的10.1.1.0/24网段。对于后者来说,对应的是内网中的192.168.1.0/24网段。当然,该接口所连接的交换机端口必须启用Trunk链路,并配置对应的VALN,将内网主机等设备划入对应的VLAN中。当然,这里在AD上启用了端口聚合功能,在对端外网路由器上也需要启用端口聚合功能。
在AD上配置WAN接口
在浏览中访问“https://10.254.254.254”地址,输入账户和密码(默认均为“admin”),在该AD设备管理界面左侧选择“系统配置”→“设备管理”项,在右侧的“WebConsole”面板中可以执行各种Linux网络操作命令。在左侧选择“网络配置”→“网络接口”项,在右侧点击“新建”按钮,选择“WAN”项,点击“下一步”按钮,在接口设置界面(图1)中输入其名称(例如“电信接口”),在“网络接口”列表中选择“NET1”项,在“起始IP”栏中输入“200.150.60.1”,在“掩码/前缀”栏输入“24”,点击“添加”按钮,为NET1接口配置电信IP范围。
在“网关”栏中输入“200.150.60.254”,如果上述地址列表配置的是内网地址,就需要在“对应互联网IP”栏中设置在防火墙所对应的外网实际地址。在“线路带宽”栏中输入实际的上行和下行网络带宽,并合理设置带宽比例(默认为80%)。在“健康检查”栏中选择启用状态检查,启用网关ARP检查,设置有效监视器方式(包括Ping、Http等),設置监视的目标主机等,点击完成按钮,保存针对NET1接口的配置信息。
按照同样的方法,针对NET2和NET3接口进行设置,在“端口聚合”面板(图2)中点击“新建”按钮,输入其名称(例如“聚合端口1”),在“绑定策略”列表中提供了哈希、轮询、802.3ad和冗余双网卡等,这里选择“802.3ad”方式。在“待选”列表中分别选择“NET2”和“NET3”接口,点击“<”按钮,将其添加到聚合列表中。点击完成按钮,创建该聚合端口。在“网络接口”面板中点击“新建”按钮,选择“WAN”项,点击下一步按钮,在接口设置界面中输入其名称(例如“联通接口”),在“网络接口”列表中选择上述聚合口(例如“聚合端口1”),在“起始IP”栏中输入“100.68.30.1”,在“掩码/前缀”栏输入“24”,区域设置与上述基本相同,点击“完成”按钮保存该端口配置信息。
配置子接口,连接内部网络
因为在NET4接口创建两个子接口,所以在“网络接口”界面中打开“VLAN子接口”面板,点击“新建”按钮,输入某个子接口名称(例如“ziport1”),在“网络接口”列表中选择“NET4”接口,在“VLAN ID”栏中输入“10”,点击完成按钮保存配置。按照同样的方法,创建名为“ziport2”的子接口,其对应VLAN 20。在“网络接口”面板中点击“新建”按钮,选择“LAN”项,点击下一步按钮,在接口设置界面中输入其名称(例如“内网接口1”),在“网络接口”列表中选择某个子接口名称(例如“ziport1”),在“起始IP”栏中输入“10.1.1.1.254”,在“掩码/前缀”栏输入“24”,其余设置域上述完全相同,点击完成按钮保存配置。
点击“新建”按钮,选择“LAN”项,点击下一步按钮,在接口设置界面中输入其名称(例如“内部接口2”),在“网络接口”列表中选择某个子接口名称(例如“ziport2”),在“起始IP”栏中输入“192.168.1.254”,在“掩码/前缀”栏输入“24”,其余设置域上述完全相同。值得说明的是,在AD管理界面中,可以对其他的网路设备进行PING探测。但是在默认情况下,其他的网络设备无法对AD设备进行探测。解决的方法是AD设备管理界面左侧点击“网络配置”→“网络安全”项,在右侧的“高级配置”面板中的“WAN口入站路由转发”栏中选择“启用”项,即可摆脱该限制。
出站链路均衡的原理
在本例中,对于内网中名为WinServer1的服务器来说,将其DNS服务器地址指向AD设备的内部接口“ziport1”,该接口地址为10.1.1.254。并在AD设备上配置DNS代理技术,结合AD的智能路由技术,当内网主机访问的外部网络设备属于电信网络时(例如其IP属于200.150.6.0/24网段),则内网数据流量从AD设备的NET1接口发出,该接口使用的链路IP为200.150.60.0/24。AD将内部的网络IP连接通过NAT转换为与上述电信相符的网段。
当内网主机访问的外网主机属于联通网络时(例如其IP属于100.68.3.0/24网段),则内网数据流量从AD设备的经过NET2和NET3聚合后的端口发出,该端口对应的是IP为100.68.30.0/24的链路,同时AD将内部的网络IP连接通过NAT转换为与上述联通相符的网段。当内网主机访问的外网设备不属于电信或者联通的网段,则使用轮询的方法,分别通过AD设备的上述两条链路进行外部访问。
组建简单的DNS架构
在本实验环境中,使用名为dxServer的服务器表示使用电信网络的服务器(其IP为200.150.6.10),与之对应的是名为“sqServer1”的授权DNS服务器(其IP为200.150.2.1)。使用名为wtServer的服务器表示使用联通线路的服务器(其IP为100.68.3.10),与之对应的是名为“sqServer2”的授权DNS服务器(其IP为100.68.2.1)。使用名为“othServer”的服务器表示使用其他网络提供商线路的服务器(其IP为150.99.1.10),与之对应的是名为“sqServer3”的授权DNS服务器(其IP为150.99.2.1)。将名为“ComServer”的服务器作为“.COM”根记录服务器,其IP为139.37.1.1。
在名为dxServer上打开DNS管理控制台,在窗口左侧选择“DNS”→“DNS服务器名称”→“正向查找区域”项,在其右键菜单上点击“新建区域”项,在向导界面中创建名为“dxkd.com”的主要区域。之后选择该区域,在其右键菜单上点击“新建主机”项,在新建主机窗口中添加名称为“srv”,IP为200.150.6.10的A记录,这里的IP为该机的实际IP。为了便于其找到本例中“.COM”根记录服务器,在DNS服务器属性窗口中打开“转发器”面板,点击其中的“编辑”按钮,输入“.COM”根记录服务器的IP,这里为139.37.1.1。
这样,当该机接收到DNS查询请求时,如果其不能解析的话,就可以将其发送给“.COM”根记录服务器。按照相同的方法,针对名为wtServer的服务器创建名为“wtkd.com”的区域,并为其添加名称为“srv”,IP为100.68.3.10的A记录,这里的IP为该机的实际IP。针对名为othServer的服务器创建名为“othkd.com”的区域,并为其添加名称为“srv”,IP为100.68.3.1的A记录,这里的IP为该机的实际IP。同时,分别为其配置转发器,使其可以定位“.COM”根记录服务器。
配置DNS委派域
在名为“ComServer”的服务器上打开DNS管理器,在其中创建一个正向查找区域,其类型为主要区域,名称为“com”。之后选择“com”区域,在其右键菜单上点击“新建委派”项,在向导界面中的“委派的域”栏中输入“dxkd”,在下一步窗口中点击“添加”按钮,在新建名称服务器记录窗口中输入“dxkd.com”,设置其IP为“200.150.2.1”。点击确定按钮,完成委派操作。
按照同样的方法,针对域名为“wtkd.com”的域進行委派,为其设置的IP为100.68.2.1。针对域名为“othkd.com”的域进行委派,为其设置的IP为150.99.2.1。接下来需要针对AD设备,配置DNS委派操作。方法与上述完全一样,针对域名为“xxx.com”的域进行委派,所不同的是,为其配置了200.150.60.1和100.68.30.1两个IP,这样便于实现出入站的负载均衡操作。
这样,就创建了简单的DNS解析架构。例如,在名为dxServer的服务器上打开CMD窗口,执行“nslookup”命令,可以直接解析自身DNS信息。在“>”提示符下输入上述其他域名(例如“srv.othkd.com”),同样可以顺利解析,因为其可以通过“.COM”根记录服务器进行查询。这里为了便于实验说明,需要在“ComServer”的服务器的DNS管理器中打开DNS属性窗口,在“高级”面板中选择“禁用递归”项,让其在处理DNS请求时,只返回对应的NS记录信息,告诉其对应的授权DNS服务器信息,让其再去通过该授权DNS服务器进行解析。
在AD上配置源地址NAT转换
因为内网主机要通过AD设备实现出站负载均衡,所以需要在AD设备上进行源地址NAT转换。这样,就可以让访问电信/联通/服务器的流量分别走电信/联通宽带链路,在AD管理界面左侧选择“网络配置”→“源地址转换”项,点击“新建”按钮,新建一个转换项目,输入其名称(例如“dxnat”),在“出接口”列表中选择上述配置好的接口,例如“电信接口”项目,选择“代理所有的IPV4地址”“使用网口地址”“源IP和目的IP哈希”项,点击完成按钮保存该转换项目。
同理,针对联通创建源NAT转换项目,其名称为“wtnat”,选择的出接口为上述配置好的“联通接口”项。之后需要启用AD设备的DNS代理功能,解析来自不同外网主机发来的DNS解析请求。在AD管理界面左侧选择“网络配置”→“DNS代理”项(图3),在右侧的“网口”列表中选择“电信接口”项,并设置其DNS服务器IP为200.150.2.1。点击添加按钮,将其添加到DNS服务器列表中。之后继续在“网口”列表中点击“联通接口”项,输入其DNS服务器IP为100.68.2.1。这样,AD设备就可以将不同WAN接口传来的DNS请求分别发送不同的DNS服务器。
在AD上配置IP地址集
在“启用DNS代理”栏中选择“启用”项,就可以针对内网主机启用透明DNS代理功能。在“IPv4监听地址”栏中输入“10.1.1.254”,即内网主机使用的DNS服务器地址。在“并发查询”栏中选择“启用”项,提高查询速度。可以根据需要,输入所需的监视域名,这样可以判断DNS服务运行是否正常。其余设置保持默认,点击更新按钮即可。在左侧选择“公共对象”→“IP地址集”项,在右侧可以看到该AD设备预设的IP地址集。这里为了便于说明,创建自己的地址集。
点击新建按钮,在新建地址集界面中输入其名称(例如“dxdizhiji”),输入实验测试用电信地址集,范围从200.150.0.0到200.150.255.255。点击添加按钮,将其导入地址集列表,点击完成按钮保存配置信息。对应的,新建实验测试用电信地址集,其名称为“wtdizhiji”,地址范围从100.68.0.0到100.68.255.255。根据这些信息,当访问电信/联通/服务器时,分别走电信/联通宽带线路,对于其他的访问流量,则实现在上述两条线路的负载均衡。
实现静态就近访问功能
在AD管理界面左侧选择“路由配置”→“智能路由”项,在右侧点击新建按钮,来创建新建路由项目。在“智能路由”面板中输入其名称(例如“dxroute”),在“目的IP地址”列表中选择“ISP地址段”项,在“ISP地址段”列表中选择上述地址集“dxdizhiji”项,在“待选”列表中选择“电信接口”项,点击“<”按钮,将其添加进来。
在“链路选择策略”列表中选择“加权最小流量”项,点击完成按钮保存配置,这样即实现静态就近访问功能,让访问电信的流量直接从NET1接口发出。对应的,创建针对联通的路由南项目,其名称为“wtroute”,在“ISP地址段”列表中选择上述地址集“wtdizhiji”项,并选中“联通接口”项,让访问电信的流量直接从上述聚合端口接口发出。在智能路由列表中双击默认的路由项目,在其属性窗口中的“链路选择策略”列表中选择“轮询”项,这样可以让其余的访问流量按照轮询的方式,在上述两条线路上实现负载均衡。
AD服务器的负载均衡
利用AD设备,不仅可以实现出站线路的负载均衡,还可以实现入站的负载均衡。例如,在上述实验环境中的内网中VLAN 20中存在两台Web服务器,利用AD服务器的负载均衡技术,运行了公司的网站对外提供Web服务。关于AD服务器负载均衡配置方法,主要在AD设备配置界面左侧的“应用负载”列表中进行配置,基本方法是先配置HTTP服务,之后针对电信和联通线路的WAN接口的IP配置IP组,并创建会话保持策略,保证HTTP访问的连贯性。配置节点监控器,来测试内网Web服务器运行状态。将内部的Web服务器地址添加到节点池中,通过新建虚拟服务,針对上述HTTP服务、IP组和节点池创建虚拟服务。AD服务器的负载均衡具体的实现方法,这里限于篇幅不再详述。
出站链路负载均衡原理
假设公司的域名为“www.xxx.com”,当模拟外网的电信用户访问该Web站点时,使用AD设备上的电信线路,来访问网站内网Web服务器。当联通用户访问该Web站点时,使用AD设备上的联通线路,来访问网站内网Web服务器。上述链路的全局IP分别为200.150.60.1和100.68.30.1。对于其他类型的外网用户,则均衡的使用上述两条线路访问Web服务器。这样,当电信用户访问该域名时,会先访问电信DNS服务器,来解析该域名。在本实验环境的DNS架构中,电信DNS是无法解析该域名的,其必然会将请求转发给根服务器,根服务器接收到该请求后,会将“www.xxx.com”的授权DNS信息通过NS记录发送电信DNS服务器,让其到IP为200.150.60.1或100.68.30.1的地址去解析该域名,这是AD设备的WAN端口地址。
AD设备会基于该电信DNS服务器所属的源IP地址特性,将电信线路端口对应地址200.150.60.1发送给电信DNS服务器,再由其返给电信用户,这样电信用户就可以利用该地址,来通过AD设备电线链路,来访问内网中的Web服务器了,对于联通用户来说情况亦然,其可以经由联通DNS服务器,获得AD设备的针对网通端口的地址100.68.30.1,来访问内网Web服务器。对于其他网络用户,则按照轮询的方式,来均衡的使用上述解析地址,分别使用不同的线路,来访问内网Web服务器。
创建虚拟DNS服务
在AD设备管理界面左侧点击选择“智能DNS”→“DNS服务器”项,在右侧的“待选”列表中选择预先配置好的虚拟DNS服务项,点击“<”按钮将其添加进来,点击更新激活DNS服务。在左侧选择“智能DNS”→“虚拟IP池”项,在右侧点击新建按钮,在“本地虚拟IP池”面板(图4)中输入其名称(例如“localipchi”),在“主动监视器”列表中添加合适的监控方式,例如Ping等。在“首选策略”列表中选择“静态就近性”项,在“备选策略”列表中选择“轮询”项。在“虚拟IP列表”栏中选择已经开启的虚拟DNS服务项目。点击“<”按钮将其添加进来。点击完成按钮,保存该虚拟地址池信息。
配置DNS映射
在左侧选择“智能DNS”→“DNS映射”项,点击新建按钮,在“本地DNS映射”面板中输入其名称(例如“yingshe”),在“策略配置”栏中输入域名“www.xxx.com”,点击添加按钮,添加到域名列表中。在“虚拟IP池列表”栏中的“待选”列表中选择上述IP虚拟地址池“localipchi”,将其添加进来。点击完成按钮,保存该DNS映射项目。在左侧选择“智能DNS”→“LDNS集合”项,在右侧点击新建按钮,在“本地LDNS集合”面板中输入其名称(例如“dxldns”),在“地址范围”栏中输入电信网络所属的网段,例如200.150.0.0到200.150.255.255。将其添加到地址列表中。点击完成按钮,保存该集合项目。
管理DNS集合
对应的,针对联通网络所属的网段,创建本地DNS集合项目,其名称为“wtldns”,IP范围从100.68.0.0到100.68.255.255。在左侧选择“智能DNS”→“静态就近性”项,在右侧点击新建按钮,在“虚拟IP地址池”面板中的“虚拟IP池”列表中选择上述“localipchi”虚拟地址池,在“LDNS”列表中选择上述“dxldns”项,在“待选”列表中选择“200.150.60.1”,将其添加到“已选择”列表中。
对应的,在“LDNS”列表中选择上述“wtldns”项,在“待选”列表中选择“100.68.30.1”,将其添加到“已选择”列表中。点击完成按钮保存配置信息。这样,当AD设备收到来自电信的DNS解析时,就会让其利用200.150.60.1地址来访问内网服务器。当AD设备收到来自联通的DNS解析时,就会让其利用100.68.30.1地址来访问内网服务器。