具有一定服务器规模的互联网公司为了应对集群服务器管理问题,基本上使用F5负载均衡设备作为流量管理的入口,比如搜狐,新浪,金山等,目前在我们测试环境用的是F5 BIG-IP LTM,生产环境用的是F5 viprion。

  F5 BIG-IP LTM ,中文说法是本地流量管理器,可以做4-7层负载均衡,4层负载均衡功能由F5专门的硬件模块负责,7层负载均衡功能由软件实现。F5负载均衡器具有负载均衡应用交换会话交换状态监控智能网络地址转换通用持续性响应错误处理IPv6网关高级路由智能端口镜像SSL加速智能HTTP压缩TCP优化第7层速率×××内容缓冲内容转换连接加速高速缓存Cookie加密选择性内容加密应用***过滤拒绝服务(DoS)***和SYN Flood保护防火墙—包过滤包消毒等功能


我们最近在做F5负载均衡设备7层路由切换到4层路由,将F5上的url irules规则下放到F5后端的nginx集群,从而充分减轻F5负载均衡的压力,充分发挥F5负载均衡的优势。7层irules规则由于是由F5硬件设备上的软件模拟实现的功能,所以在效率方面没有硬件实现的四层负载均衡的效率高。随着流量增加,七层规则会增加f5设备cpu的负载,尤其是在irules中对正则规则的使用会加剧F5性能的消耗。


 从日常管理中,我们可以总结出F5在处理请求时的结构图:

当一个用户访问www.dianping.com 的时候,首先通过DNS服务器根据我们自己配置的name server服务器解析记录将 www.dianping.com  解析为对应的公网ip地址,比如电信线路的180.153.132.49。用户向180.153.132.49发起访问请求,请求经过网络路由,到达F5设备。

 F5负载均衡的 virtual servers(配置的外网IP和端口)来匹配用户请求中的外网IP和端口号,匹配后再由对应virtual server(比如名称为www.dianping.com,配置了180.153.132.49和80端口的 virtual server )根据自身的资源(irules规则)来匹配用户请求的主机和url部分,根据匹配部分相应的规则然后跳转到对应的pool资源,比如App1 Pool,F5根据pool配置的负载均衡策略将用户的请求分发给某台应用服务器,比如node:ip1。这个是7层负载均衡时规则处理方式,当后端服务器被配置为4层路由分发的时候,F5匹配用户的外网ip和端口后就会根据配置的pool将用户的请求分发到后端的nginx 负载均衡集群中,7层路由分发irules完成的工作就由nginx集群根据nginx跳转规则来完成,负载均衡策略也有nginx来确定。


 

F5请求处理的整体结果图:virtual server(相当于nginx的server name)-----pool(应用池,集群,相当于nginx的upstream)------node(主机或反向代理服务器,相当于nginx 中upstream的server)

wKiom1OFs53RoNmGAAINHLW3nI8289.jpg


snat修改对外请求的来源地址。


wKioL1OFs3Gj0hFnAAF_uZ04-qg490.jpg



F5外联外网交换机,内连内网交换机,同事具有外网ip和内网ip,内网不同网段会有一个内网ip作为内部应用服务器与外部通信的网关。

     wKioL1OFs3DiPnlgAAH0soPJg7M445.jpg



F5的四层负载均衡与七层负载均衡


wKioL1OFs3CioL1cAAGORR_5N24513.jpg


F5的四层负载均衡由硬件芯片处理,不消耗CPU资源,能够处理更大的访问量。在四层负载均衡模式下,真实服务器的默认网关必须指向F5的自身内网IP。四层负载均衡模式,snat设置必须为none.



F5登陆后左边的导航页面,我们使用的F5 BIG-IP LTM和 F5 viprion 设备的界面导航内容是一样的,区别是后者的一些配置语法和界面比较好看了些。


Overview:统计信息的一些预览。

Local traffic:有关内网应用设备的一些配置信息。

Network:有关网络设备的一些配置信息。

system:F5自身的一些系统设置。


wKiom1OGaIjRbFfKAAIC96zfhD8332.jpg



当前F5信息统计图:12个VS,14个pool,33个node。

wKiom1OGZTOwVYxaAALSKtUGWtE625.jpg


F5中vs的列表,以及vs中具体配置:


wKioL1OGZQeQfWutAAHBgOk_X2A808.jpg


wKiom1OGZTPSwhbBAAHQL4nhxBU518.jpg



F5的monitor功能,允许F5对后端服务器进行检测,作为F5对pool中后端机器健康检测的方法。

 

     wKiom1OFtTPC98LdAAM5JmiziPw737.jpg


monitor的列表,可用的健康监测方式:

wKiom1OGZTHwk-TAAASmSG5MuC4345.jpg


创建snat的界面:name是snat的名称,translation是外网出口ip,origin是选择内网哪些ip经过此snat配置。   



wKioL1OGZQSzZYWBAAMHKhV2rhM786.jpg


wKiom1OGZTKhEaXOAALN9a0Hzi0157.jpg


本地流量管理选项中,Profiles选项允许我们配置一些http特性相关的设置。

wKioL1OGZQXiHCYlAALOJyjR2o0175.jpg


wKioL1OGZQexwptGAAS9eGuk24I760.jpg


irules操作界面:irules支持tcl语法,编写比较简单。


wKiom1OGZTHCXH56AALUcnfn3m8851.jpg




F5流量视图:


wKioL1OGZQWxWpwXAASdbmqewjE440.jpg


F5中有关pool的截图:

wKiom1OGZTKxPT-bAAKZj8sZNYM221.jpg


pool中对应某个node节点的配置信息:

wKioL1OGZQWB-ByOAAN9uRHsTmY993.jpg


F5创建内网和外网Vlan:

  1、创建VLAN:beta

  在“Network→VLANs”页面点击“create”按钮:

  ①、Name栏填写:beta(填一个英文名称)

  ②、Tag栏填写:10(填一个数字,作为标记)

  ③、Interfaces栏:将Available列的“1.1”拉到Untagged列。1.1表示F5 BIG-IP的第一块网卡。



F5自身内网和外网IP:

创建方法:

在“Network→Self IPs”页面点击“create”按钮:

  ①、IP Address栏填写:10.1.77.2

  ②、Netmask栏填写:255.255.255.0 

  ③、VLAN栏选择:Beta (填外网Vlan名称)

  ④、Port Lockdown栏选择:Allow Default(默认值)


wKioL1OGZQbQw5CQAASfgQccxCc120.jpg


F5管理配置:

wKioL1OGZQaDqQr_AAQPON61cH0605.jpg


F5的性能展示图,测试环境F5的配置比较低,使用的是1G内存的设备。

wKiom1OGZTOApIywAAYW2To0KrE951.jpg