[文章作者:张宴 本文版本:v1.0 最后修改:2008.05.22 转载请注明出自:http://blog.zyan.cc/f5_big_ip]

  前言:最近一直在对比测试F5 BIG-IP和Citrix NetScaler负载均衡器的各项性能,于是写下此篇文章,记录F5 BIG-IP的常见应用配置方法。

  目前,许多厂商推出了专用于平衡服务器负载的负载均衡器,如F5 Network公司的BIG-IP,Citrix公司的NetScaler。F5 BIG-IP LTM 的官方名称叫做本地流量管理器,可以做4-7层负载均衡,具有负载均衡、应用交换、会话交换、状态监控、智能网络地址转换、通用持续性、响应错误处理、IPv6网关、高级路由、智能端口镜像、SSL加速、智能HTTP压缩、TCP优化、第7层速率整形、内容缓冲、内容转换、连接加速、高速缓存、Cookie加密、选择性内容加密、应用攻击过滤、拒绝服务(DoS)攻击和SYN Flood保护、防火墙—包过滤、包消毒等功能。

  以下是F5 BIG-IP用作HTTP负载均衡器的主要功能:
  ①、F5 BIG-IP提供12种灵活的算法将所有流量均衡的分配到各个服务器,而面对用户,只是一台虚拟服务器。
  ②、F5 BIG-IP可以确认应用程序能否对请求返回对应的数据。假如F5 BIG-IP后面的某一台服务器发生服务停止、死机等故障,F5会检查出来并将该服务器标识为宕机,从而不将用户的访问请求传送到该台发生故障的服务器上。这样,只要其它的服务器正常,用户的访问就不会受到影响。宕机一旦修复,F5 BIG-IP就会自动查证应用已能对客户请求作出正确响应并恢复向该服务器传送。
  ③、F5 BIG-IP具有动态Session的会话保持功能。
  ④、F5 BIG-IP的iRules功能可以做HTTP内容过滤,根据不同的域名、URL,将访问请求传送到不同的服务器。



  下面,结合实例,配置F5 BIG-IP LTM v9.x:

  点击在新窗口中浏览此图片

  ①、如图,假设域名blog.zyan.cc被解析到F5的外网/公网虚拟IP:61.1.1.3(vs_squid),该虚拟IP下有一个服务器池(pool_squid),该服务器池下包含两台真实的Squid服务器(192.168.1.11和192.168.1.12)。
  ②、如果Squid缓存未命中,则会请求F5的内网虚拟IP:192.168.1.3(vs_apache),该虚拟IP下有一个默认服务器池(pool_apache_default),该服务器池下包含两台真实的Apache服务器(192.168.1.21和192.168.1.22),当该虚拟IP匹配iRules规则时,则会访问另外一个服务器池(pool_apache_irules),该服务器池下同样包含两台真实的Apache服务器(192.168.1.23和192.168.1.24)。
  ③、另外,所有真实服务器的默认网关指向F5的自身内网IP,即192.168.1.2。
  ④、所有的真实服务器通过SNAT IP地址61.1.1.4访问互联网。



  详细配置步骤:

  一、登录到F5 BIG-IP管理界面:
  1、初次使用:
  ①、打开F5 BIG-IP电源,用一根网线(直连线和交叉线均可)连接F5 BIG-IP的3.1管理网口和笔记本电脑的网口,将笔记本电脑的IP地址配置为“192.168.1.*”,子网掩码配置为“255.255.255.0”。
  ②、用浏览器访问F5 BIG-IP的出厂默认管理IP地址https://192.168.1.245https://192.168.245.245
  ③、输入出厂默认用户名:admin,密码:admin
  ④、点击Activate进入F5 BIG-IP License申请与激活页面,激活License。
  ⑤、修改默认管理密码。

  2、以后登录:
  通过F5 BIG-IP的自身外网IP登录。
  ①、假设设置的F5自身外网IP为61.1.1.2,就可以通过https://61.1.1.2/登录。
  ②、还可以通过SSH登录,用户名为root,密码跟Web管理的密码相同。



  二、创建两个VLAN:internal和external,分别表示内网和外网。
  ★创建VLAN演示页面:http://blog.zyan.cc/book/f5/vlan_create.htm
  ★VLAN列表演示页面:http://blog.zyan.cc/book/f5/vlan_list.htm

  1、创建VLAN:internal(内网)
  在“Network→VLANs”页面点击“create”按钮:
  ①、Name栏填写:internal(填一个英文名称)
  ②、Tag栏填写:4093(填一个数字)
  ③、Interfaces栏:将Available列的“1.1”拉到Untagged列。1.1表示F5 BIG-IP的第一块网卡。

  2、创建VLAN:external(外网)
  在“Network→VLANs”页面点击“create”按钮创建VLAN:
  ①、Name栏填写:internal(填一个英文名称)
  ②、Tag栏填写:4094(填一个数字)
  ③、Interfaces栏:将Available列的“1.2”拉到Untagged列。1.2表示F5 BIG-IP的第二块网卡。



  三、创建F5 BIG-IP的自身IP:分别对应internal(内网)和external(外网)。
  ★创建自身IP演示页面:http://blog.zyan.cc/book/f5/selfip_create.htm

  1、创建自身内网IP:192.168.1.2
  在“Network→Self IPs”页面点击“create”按钮:
  ①、IP Address栏填写:192.168.1.2(填内网IP地址)
  ②、Netmask栏填写:255.255.255.0(填内网子网掩码)
  ③、VLAN栏选择:internal
  ④、Port Lockdown栏选择:Allow Default(默认值)

  2、创建自身外网IP:61.1.1.2
  在“Network→Self IPs”页面点击“create”按钮:
  ①、IP Address栏填写:61.1.1.2(填外网IP地址)
  ②、Netmask栏填写:255.255.255.0(填外网子网掩码)
  ③、VLAN栏选择:external
  ④、Port Lockdown栏选择:Allow Default(默认值)



  四、创建默认网关路由
  ★创建默认网关路由演示页面:http://blog.zyan.cc/book/f5/routes_create.htm

  1、创建默认网关路由
  在“Network→Routes”页面点击“create”按钮:
  ①、Type栏选择:Default Gateway(默认值)
  ②、Resource栏选择:Use Gateeay...,在其后的输入框填写网关IP地址:61.1.1.1(这里假设此IP为外网网关地址)



  五、创建服务器自定义健康检查
  ★创建服务器自定义健康检查演示页面:http://blog.zyan.cc/book/f5/monitors_create.htm

  1、创建自定义HTTP健康检查:monitor_http
  在“Local Traffic→Monitors”页面点击“create”按钮:
  ①、Name栏填写:monitor_http(填一个英文名称)
  ②、Type栏选择:HTTP
  ③、Import Settings栏选择:HTTP
  ④、Interval栏填写:5(表示每5秒钟进行一次健康检查)
  ⑤、Timeout栏填写:16(表示健康检查的连接超时时间为16秒)
  ⑥、Send String栏填写:GET /(也可以根据自己的需求发送其他方法的请求,例如HEAD /或者GET /index.htm)
  ⑦、Receive String栏填写:(填写对应的返回字符串,默认不填写)



  六、创建服务器池(pool)
  ★创建服务器池演示页面:http://blog.zyan.cc/book/f5/pools_create.htm

  1、创建Squid服务器池:pool_squid
  在“Local Traffic→Pools”页面点击“create”按钮:
  ①、Name栏填写:pool_squid(填一个英文名称)
  ②、Health Monitors栏:将第四步创建的自定义HTTP健康检查“monitor_http”由Available列拉到Active列
  ③、Load Balancing Method栏选择:Round Robin(这里选择的负载均衡方式是轮询,也可以选择其他方式)
  ④、New Members栏:先选择New Address,再添加两台Squid服务器的IP地址192.168.1.11、192.168.1.12以及它们的端口80

  2、创建第一组Apache服务器池:pool_apache_default
  在“Local Traffic→Pools”页面点击“create”按钮:
  ①、Name栏填写:pool_apache_default(填一个英文名称)
  ②、Health Monitors栏:将第四步创建的自定义HTTP健康检查“monitor_http”由Available列拉到Active列
  ③、Load Balancing Method栏选择:Round Robin(这里选择的负载均衡方式是轮询,也可以选择其他方式)
  ④、New Members栏:先选择New Address,再添加第一组两台Apache服务器的IP地址192.168.1.21、192.168.1.22以及它们的端口80

  3、创建第二组Apache服务器池:pool_apache_irules
  在“Local Traffic→Pools”页面点击“create”按钮:
  ①、Name栏填写:pool_apache_irules(填一个英文名称)
  ②、Health Monitors栏:将第四步创建的自定义HTTP健康检查“monitor_http”由Available列拉到Active列
  ③、Load Balancing Method栏选择:Round Robin(这里选择的负载均衡方式是轮询,也可以选择其他方式)
  ④、New Members栏:先选择New Address,再添加第二组两台Apache服务器的IP地址192.168.1.23、192.168.1.24以及它们的端口80



  七、创建供七层负载均衡使用的Profiles配置
  ★创建Profiles演示页面:http://blog.zyan.cc/book/f5/profiles_create.htm

  1、创建Profiles配置:profile_http
  在“Local Traffic→Profiles”页面点击“create”按钮:
  ①、Name栏填写:profile_http(填一个英文名称)
  ②、Parent Profile栏选择:HTTP
  ③、Insert XForwarded For栏:如果需要,可以选中方框,选择Enable(在Header头中插入x-forwarded-for标记,以便做七层负载均衡时能够获取用户真实IP,本文中Squid服务器开启了follow_x_forwarded_for allow all,因此F5无需设置此项)

  注:在此设置页面中,还有压缩等优化功能,可以根据需要进行设置。



  八、创建iRules规则
  ★创建iRules规则演示页面:http://blog.zyan.cc/book/f5/irules_create.htm

  1、创建iRules规则:irules_apache
  在“Local Traffic→Profiles”页面点击“create”按钮:
  ①、Name栏填写:irules_apache(填一个英文名称)
  ②、Definition栏填写以下脚本,将访问的域名为“blog.zyan.cc”,访问的网址以“.htm”结尾,或者以“/read.php”开头的请求全部转到服务器池“pool_apache_irules”:


  九、创建虚拟服务器(Virtual Servers)
  ★创建虚拟服务器演示页面:http://blog.zyan.cc/book/f5/vs_create.htm

  1、以“四层”负载均衡模式创建Squid虚拟服务器:vs_squid
  在“Local Traffic→Virtual Servers”页面点击“create”按钮:
  ⑴、General Properties大类下:
  ①、Name栏填写:vs_squid(填一个英文名称)
  ②、Destination栏:选择Host,填写Squid服务器的外网虚拟IP(Virtual IP,简称VIP):61.1.1.3
  ③、Service Port栏填写:80

  ⑵、Configuration大类下:
  ①、Configuration栏选择: Advanced(选择高级模式,这一步很重要)
  ②、Type栏选择:Performance (Layer 4)
  ③、SNAT Pool栏选择:None(注意:这一步很重要,四层模式下,请确保此项选择为None)

  ⑶、Resources大类下:
  ①、Default Pool栏选择:pool_squid

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

  2、以“七层”负载均衡模式创建Apache虚拟服务器:vs_apache
  在“Local Traffic→Virtual Servers”页面点击“create”按钮:
  ⑴、General Properties大类下:
  ①、Name栏填写:vs_apache(填一个英文名称)
  ②、Destination栏:选择Host,填写Apache服务器的内网虚拟IP(Virtual IP,简称VIP):192.168.1.3
  ③、Service Port栏填写:80

  ⑵、Configuration大类下:
  Configuration栏选择: Advanced(选择高级模式,这一步很重要)
  ①、Type栏选择:Standard(标准模式,即七层负载均衡模式)
  ②、HTTP Profile栏选择:profile_http(注意:此项为None时,不能使用iRules规则,因此必须选一个。在此选择第六步创建的profile_http)
  ③、SNAT Pool栏选择:Auto Map(注意:在本文的架构中必须选择,原因如下)
  说明:当其中的一台Squid服务器“192.168.1.11”缓存未命中时,会去访问虚拟IP“192.168.1.3”。如果SNAT Pool选择默认值None,虚拟IP“192.168.1.3”后端的Apache服务器,看到的将是Squid服务器的真实IP“192.168.1.11”。由于Squid和Apache服务器的IP地址属于在同一网段,Apache服务器将无需经过F5网关“192.168.1.2”,直接通过交换机回包给Squid服务器“192.168.1.11”,这样虚拟IP“192.168.1.3”就会收不到回包信息,HTTP请求无法完成。因此,需要选择Auto Map,进行地址转换,让后端Apache服务器看到的是F5的自身内网IP,回包给F5。

  ⑶、Resources大类下:
  ①、iRules栏:将Available列的“irules_apache”拉到Enabled列。
  ②、Default Pool栏选择:pool_apache_default

  ⑷、Apache虚拟服务器──vs_apache创建完成后,如需进行修改,在以下两个配置页完成:
  ★修改虚拟服务器演示页面1:http://blog.zyan.cc/book/f5/vs_properties.htm
  ★修改虚拟服务器演示页面2:http://blog.zyan.cc/book/f5/vs_resources.htm



  十、创建SNAT安全网络地址转换,让真实服务器能够访问互联网、对外发邮件
  ★创建SNAT演示页面:http://blog.zyan.cc/book/f5/snat_create.htm

  1、创建SNAT:snat_all_server
  在“Local Traffic→SNATs”页面点击“create”按钮:
  ①、Name栏填写:snat_all_server(填一个英文名称)
  ②、Translation栏选择:IP Address,并填写SNAT IP地址:61.1.1.4(此项也可以选择Automap,使用F5的自身外网IP作为SNAT IP)
  ③、Origin栏选择:Address List
  ④、Address List栏:①Type栏选择host,填写要访问互联网、对外发邮件的内网IP地址。②或者Type栏选择Network,填写要访问互联网、对外发邮件的网段和子网掩码。
  ⑤、VLAN Traffic栏选择:Enabled on...
  ⑥、VLAN List栏:将Available列的“internal”拉到Selected列。

  注意:真实服务器的默认网关需要指向F5的自身内网IP,即192.168.1.2,才能通过SNAT访问互联网、对外发邮件。



  附1:
  《F5 BIG-IP LTM 配置手册(中文简化版)

  《F5 BIG-IP LTM 配置手册(英文详细版)


  附2:
  使用F5 BIG-IP作为负载均衡器的部分国内网站:

  点击在新窗口中浏览此图片



Tags: , , , , , ,
技术大类 » 系统架构与硬件 | 评论(66) | 引用(0) | 阅读(227961)
sync
2008-5-23 12:07
大连天健也是用F5-BIGIP
沉默的话筒
2008-5-23 13:11
嘿嘿  !F5基本的用 法?BIGIP 1500? 这二个产品偶都压过。相比之下F5还是强于NETXXXXX的。嘿嘿 :-)
4-7层的设备基本的原理都是一新的。F5也只是一个BSD,硬件级的LVS。。。
张宴 回复于 2008-5-23 13:18
BIG-IP 3400 vs NetScaler 9010 企业版
F5 是基于Linux的,NetScaler 是基于BSD的。
F5 的四层走的是硬件芯片,七层走的是软件,NetScaler 全部走的是软件。
我测试的性能也是F5比NetScaler强,在均不使用压缩的情况下,NetScaler比F5消耗更大的带宽。
fei
2008-5-23 15:35
BIG-IP V 4.5是基于BSD的---V9改成基于Linux  2.4了的。目前的稳定版本分别是4.5.14和9.3.1,说实话更新挺慢的。
张宴 回复于 2008-5-23 18:02
Kernel:
Linux 2.4.21-9.3.1.37.0smp
Package:
BIG-IP Version 9.3.1 46.7
Hotfix HF2 Edition
沉默的话筒
2008-5-24 13:43
BIG-IP V 4.5是基于BSD的---V9改成基于Linux  2.4了的。目前的稳定版本分别是4.5.14和9.3.1,说实话更新挺慢的
======================================================同意。。感觉技术支持不够粉强。下面的二、三级分销也越来越多,但技术实力却有些跟不上。如今大家都看上了这个市场。嘿嘿! 现在有些用户还在用4.5 !4.5 和9.x的很概念也发生的变化。
一辉
2008-5-24 15:37
技术实力
这个有点纠结
单干是不行了
dawnh Homepage
2008-5-24 21:53
请问是否知道BIG IP对于DOS或SYN Flood类攻击防御的机制是怎样的?
Timo
2008-5-24 22:42
2.4.21-9.1.2.37.0smp #2 SMP Tue Apr 25 15:38:38 PDT 2006 i686 i686 i386 GNU/Linux



tomcat4.1

config # netstat -an | grep -i list

tcp        0      0 10.10.0.70:4353         0.0.0.0:*               LISTEN      

tcp        0      0 172.16.27.70:4353       0.0.0.0:*               LISTEN      

tcp        0      0 127.1.1.1:4353          0.0.0.0:*               LISTEN      

tcp        0      0 192.168.1.245:4353      0.0.0.0:*               LISTEN      

tcp        0      0 127.0.0.1:6666          0.0.0.0:*               LISTEN      

tcp        0      0 127.0.0.1:80            0.0.0.0:*               LISTEN      

tcp        0      0 :::4352                 :::*                    LISTEN      

tcp        0      0 :::161                  :::*                    LISTEN      

tcp        0      0 ::ffff:127.0.0.1:8005   :::*                    LISTEN      

tcp        0      0 ::ffff:127.0.0.1:8009   :::*                    LISTEN      

tcp        0      0 :::22                   :::*                    LISTEN      

tcp        0      0 :::443                  :::*                    LISTEN      

unix  2      [ ACC ]     STREAM     LISTENING     5378   /var/run/mcp

unix  2      [ ACC ]     STREAM     LISTENING     3348   /var/run/uds_host_wdt

unix  2      [ ACC ]     STREAM     LISTENING     4635   /var/run/uds_sc_led

unix  2      [ ACC ]     STREAM     LISTENING     2618   /var/run/uds_host_chman

unix  2      [ ACC ]     STREAM     LISTENING     4170   /var/run/eventd

unix  2      [ ACC ]     STREAM     LISTENING     9294   /tmp/ssh-Riynob2130/agent.2130

unix  2      [ ACC ]     STREAM     LISTENING     383    /dev/log

unix  2      [ ACC ]     STREAM     LISTENING     5652   /var/agentx/master

unix  2      [ ACC ]     STREAM     LISTENING     938    /var/run/fcgi/iControlPortal

unix  2      [ ACC ]     STREAM     LISTENING     7628   /var/run/uds_bcm56xxd
Timo
2008-5-24 22:44
root@NS-9000# netstat -an | grep -i list

tcp4       0      0  127.0.0.1.3013         *.*                    LISTEN

tcp4       0      0  172.16.27.73.6743      *.*                    LISTEN

tcp46      0      0  *.7776                 *.*                    LISTEN

tcp4       0      0  *.2601                 *.*                    LISTEN

tcp4       0      0  *.3010                 *.*                    LISTEN

tcp4       0      0  127.0.0.1.2600         *.*                    LISTEN

tcp4       0      0  127.0.0.1.4002         *.*                    LISTEN

tcp4       0      0  127.0.0.1.3002         *.*                    LISTEN

tcp4       0      0  127.0.0.1.3020         *.*                    LISTEN

tcp4       0      0  127.0.0.1.8766         *.*                    LISTEN

tcp4       0      0  *.22                   *.*                    LISTEN

tcp46      0      0  *.22                   *.*                    LISTEN

tcp4       0      0  *.80                   *.*                    LISTEN

tcp4       0      0  *.1034                 *.*                    LISTEN

tcp4       0      0  *.27000                *.*                    LISTEN
dd_macle
2008-5-28 15:13
好文,谢谢,收藏。。。。
maiozi
2008-6-2 10:23
确实是好文。但是,我想了解F5对于DSR模式支持怎么样?
grin
iwant
2008-6-2 17:58
现在F5 是均衡器的霸主,国内还有什么产品可以和他媲美吗
metoo
2008-6-11 12:57
非常好的文章!不得不转载了。转载在www.adntech.com,欢迎交流!
另外,如果用BIGIP 9.4以上的版本,就不用那段Rules了,直接用httpclass就可以实现。还有,有关BIGIP用那个操作系统的概念有些不是很完整的。
在BIGIP V9里面有3个系统在运行,如果加上硬件的4层加速就是4个了。
第一个是大家看到的Linux,实际上是用来做管理的。看看这个Linux的内存量,默认只有384M,余下的都给TMM了
第二个是TMM,这个是一个micro kernel。登录到Linux里面,用top命令看看那个占了99% CPU的进程就是了。这个才是专门用来处理流量的。TMM用来管理所有的生产网络流量,接管前面板的所有端口和四层加速芯片,以及主要的CPU资源和内存资源。
第三个是SCCP,这个是用来做带外管理的,在Linux下用命令ssh sccp就可以进去了。你会看到另外一个Linux, SCCP有独立的内存和CF磁盘。只要主机加电就启动了。
第四个就是硬件的四层加速芯片了,这相当于是一个微型的系统,有自己的内存和管理机制。控制包括ASIC和高速CAM表。
so
2008-6-18 01:57
metoo也来了!建议将张宴挖到F5去!
smz0102
2008-9-24 13:11
手里有台F5 Network公司的BIG-IP,但是不会弄
请教如何登陆到管理界面
试了浏览器访问F5 BIG-IP的出厂默认管理IP地址https://192.168.1.245https://192.168.245.245
但是不行,可能是一前有人已经配置过ip了
现在想问这么样才能登陆到管理界面?有其他得管理方法吗?可不可以让F5恢复到出厂配置?
学者
2008-9-27 11:41
学习了!
xi2008wang
2008-10-13 17:59
将F5换成nginx, 完全可以
ayou Email Homepage
2008-10-15 14:32
将F5换成nginx, 完全可以
-------
nginx的功能可能不弱于F5,不过代理模块的性能方面目前还是有差距。。nginx的代理模块性能还不如squid
lili
2008-11-13 14:34
我是专门做F5的,看到这么技术水平高的帖还是第一次,如果有任何F5的需要请联系我
QQ:249993665
msn:maine_lcx@hotmail.com
李小姐:62667646转810
风筝 Email
2008-11-17 10:37
看了这个对大型网站的架构有了一定的了解,谢谢作者的分享。不过还是有些不明白的地方,不知能否给予帮助,最好是再用文字的形式写出来,好让我们这些不是太懂的人了解清楚。

问题一:
这个架构中共有6台服务器(192.168.1.11、192.168.1.12、192.168.1.21-24),想知道这些服务器的IP如何配置如何和这个BIG-IP相结合;

问题二:
如果有数据库服务器的集群,该如何设置呢?
wisespring Email
2008-11-20 22:01
最后配置SNAT网络地址转换以上外网的地方,如下地方应该是61.1.1.4 而不是192.168.1.4吧?
Translation栏选择:IP Address,并填写SNAT IP地址:192.168.1.4(此项也可以选择Automap,使用F5的自身外网IP作为SNAT IP)
张宴 回复于 2008-11-21 09:44
恩,笔误,应该是61.1.1.4,已修正。谢谢指出错误。
分页: 1/4 第一页 1 2 3 4 下页 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]