配置F5 负载均衡(转)
转自《网络运维与管理》201406-11
配置F5交换机的问题在于,与平时所学的交换机、路由器思路完全不同,拿到设备后,完全不知如何下手。
网络拓扑图如下:
两台web服务器对外提供服务,Ip地址为:192.168.192.10-20/24,外网地址192.168.27.100的80端口进行负载均衡的访问。
F5配置最简单负载均衡,需要配置的参数有Node(节点)、Pool(资源池)、和Virtual Server(虚拟服务器),它们的关系式,先配置Node,然后配置VS。Node是最基本的定义,如每个服务器就是一个Node,负载均衡Pool是一组Node接收和处理流量的一组设备,如web服务器集群。BIGIP系统将客户机流量请求发送到Pool成员中的任一服务器上(Node),然后将Pool与BIGIP系统中的Virtual server相关联,最后,BIGIP系统将进入Virtual Server中流量传输到Pool成员,Pool再传达给Node。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Virtual Server重要参数
F5的核心就是Virtual Server。
1、VS Type
在配置VS时,VS的Type有Performance L4、Standard VS、Forwarding IP 和 Fast Http。一般企业中常见的是前三种,考虑到尽量减少F5负载均衡引入对应用系统的影响,在可能的情况下,建议优先选用Performance L4类型的Virtual Server。在一些必须使用Standard的情况下,必然需要在F5设备上启用7层功能,包括Cookie会话保持、Session ID会话保持、Header会话保持、基于交易的长连接拆分等应用场景。另外,在应用系统需要使用F5实现Syn攻击防护时,可以采用 Standard Virtual Server。在明确后台应用基于HTTP协议时,建议在Standard的基础上关联BIGIP内置的标准HTTP Profile。对于非HTTP协议的应用,需要在VS上关联的其他Profile或者iRules根据实际的业务需求进行确定。
下面对每个VS的类型进行深入的说明:
第一种: Performance L4 模式(4层数据的转发)
Performance L4模式如图2所示,其中TMM只是负责客户端连接的分配和转发,不改变TCP连接中的任何参数,即客户端连接与服务器拦截是1:1的关系。一般企业中常是这种模式,因为转发速率快。但在一些7层数据包的情况下,如HTTP,建议使用Standard VS模式。
第二种 Standard VS模式
在这种模式下,客户端与服务器端的TCP连接完全独立,同时F5默认情况下以客户端源IP和后台建立连接,在打开SNAT的情况下用SNAT地址和后台建立连接。Standard VS的端口永远对外开放,无论后台是否有服务器在工作。也就是说,如果VS开放的端口是80,在Node A和Node B都down的情况下,虚IP的80端口还是可以telnet通的,只不过网页访问不了了。
第三种: Forwarding IP
一般用于内外网连接,没有Pool Member,转发完全取决于本地路由。默认情况下,F5没有路由功能,需要建立一个全0的VS去开启F5的路由功能,其中,如果想控制只有内网可以访问外网,而外网不能访问内网,可以通过调整“VLAN and Tunnel Traffic”参数来实现。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2. VS Profile
VS Profile 是依赖于VS的存在,是对于VS的流量进行格式化处理。如果VS上配置了TCP Profile,那么对于UDP的连接,F5是不会接受的。
tcp参数中Idel Timeout值(多长时间连接里面没有数据流量时就删除连接表)必须要与服务器相配合,否则会出现错误。如果F5上此值为150s,而IIs服务器为300s,就会产生大量错误。
3、 VS里面的Address Translation 和 Port Translation ,默认情况下都是 enabled。
Address Translation的含义是如果外面访问的主机和VS IP不一样,就需要开启此参数,比如VS IP地址是192.168.27.100,真实机器为192.168.27.10,那么需要开启Address Translation,而企业应用中,这参数一般是开启的,除非特殊的上面介绍的Fowarding IP模式不需要开启。
Port Translation 参数的意思是VS地址是192.168.27.100的8080端口对应真实地址的80端口,那么需要开启Port Translation
4、SNAT Pool ???
内网需要访问公网进行NAT转换。当配置SNAT AutoMap的时候,表示请求从哪个VLAN发出去,则SNAT的源地址为VLAN上的SelfIp,比如外网用户(192.168.27.1)访问内网服务器(192.168.192.10),在开启SNAT AutoMap的情况下,访问的源IP将转变为F5的内网SelfIP(192.168.192.2)去访问。当一个vlan上有多个SelfIP存在的时候,SNAT的源地址是在多个SelfIP之间轮询。
5、会话保持
在大多数电子商务的应用系统或者需要进行用户身份认证的在线系统中,一个客户与服务器经常经过多次的交互过程才能完成一笔交易或者是一个请求的完成。由于这几次交互过程是密切相关的,服务器在进行这些交互过程的某一个交互步骤时,往往需要了解上一次交互过程的处理结果,服务器进行下一步操作时需要,就要求所有这些相关的交互过程都由一台服务器完成,而不能被负载均衡器分散到不同的服务器上。
F5 BigIP支持多种的会话保持方式,其中包括:简单会话保持(源地址会话保持)、HTTP Header的会话保持,基于SSL Session ID的会话保持,I-Rules会话保持以及基于HTTP Cookie的会话保持,此外还有基于SIP ID以及Cache设备的会话保持等。下面重点介绍一下基于源地址会话保持和基于HTTP Cookie的会话保持。
源地址会话保持就是基于访问的源地址,如果一直是该IP在访问,则一直定向到一台服务器。比较重要的是会话保持时间,默认是180s,可以根据具体需要进行修改。
但是存在的问题就在于当多个客户是通过代理或者地址转换的方式来访问服务器时,由于都分配到同一台服务器上,会导致服务器之间的负载严重失衡。另外一种情况是客户机数量很少,但每个客户机都会产生多个并发访问,对这些并发访问也要求通过负载均衡器分配到多个服务器上,这时,基于客户机源地址的会话保持方法也会导致负载均衡失效。
这里就出现了第二种会话保持的功能基于Cookie的会话保持,这个常用于HTTP/HTTPs复杂均衡,即一个用户访问一个网站,在客户没有清除Cookie的情况下,F5总会命中同一台服务器,这就防止了比如用户访问网银时,需要跳转页面时,跳转到另外一台服务器上,导致交易失败的情况发生。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6、 One Connect
在使用VS Standard模式,并且一般和Cookie的会话保持一起使用时,One Connect实现连接聚合降低服务器的总连接数。
7、HA 介绍
实现Redundant机制。
两台BigIP 之间的通信机制可以共同两种方式进行:
串口数据线方式:通过互相检测对端的心跳信号,来判断对端设备的工作状态,在每一台BigIP设备内,都有专用的WatchDog芯片来产生心跳信号和检测对端的心跳信号。
网络数据线方式:两台BigIP距离较远的时候采用这种方式。通过System->High Availability 进行修改。当采用网络数学线方式进行心跳线时,需要开启Network Failover,注意Peer Management Address 需要填写Management端口的IP,不管此端口是否连线,而实际控制HA的地址可以在Unicast进行填写。
在启用Network Failover后,可以配置LAN Failsafe的功能,可以使BigIP检测到在相应VLAN没有流量(像对端交换机端口Down掉或者掉电停机)时,F5设备可以即时切换,进入High Availability -> Failsafe -> Vlan failsafe 即可对此进行配置。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
经验总结:
1、拿到F5首先就是要激活,通过向导可以很简单的进行激活,但是记住一定要能上网,最好在上架前完成激活工作。
2、打开浏览器使用https://192.168.1.245 设备管理ip可以登录到F5设备。默认用户名和密码均为admin。
3、创建相应的VLAN,并将接口加入相应的VLAN,Network -> VLANS 。
Name : 设置这个VLAN的名字;
Tag: 保留为空;
Interface:定义Avalilable 中显示的端口有选择性的划分到这个vlan中,指定端口后,单击<< 选人 Untagged 栏即可。
点击 Finished 完成。
4、在划分完VLAN后,即可对每个VLAN进行IP地址的定义,方法如下:点击左侧导航条中的 Networks -> Self IPs。
5、配置路由,点击左侧导航条中的 Networks -> Routes .
Type :定义配置的是默认网关还是静态路由。
Destination: 定义目标网段。
Netmask : 定义目标网段的掩码;
Resource : 定义网关地址。
点击 Finished 完成。
6、Pool 配置:点击左侧导航条中的Local Traffic -> Virtual Servers -> Pools;
Name 定义创建的Pool的名字。
Health Monitors 定义该Pool使用的健康检查机制,此处为TCP。
Load Balacing Method定义该Pool使用哪种负载均衡算法 --我们选用 observed-member(观察法)。
New Members 定义该pool下真实的服务器的IP和Port。
点击 Finished 完成。
7、Virtual Server 配置,Local Traffic -> Virtual Servers,这里面的参数可以参见之前介绍的进行填写,并将管理相应的Pool。并配置相应的F5轮询方式,常用的是轮询(RoundRobin)。
8、配置Monitor 的作用是检查服务器的健康状态,然后关联的相应的Pool,Local Traffic -> Monitors。
9、配置Redundant,这在前面已介绍。