如何在Linux服务器下实现多网卡负载均衡?
还有一种负载均衡方式是在协议内部就支持负载均衡能力,也就是URL交换或者叫七层交换,它提供了一种对访问流量的高层控制手段。Web内容交换技术会检查所有的HTTP报头,根据报头里的信息来做负载均衡决策。比如它能根据这些信息决定怎么为个人主页、图像数据之类的内容提供服务,常见的有HTTP协议里的重定向能力等等。
HTTP是跑在TCP连接最高层的。客户端通过固定的80端口TCP服务直接连到服务器,然后通过这条TCP连接往服务器发一个HTTP请求。协议交换是按内容策略来控制负载的,而不是看TCP端口号,所以不会造成访问流量滞留。因为负载平衡设备要把进来的请求分配给多台服务器,所以它只能在建立TCP连接、并且HTTP请求过来之后才能确定怎么平衡负载。当一个网站的点击率达到每秒上百甚至上千次时,TCP连接、HTTP报头信息的分析还有进程的时延,这些就变得很关键了,必须想尽办法提升这几部分的性能。
其实HTTP请求和报头里有不少对负载平衡有用的信息。我们能从里面知道客户端请求的URL和网页,靠这个信息,负载平衡设备就能把所有图像请求都引到一台图像服务器,或者根据URL的数据库查询内容去调用CGI程序,把请求引导到一台专用的高性能数据库服务器上。如果网络管理员熟悉内容交换技术,他还能根据HTTP报头里的cookie字段来改善对特定客户的服务;要是能从HTTP请求里找出一些规律,还能拿来做各种决策。当然,除了TCP连接表这个问题之外,怎么找到合适的HTTP报头信息、怎么做出负载平衡决策,是影响Web内容交换技术性能的两个重要问题。假如Web服务器已经针对图像服务、SSL对话、数据库事务服务这类特殊功能做过优化,那么在这个层次上做流量控制就能提升网络性能。