3.1数据中心的服务集成
如果离开诸如防火墙、SLB等网络服务的支持,数据中心将无法实现SOI。在服务汇聚层实现防火墙和负载均衡器的集成非常合适,因为服务汇聚层是数据中心层2和层3自然的分界线,而且这些智能服务设备还可以在接入层通过多个交换机实现共享。有两种方式可以实现防火墙和SLB的集成:
将单独的服务汇聚层交换机当做外部服务机箱使用,以容纳防火墙及SLB模块。
使用独立辅助设备。
本书只讨论前一种方法。
一种部署服务机箱的方法是按照如图3-1所示的主/从机模式,一台作为活动服务机箱,其他服务机箱备用,活动机箱提供所有服务数据流的主要路径,当活动机箱不可用时则由备机提供备份路径。图3-1中汇聚1和汇聚2采用了增强以太网扩展,将服务机箱背部连接至第2章中提到的统一DC光纤上。
说明:Cisco Catalyst 6500 系列交换机可以看成服务机箱的样例,它所包含的防火墙服务模块(Firewall Services Module,FWSM)相当于防火墙,应用控制引擎服务模块(Application Control Engine Service Module,ACESM)则类似SLB。Cisco Nexus 7000系列交换机可以看成汇聚1和汇聚2的样例。
当我们谈到设备虚拟化,服务机箱模式和独立辅助设备方法基本相似,只是服务机箱采用了服务模块插槽法,而独立设备模式则主要依靠外部物理设备实现管理。为什么防火墙和SLB的虚拟化很重要?因为单独的防火墙或者SLB无法实现资源、配置以及应用之间的相互隔离。可以将这些设备部署在工作区内来减缓我们之前所提及的限制。当然,采用这类方法也会引起其他的问题,例如,物理设备杂乱无章、设备和资源的使用效率下降等,这时虚拟化就显得非常重要,可以通过虚拟化技术满足并减少各种限制。服务设备实现虚拟分区和虚拟上下文有助于:
资源、配置及应用相互间的隔离
防止物理设备混乱
通过更好地利用设备资源增强资源管理
为实现云IaaS提供基于多租户形式的网络服务
详细的防火墙及SLB内部工作机制已经超出本书讨论范围,本书主要探讨通过虚拟环境(虚拟设备上下文),使这些设备能够以多租户形式支持云IaaS。
3.1.1防火墙虚拟化
为了与服务器虚拟化保持一致,物理防火墙应该具备可虚拟化的能力,或者能够被划分至不同的(设备)上下文中,这样虚拟防火墙数量就能够随VM数量的增长而增长。从云安全角度来说,VM就像是物理服务器,而防火墙必须能够为VM提供足够的安全防护,如同保护普通IP主机一样。虚拟防火墙之间需共享物理防火墙实体的同一组资源,并且要能够像实际物理防火墙一样工作,因此从根本上需要进行一些适当的资源管理。资源管理给不同的上下文评定等级以限制在不同上下文中资源的使用,每一个上下文则根据自己的等级使用相应的资源。
图3-2展示了一个虚拟服务器集群(实际为一台ESX服务器主机),该服务器集群连接到一个防火墙,由防火墙上下文为不同VM提供各种各样的虚拟防火墙保护。虽然不同的防火墙环境彼此之间并没有完全分隔,但仍需依据相应的规则和顾客特点,例如多租户环境的特殊要求,保持一定的隔离性。
防火墙模式
如图3-3所示,按配置方式不同,防火墙可分成路由模式和透明模式两类。在路由模式下,防火墙被当做网络第3层的设备,它能够支持来自不同子网的接口并完成互联网络间的地址转换(Network Address Translation,NAT)。
在透明模式下,防火墙相当于网络第2层而非第3层的设备,也不再有路由跳数,因此透明模式下,防火墙不需要重新设置地址,就可以很容易地被安装到一个现成网络中。由于没有复杂的路由模式,也降低了故障发生的概率,使得防火墙的维护也变得相对简单。
每一个虚拟上下文中,防火墙内部连接的是同一个网络,外部则连接不同的端口,这样的连接对用户而言是透明的。防火墙可以同时支持多对这样的内外接口,就像一个桥的集合,每一桥组连至不同的网络。每一桥组需要一个指定的IP地址,透明防火墙将此地址当成从桥组发出来的包的源地址。指定地址必须属于所连接网络的子网范围内,有时透明模式也被称为“线缆中的块”( Bump in the Wire)模式。
说明:一个FWSM模式既可以支持桥模式也可以支持路由模式,但不能同时支持两种,桥所同时支持的接口对数最大不超过8。在透明模式下,不同虚拟上下文中的接口不能互享,因此在配置成透明模式时,不同的虚拟上下文要分别使用不同的接口。
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更使得这些工作的实施变得更加简单。
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路由连接了内外子网,上行(外部)VLAN 80和服务器群90(内部)属于不同的子网。通常,服务的虚拟IP地址属于一个可路由的公开子网范围,而实际服务器则使用私有IP子网。这种模式使得每个服务器组都可以连接多个子网。SLB将来自外部子网的包按内部子网的MAC地址转发,实际服务器的默认网关则被配置成采用SLB内部接口的地址。
说明:在一个单独的ACESM环境中,没有对桥接或路由接口数量的限制,一个ACESM可以使用桥接模式连接两个接口,而同时使用路由模式连接其他接口。
SLB的单臂模式
图3-6是对SLB单臂模式的说明。SLB单臂模式并不是直接匹配到传输路径上,这样的带外数据方式能够支持扩展,而带内客户请求则通过路由访问SLB的虚拟IP地址。SLB可以通过计算得出应该将请求包发送给哪一个实际的服务器IP地址。
使用单臂模式最需注意的问题就是返回流量也需要经过“离线”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或者子网内才行。