3.1.2 服务器负载均衡及虚拟化
SLB最重要的功能是将来自不同客户端的服务请求分配给当前的活动主机。SLB为每一个服务提供一个虚拟IP(Virtual IP,VIP)地址作为客户端的访问目标。当应答返回至SLB时,真实服务器的原始IP地址就被转换成VIP地址,给客户端的感觉则似乎所有请求都是在同一服务器上完成的。
基于负载和配置准则,SLB可以智能地将网络请求连接到真实服务器(也可以是VM)组成的服务器池中,过重的负载能被分散到多个实际的服务器上,SLB同时还负责监控实际服务器的运行状态和效率,这样当某台服务器需要离线维护,就可以直接从资源池中移出来,而SLB也能够利用剩下的活动服务器提供同样的支持。同理,当有需要时,也可以将新的服务资源扩充到资源池中。这些功能特性增强了DC和应用的可用性,也优化了它们的可扩展性,使SLB成为了DC中重要的集成组件。
但是,随着新的企业应用数量的增加,对SLB的需求也不断上升,因此数十台SLB组合所带来的“蛛网”现象在所难免,这些SLB上跑的可能是少数大型应用,也有可能是上百个小应用程序。如果一台物理设备上同时运行了上百个小应用,那么SLB的配置工作量会变得非常庞大也难以维护,这时在SLB上构建虚拟环境的优势就变得非常明显。图3-4证明了与其同时使用五台SLB物理设备(例如1号SLB一直到5号SLB)来分别管理DC中五个不同的应用(例如1号应用一直到5号应用),不如使用两台SLB就足够搭建5个虚拟环境(2个在SLB11上,另外3个在SLB12上)来管理这五个应用了。这样的整合可以显著降低机箱数量以及相应开销。
在SLB上构建虚拟环境后,同一台SLB可以处理来自不同的组(租客)或业务单元的应用,而不需要增加额外设备。虚拟化效应使得SLB的部署变得灵活而易扩展,同时又降低了单一配置的规模,从而相应地减小了故障处理和维护的难度。在通常情况下,SLB可以实现所有基于IP的设备间的负载均衡,包括防火墙、内存、WAN优化器等,虚拟SLB更使得这些工作的实施变得更加简单。
图 3-4 物理SLB与虚拟SLB上下文整合
SLB桥接模式和路由模式
SLB串联桥接模式的工作方式与防火墙透明模式类似,所起的作用有些类似“线缆中的块”(Bump in the Wire),或者连接服务器群至上行第3层设备(例如路由、第3层交换器、防火墙等)的数据流间的透明桥梁。图3-5上部是对SLB桥接模式的说明。在这种模式下,上行的VLAN和下行服务器群VLAN都位于同一IP的子网范围内,服务器集群中的实际服务器都属于同一个可路由的IP子网,服务器的虚拟IP地址则被处理成相同或不同的子网范围。每一个服务器集群需要一个不同的IP地址,SLB使用一个IP解析协议(Address Resolution Protocal,ARP)表来跟踪真实服务器的MAC地址。普通虚拟IP的MAC地址被转换成实际服务器的特定MAC地址,能够将数据流指向正确的实际服务器。在桥接模式中,实际服务器的默认网关将被配置成使用上行路由接口的IP地址。
图 3-5 SLB桥接及路由模式
图3-5的下半部分是对路由模式的说明。SLB路由连接了内外子网,上行(外部)VLAN 80和服务器群90(内部)属于不同的子网。通常,服务的虚拟IP地址属于一个可路由的公开子网范围,而实际服务器则使用私有IP子网。这种模式使得每个服务器组都可以连接多个子网。SLB将来自外部子网的包按内部子网的MAC地址转发,实际服务器的默认网关则被配置成采用SLB内部接口的地址。
说明:在一个单独的ACESM环境中,没有对桥接或路由接口数量的限制,一个ACESM可以使用桥接模式连接两个接口,而同时使用路由模式连接其他接口。
SLB的单臂模式
图3-6是对SLB单臂模式的说明。SLB单臂模式并不是直接匹配到传输路径上,这样的带外数据方式能够支持扩展,而带内客户请求则通过路由访问SLB的虚拟IP地址。SLB可以通过计算得出应该将请求包发送给哪一个实际的服务器IP地址。
图 3-6 SLB单臂模式
使用单臂模式最需注意的问题就是返回流量也需要经过“离线”SLB,以下是一些用来确保返回流量能够通过SLB的方法:
·源(或客户)网络地址转换(NAT):采用这种方式,客户端源地址将被SLB地址取代,服务器将它的返回结果送至SLB,由SLB重新将目标地址还原成客户端地址后转发数据包。
·策略路由(Policy-based routing,PBR):将一些适合的对外服务器流量以下一跳方式重新定向到SLB上。
如果原始客户IP地址需要应用于客户使用跟踪、安全审计或者类似情况时,则不宜采用源NAT方式。PBR方式可以避免这些问题但也会有其他弊端,例如复杂路由或者异步路由等非负载均衡网络流量,而且基于虚拟路由转发VRF的接口也不支持PBR。如果是VRF联合单臂模式,则只能使用源NAT模式将数据流重新发至SLB。另一方面,单臂模式可以不用处理来自SLB的非负载均衡流量,因为这些流量不需要经过“离线”SLB而可以被直接抛弃,反而提高了单臂模式的效率。
说明:另外一种可以确保在单臂模式下数据也可以返回通过SLB的方法是将默认网关指向SLB而非路由器,不过这样一来SLB的虚拟IP和实际服务器(服务器集群)的地址就必须在同一个VLAN或者子网内才行。