内容分发网络(Content Delivery Network, CDN)其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘",使用户可以就近取得所需的内容,解决Internet网络拥塞状况,提高用户访问网站的响应速度。服务器负载均衡是CDN的关键技术,一般有专用的硬件负载均衡器和软件负载均衡器两种实现方式,但是硬件负载均衡器存在价格高昂而软件负载均衡又存在性能差的缺点。
ConnetOS交换机支持具有一致性Hash的负载均衡,在CDN场景下,不但可以作为缓存服务器的大密度高带宽的接入TOR,同时还可以作为高性能的负载均衡器。相较于专用的硬件和软件的负载均衡器,采用TOR实现负载均衡可以降低成本、提高性能、提高稳定性、简化网络拓扑及减小运维难度等优势。
实现原理
一个缓存节点下的多台服务器都用一个相同的虚拟IP对用户提供服务,在TOR交换机上建立到这个VIP的ECMP路由,这样TOR就可以对多台缓存服务器的流量实现负载均衡。
TOR交换机与多台CDN缓存服务器相连,在需要负载均衡的服务器的回环地址上配置相同的虚拟IP地址VIP,这样所有的服务器都能接收和响应目的IP为VIP的请求。TOR交换机通过静态配置或者动态路由协议建立起到CDN节点服务器VIP的路由,这些目的地址为VIP的路由组成等价路由,这样TOR交换机就可以实现到VIP的负载均衡。典型的CDN网络拓扑如下所示。
实现方案
实现TOR对多台服务器负载均衡方案的核心在于TOR上建立到服务器VIP的ECMP路由,通过配置TOR和服务器即可实现。有两种配置方案:
- 静态路由配置
- OSPF动态路由配置
静态路由和OSPF动态路由两种配置方案的比较如下所示:
静态路由配置 | OSPF动态路由 | |
优点 | 易于配置 无需安装Quagga |
扩展服务器时不需要配置TOR,仅配服务器即可 |
缺点 | 扩展服务器时需要配置TOR | 需要熟悉OSPF及Quagga的使用,学习和运维成本高 |
从表中可以看出两种方案各有优缺点,需要根据实际的应用场景比如网络的规模做权衡而采用适合的方案。
效果验证
从te-1/1/1打入流量,在TOR交换机上抓取端口te-1/1/2到te-1/1/6的egress流量。30条流量均匀的分配到了ECMP的5条path上,很好的实现了负载均衡。测试分别依次down掉端口te-1/1/2到te-1/1/4查看部分服务器链路断开时流量的负载均衡与一性hash是否正常,然后分别up之前down的端口查看链路故障恢复时流量的负载均衡情况。下表用源IP表示流显示了5条path上的测试结果:
te-1/1/2 | te-1/1/3 | te-1/1/4 | te-1/1/5 | te-1/1/6 | |
---|---|---|---|---|---|
5条path负载均衡 (up te-1/1/2) (up te-1/1/3) (up te-1/1/4) (up te-1/1/5) (up te-1/1/6) |
10.0.0.17 10.0.0.18 10.0.0.21 10.0.0.22 10.0.0.24 10.0.0.26 |
10.0.0.4 10.0.0.6 10.0.0.8 10.0.0.12 10.0.0.28 10.0.0.30 |
10.0.0.1 10.0.0.3 10.0.0.19 10.0.0.23 10.0.0.25 10.0.0.27 |
10.0.0.2 10.0.0.11 10.0.0.15 10.0.0.16 10.0.0.20 10.0.0.29 |
10.0.0.5 10.0.0.7 10.0.0.9 10.0.0.10 10.0.0.13 10.0.0.14 |
4条path负载均衡 (down te-1/1/2) (up te-1/1/3) (up te-1/1/4) (up te-1/1/5) (up te-1/1/6) |
10.0.0.4 10.0.0.6 10.0.0.8 10.0.0.12 10.0.0.24 10.0.0.26 10.0.0.28 10.0.0.30 |
10.0.0.1 10.0.0.3 10.0.0.19 10.0.0.23 10.0.0.25 10.0.0.27 |
10.0.0.2 10.0.0.11 10.0.0.15 10.0.0.16 10.0.0.18 10.0.0.20 10.0.0.22 10.0.0.29 |
10.0.0.5 10.0.0.7 10.0.0.9 10.0.0.10 10.0.0.13 10.0.0.14 10.0.0.17 10.0.0.21 |
|
3条path负载均衡 (down te-1/1/2) (down te-1/1/3) (up te-1/1/4) (up te-1/1/5) (up te-1/1/6) |
10.0.0.1 10.0.0.3 10.0.0.6 10.0.0.12 10.0.0.19 10.0.0.23 10.0.0.25 10.0.0.27 |
10.0.0.2 10.0.0.4 10.0.0.11 10.0.0.15 10.0.0.16 10.0.0.18 10.0.0.20 10.0.0.22 10.0.0.24 10.0.0.29 10.0.0.30 |
10.0.0.5 10.0.0.7 10.0.0.8 10.0.0.9 10.0.0.10 10.0.0.13 10.0.0.14 10.0.0.17 10.0.0.21 10.0.0.26 10.0.0.28 |
||
2条path负载均衡 (down te-1/1/2) (down te-1/1/3) (down te-1/1/4) (up te-1/1/5) (up te-1/1/6) |
10.0.0.2 10.0.0.4 10.0.0.11 10.0.0.12 10.0.0.15 10.0.0.16 10.0.0.18 10.0.0.20 10.0.0.22 10.0.0.24 10.0.0.25 10.0.0.27 10.0.0.29 10.0.0.30 |
10.0.0.1 10.0.0.3 10.0.0.5 10.0.0.6 10.0.0.7 10.0.0.8 10.0.0.9 10.0.0.10 10.0.0.13 10.0.0.14 10.0.0.17 10.0.0.19 10.0.0.21 10.0.0.23 10.0.0.26 10.0.0.28 |
|||
3条path负载均衡 (down te-1/1/2) (down te-1/1/3) (up te-1/1/4) (up te-1/1/5) (up te-1/1/6) |
10.0.0.1 10.0.0.3 10.0.0.6 10.0.0.12 10.0.0.19 10.0.0.23 10.0.0.25 10.0.0.27 |
10.0.0.2 10.0.0.4 10.0.0.11 10.0.0.15 10.0.0.16 10.0.0.18 10.0.0.20 10.0.0.22 10.0.0.24 10.0.0.29 10.0.0.30 |
10.0.0.5 10.0.0.7 10.0.0.8 10.0.0.9 10.0.0.10 10.0.0.13 10.0.0.14 10.0.0.17 10.0.0.21 10.0.0.26 10.0.0.28 |
||
4条path负载均衡 (down te-1/1/2) (up te-1/1/3) (up te-1/1/4) (up te-1/1/5) (up te-1/1/6) |
10.0.0.4 10.0.0.6 10.0.0.8 10.0.0.12 10.0.0.24 10.0.0.26 10.0.0.28 10.0.0.30 |
10.0.0.1 10.0.0.3 10.0.0.19 10.0.0.23 10.0.0.25 10.0.0.27 |
10.0.0.2 10.0.0.11 10.0.0.15 10.0.0.16 10.0.0.18 10.0.0.20 10.0.0.22 10.0.0.29 |
10.0.0.5 10.0.0.7 10.0.0.9 10.0.0.10 10.0.0.13 10.0.0.14 10.0.0.17 10.0.0.21 |
|
5条path负载均衡 (up te-1/1/2) (up te-1/1/3) (up te-1/1/4) (up te-1/1/5) (up te-1/1/6) |
10.0.0.17 10.0.0.18 10.0.0.21 10.0.0.22 10.0.0.24 10.0.0.26 |
10.0.0.4 10.0.0.6 10.0.0.8 10.0.0.12 10.0.0.28 10.0.0.30 |
10.0.0.1 10.0.0.3 10.0.0.19 10.0.0.23 10.0.0.25 10.0.0.27 |
10.0.0.2 10.0.0.11 10.0.0.15 10.0.0.16 10.0.0.20 10.0.0.29 |
10.0.0.5 10.0.0.7 10.0.0.9 10.0.0.10 10.0.0.13 10.0.0.14 |
根据统计结果可知,当一条或多条链路断开后,这些链路上的流量被重新均分到剩余在位的链路上,而当链路重新恢复后,原来属于该链路的流量又重新回到这条链路上。这样可最大限度保证服务器之间的负载均衡,并且在正常链路上的业务不受其它链路的影响,业务不会中断即验证了TOR支持一致性Hash的特性。
小结
ConnetOS交换机是CDN场景的理想TOR和负载均衡器,具有:1.44Tbps的交换容量、32个ECMP最大等价路径数、最多32000个路由数目。根据本文提供的方案,ConnetOS交换机可以很方便的为缓存服务器提供负载均衡功能,并且具有一致性Hash的特性。该方案还对节约成本、提升性能及减少运维工作量都有很大的帮助。