一、定义:
F5负载均衡器是应用交付网络的全球领导者F5 Networks公司提供的一个负载均衡器专用设备。英文为 F5 BIG-IP LTM。官方名称叫做本地流量管理器,可以做4-7层负载均衡。
二、功能:
负载均衡、应用交换、会话交换、状态监控、智能网络地址转换(DNAT\SNAT)、通用持续性、响应错误处理、IPv6网关、高级路由、智能端口镜像、SSL加速(SSL offload)、智能HTTP压缩、TCP优化、第7层速率整形、内容缓冲、内容转换、连接加速、高速缓存、Cookie加密、选择性内容加密、应用攻击过滤(WAF)、拒绝服务(DoS)攻击和SYN Flood保护、防火墙—包过滤、包消毒等 F5可以通过irule对经过的流量进行捕获,修改,再发送出去。(修改请求、响应的头部消息和body任何地方)
三、关键模块:
1)Node:节点表示部署在内网的物理或逻辑(例如VMWare虚机)服务器的IP地址,除非业务有特殊要求,这里一般不填健康检查;
2)Pool Member:pool member是node上运行的一个服务,用node IP地址和服务端口的组合表示;
3)pool:每个pool都有自己的负载均衡方式;且可选其健康检查。注:健康检查可选择在pool member所属的Node处或pool处
同端口的所有backend服务器
4)virtual server 通常会引导流量至后台的一个应用pool池,每一个virtual server被命中后都会独立的处理客户端请求。virtual server由应用的Virtual IP地址和端口组合而成用来监听客户端的请求
注:多个virtual server可以关联同一个pool,pool member和node;
5)irule配置:irule对单个VS生效,不是全局性配置;
6) self IP: vlan的接口地址。物理self ip只做心跳,浮动self ip做业务流量转发;
四、Virtual server 类型(最重要的概念):
1.Standard
Standard 模式是BIGIP TMOS的Full Proxy结构,在这种结构下,BIGIP对于每一个连接,建立了两个TCP堆栈,分别是client side和Server side。客户端发起的TCP连接,实际上是和BIGIP建立的连接,然后BIGIP才以客户端的源IP地址,和服务器端建立连接。这样,TCP连接就在BIGIP的层面上被中断为两段,BIGIP分别为两段TCP连接去维护TCP状态信息。对于客户端,BIGIP就是一个完整的Socket服务,对于服务器端,BIGIP就是一个标准的客户端socket连接。在抛开TCP的连接层面后,只有真正的数据包才在BIGIP的两个TCP堆栈之间进行转发。这也就是BIGIP可以完成很多非常复杂的处理功能的主要原因。基本上,只要开启了七层处理功能,如HTTP profile,就必须使VS工作在standard模式下。当系统工作在Standard模式下时,如果通过抓包,可以看到数据包在client side 和server side的TCP sequence number都是不一样的。
启用standard的理由:
在一些必须使用Standard的情况下,比如需要在F5设备上启用七层功能,包括cookie会话保持、Session ID会话保持、Header会话保持、基于交易的长连接拆分等应用场景,另外,在应用系统需要使用F5实现Syn攻击防护的时候,可以采用Standard Virtual Server。
在明确后台应用基于HTTP协议时,建议在Standard的基础上关联BIGIP内置的标准HTTP Profile。
对于非HTTP协议的应用,需要在VS上关联的其他Profile或者iRules根据实际的业务需求进行确定。
2. Performance L4 模式(4层数据的转发)
Performance L4模式如图2所示,其中TMM只是负责客户端连接的分配和转发,不改变TCP连接中的任何参数,即客户端连接与服务器拦截是1:1的关系。一般企业中常是这种模式,因为转发速率快。但在一些7层数据包的情况下,如HTTP,建议使用Standard VS模式。 也可以使用WAF功能;
3. Forwarding IP 模式
一般用于内外网连接,没有Pool Member,转发完全取决于本地路由。默认情况下,F5没有路由功能,需要建立一个全0的VS去开启F5的路由功能,其中,如果想控制只有内网可以访问外网,而外网不能访问内网,可以通过调整“VLAN and Tunnel Traffic”参数来实现。 也可以使用WAF功能;
五、工作模式: 全代理(full proxy)和半代理(透明代理)
我们将讨论的第一类代理是半代理。 使用半代理,客户端将连接到代理,并且代理将与服务器建立会话。 然后,代理将使用该信息响应客户端。 在建立初始连接后,其余的流量将直接通过代理到达后端资源。 代理可能会执行L4端口交换,路由或NAT之类的操作,但此时,除了传递流量外,它并没有做任何明智的事情。
基本上,半代理会建立一个呼叫,然后客户端和服务器执行他们的任务。 半代理也可用于直接服务器返回(DSR)。 对于流协议之类的协议,您将进行初始设置,但服务器不会绕过其余连接的代理,而是会绕过代理并直接进入客户端。 这样一来,您就不会在代理服务器上浪费资源,而这些资源可以直接在服务器到客户端之间完成。
另一方面,完全代理可以处理所有流量。完整的代理会创建一个客户端连接以及一个单独的服务器连接,中间有一些缝隙。客户端在一端连接到代理,并且代理与服务器建立单独的独立连接。这是双向双向的。从客户端到服务器端的连接永远不会混合-连接是独立的。这就是我们说BIG-IP是完整的代理体系结构时的意思。
完整的代理智能位于该OSI Gap中。使用半代理,大部分是请求期间的客户端流量,然后执行所需的操作……使用完整的代理,您可以操纵,检查,丢弃并处理双方和内部的流量双向。无论是请求还是响应,您都可以在客户端请求,服务器端请求,服务器端响应或客户端响应上操纵流量。完全代理服务器比半代理服务器具有更多的功能。
通过服务器端的BIG-IP完整代理,可以将其用作反向代理。 客户端从Internet发出请求时,它们将终止于位于应用程序服务器前面的反向代理。 反向代理非常适合传统的负载平衡,优化,SSL卸载,服务器端缓存和安全功能。 如果您知道某些客户端或IP空间是可接受的,则可以将其列入白名单。 与已知的恶意源或不良范围/客户端相同,您可以将其列入黑名单。 您可以在IP层(L4)上执行此操作,也可以将堆栈上移到第7层并控制http / s请求。 或在此处添加BIG-IP ASM策略。 当它检查协议流量时,如果发现某些异常(例如SQL注入)不是应用程序固有的,则可以将其阻止。
在客户端,BIG-IP也可以是转发代理。 在这种情况下,客户端根据出站请求连接到BIG-IP,并且代理代表客户端向外界进行操作。 这非常适合客户端缓存(捕获视频并在本地存储),过滤(阻止某些浪费时间的网站或恶意内容)以及隐私(屏蔽内部资源)以及安全性之类的事情。
您还可以具有一个服务层,例如ICAP服务器,您可以在其中将流量传递到检查引擎,然后再访问Internet。 您可以操纵客户端访问Internet的流量,服务器访问Internet的流量,在平台上本地处理或传递给第三方服务实体。 完整的代理是您在应用程序交付环境中的朋友。