日常是路由交换狗,所以应用交付领域接触的少。最近在某高校测试了某准一线的负载均衡设备,实现了两个异地站点的GSLB和SLB,做一些个人总结。
SLB-Server Load Balance,GSLB-Global Server Load Balance。相对于gslb,slb是一个更被广泛了解的技术,章博士的LVS就是实现该功能的佼佼者。那么gslb是什么,它适用于什么场景,解决了什么样的客户需求呢?
以高校目前的主流网络结构为例:多互联网出口,cernet+N个电信运营商。
1、因为政治正确的原因,高校必须接入cernet,域名和ip地址从cernet申请。
2、因为天朝特色的互联互通问题,绝大多数高校都申请了多条电信运营商线路。
3、不少高校建设了多校区,甚至是异地多校区。各校区有各自独立的互联网出口,异地校区接入运营商的本地网络;服务器计算资源,也在各校区分布式存在。
由此带来了:
1、内网用户出向流量的多链路选择需求。
2、服务器入向流量的多链路选择需求。作为一个常识,用户访问自身接入的运营商内的资源,体验是最好的,因为跨运营商的访问存在互联互通的效率问题。那么,在上述的高校网络结构中,由于域名和地址均属于cernet,因此缺省情况下,无论用户通过哪家运营商接入网络,都只能经由cernet线路访问高校发布的资源,体验当然不是最佳。
3、校区之间的双活或灾备需求。当一校区的互联网出口发生故障,如何将入向流量切换到另一校区。
解决方案:
1、为了解决出向多链路的选择问题,链路负载均衡设备粉墨登场。lb设备帮助内网用户的出向流量智能选择链路,所谓智能,就是通过各种策略的灵活运用,实现多链路之间的流量均衡、互为备份,这一切对于用户端来说是透明的。策略依据包括:基本的链路通断,目的ip的就近性(rtt)、高阶的链路质量(负载、延时等qos指标),等等。
2、第2条和第3条需求的本质都是,如何依据策略,灵活调度服务器的入向流量选路。这里的策略包括,用户优先选择所处运营商的链路访问服务器,入向流量在一站点服务器资源发生故障后自动切换到另一站点,等等。在互联网上,选路由位置决定,位置由IP标记,而IP的通告则利用对DNS记录的操纵,这是GSLB的基本原理。个人觉得这其实是一个很聪明的方法,给dns打了个patch,但不改变整个网络的架构。
具体来讲,gslb有这样几种用法:
1、为服务器在每条出口链路上分配一个公网地址,电信用户解析该服务器域名则返回电信链路的地址,联通用户解析该域名则返回联通链路的地址,这样,不同运营商的用户会通过最佳路径访问该服务器。如果某条链路出现故障,则该链路的解析由其他链路接管,虽然不会是最佳路径,但在故障时至少保证了基本的服务器可达。
2、当存在多个独立站点时,gslb设备监控所有站点的出口链路,和服务器资源。正常情况下,gslb通过dns映射的合理配置,将流量分担到多个站点。如果一站点的服务瘫痪或者出口全部故障,这两种情况都可视为该站点完全不可用,gslb会向公网公告另一站点的ip地址,将入向流量自动切换过去,实现多站点的双活和灾备。
3、应用场景还有很多,不同厂商技术实力的差距体现在策略丰富性的差异上。
任何一个技术都有其应用上的局限性,gslb的问题在于:
1、时延。dns是一个互联网基础架构技术,全球互联网上的dns服务器之间,通过缓存的超时来维持信息一致性,也就是说,某个dns服务器上a纪录的改变要传播到全部的dns服务器,需要在原有纪录在缓存超时之后。测试结果在10分钟左右,虽然比我想象中的数个小时要好很多,但这个数量级的时延,仍然使得gslb不适合于对实时性要求很高的应用场景。
2、策略的精度。依据策略操纵dns的a纪录,公告不同的ip地址来影响选路,需要考虑的是,gslb技术中的基本对象颗粒度是ip地址或tcp 端口。
作为一个技术实用主义者,在我眼里,能解决需求的技术就是可用的技术,有适用场景的技术就是能生存的技术,所以,合理运用,为全球互联网的灵活收敛而奋斗。