[文章作者:张宴 本文版本:v1.0 最后修改:2008.05.22 转载请注明出自:http://blog.s135.com/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.s135.com被解析到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管理的密码相同。


二、创建两个VLANinternalexternal,分别表示内网和外网。   

★创建VLAN演示页面:http://blog.s135.com/book/f5/vlan_create.htm   

★VLAN列表演示页面:http://blog.s135.com/book/f5/vlan_list.htm
  1、创建VLANinternal(内网)   

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

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

②、Tag栏填写:4093(填一个数字)   

③、Interfaces栏:将Available列的“1.1”拉到Untagged列。1.1表示F5 BIG-IP的第一块网卡。
  2、创建VLANexternal(外网)   

在“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.s135.com/book/f5/selfip_create.htm
  1、创建自身内网IP192.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、创建自身外网IP61.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.s135.com/book/f5/routes_create.htm
  1、创建默认网关路由   在“Network→Routes”页面点击“create”按钮:   

①、Type栏选择:Default Gateway(默认值)   

②、Resource栏选择:Use Gateeay...,在其后的输入框填写网关IP地址:61.1.1.1(这里假设此IP为外网网关地址)


五、创建服务器自定义健康检查   

★创建服务器自定义健康检查演示页面:http://blog.s135.com/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.s135.com/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.s135.com/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.s135.com/book/f5/irules_create.htm
  1、创建iRules规则:irules_apache   在“Local Traffic→Profiles”页面点击“create”按钮:   

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

②、Definition栏填写以下脚本,将访问的域名为“blog.s135.com”,访问的网址以“.htm”结尾,或者以“/read.php”开头的请求全部转到服务器池“pool_apache_irules”:

view plaincopy to clipboardprint?

  1. when HTTP_REQUEST {
  2. if {[HTTP::host] equals "blog.s135.com" and [HTTP::uri] ends_with ".htm"} {
  3. pool pool_apache_irules
  4. }
  5. elseif {[HTTP::host] equals "blog.s135.com" and [HTTP::uri] starts_with "/read.php"} {
  6. pool pool_apache_irules
  7. }
  8. }

[c] view plaincopyprint?

  1. when HTTP_REQUEST {
  2. if {[HTTP::host] equals "blog.s135.com" and [HTTP::uri] ends_with ".htm"} {
  3. pool pool_apache_irules
  4. }
  5. elseif {[HTTP::host] equals "blog.s135.com" and [HTTP::uri] starts_with "/read.php"} {
  6. pool pool_apache_irules
  7. }
  8. }

when HTTP_REQUEST {
  if {[HTTP::host] equals "blog.s135.com" and [HTTP::uri] ends_with ".htm"} {
  pool pool_apache_irules
  }
  elseif {[HTTP::host] equals "blog.s135.com" and [HTTP::uri] starts_with "/read.php"} {
  pool pool_apache_irules
  }
}


九、创建虚拟服务器(Virtual Servers   ★创建虚拟服务器演示页面:http://blog.s135.com/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.s135.com/book/f5/vs_properties.htm   

★修改虚拟服务器演示页面2:http://blog.s135.com/book/f5/vs_resources.htm


十、创建SNAT安全网络地址转换,让真实服务器能够访问互联网、对外发邮件   

★创建SNAT演示页面:http://blog.s135.com/book/f5/snat_create.htm
  1、创建SNATsnat_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访问互联网、对外发邮件。

F5 BIG-IP负载均衡器配置实例与Web管理界面体验的更多相关文章

  1. [转]F5 BIG-IP负载均衡器配置实例与Web管理界面体验

    转载:http://www.zyan.cc/f5_big_ip/ 前言:最近一直在对比测试F5 BIG-IP和Citrix NetScaler负载均衡器的各项性能,于是写下此篇文章,记录F5 BIG- ...

  2. Windows 配置 Aria2 及 Web 管理面板教程

    今天闲来没事,想找点东西折腾下,然后看到个在 Debian 7 x64 系统环境下配置 Aria2 和 Web 管理面板的教程,针对 Linux 服务器用的.但很多人没服务器,也不知道什么是 Aria ...

  3. 从零开始搭建etcd分布式存储系统+web管理界面

    什么是ETCD 随着CoreOS和Kubernetes等项目在开源社区日益火热,它们项目中都用到的etcd组件作为一个高可用.强一致性的服务发现存储仓库,渐渐为开发人员所关注. 在云计算时代,如何让服 ...

  4. ##7.Dashboard web管理界面-- openstack pike

    ##7.Dashboard web管理界面 openstack pike 安装 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ##.Dashboard ...

  5. GeoServer基础教程(二):GeoServer的Web管理界面快速入门

    转载:http://blog.163.com/daimiao_study/blog/static/248923117201542522742373/ GeoServer的控制和管理是基于网页形式,所有 ...

  6. Nginx的Web管理界面收集

    Nginx实在是太强大了!灰度发布.金丝雀发布.负载均衡就只需要简单的几行配置就可以实现,这些特性嗾使微软无法比拟的. 原来Nginx除了使用ngx_http_stub_status_module模块 ...

  7. 小贝_redis web管理界面工具安装

    RedisWEB管理界面工具安装 一.概述 二.文件下载 三.安装过程 一.概述 1.因为redis是基于C/S的方式开发.也就是说,仅仅要满足于redis的client通信要求的,都能够作为redi ...

  8. openstack核心组件——horizon Web管理界面(10)

    一.horizon 介绍: 理解 horizon Horizon 为 Openstack 提供一个 WEB 前端的管理界面 (UI 服务 )通过 Horizone 所提供的 DashBoard 服务 ...

  9. 云计算openstack核心组件——horizon Web管理界面(10)

    一.horizon 介绍: 理解 horizon Horizon 为 Openstack 提供一个 WEB 前端的管理界面 (UI 服务 )通过 Horizone 所提供的 DashBoard 服务 ...

随机推荐

  1. 【转】自动化任务运行器 Grunt 迅速上手

    原文转自:http://blog.jobbole.com/51586/ 这篇文章将带领你用Grunt来提速和优化网站开发的流程.首先我们会简短介绍Grunt的功能,然后我们直接上手,介绍如何用Grun ...

  2. Magento的价格去掉小数点

    Magento的默认情况,价格后面是有小数点的,我们来看下如何正确的来去掉小数点. 1.复制如下路径的文件 app/code/core/Mage/Directory/Model/Currency.ph ...

  3. iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单例)

    iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单例) 实现了以下iOS页面间传值:1.委托delegate方式:2.通知notific ...

  4. 三 JSP 技术

    一 JSP 概述 1. 本质:在 HTML 语言中混合 Java 程序代码,由服务器端 Java 语言引擎解释执行.其中,HTML 负责描述信息显示格式,JSP 负责描述处理逻辑. 2. JSP 代码 ...

  5. (进阶篇)浅谈COOKIE和SESSION关系和区别

    COOKIE介绍 cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie.通过 PHP,您能够创建并取回 coo ...

  6. javascript 字符串方法名调用

    项目中有时候需要通过字符串传递方法名称,供页面调用 var ParameterDefaultCallMethod = Request("ParameterDefaultCallMethod& ...

  7. Linux一些常用软件的源码安装

    Sreen: wget ftp://ftp.gnu.org/pub/gnu/screen/screen-4.0.3.tar.gz .tar.gz cd screen- ./configure make ...

  8. ZSDR100 跑原材料MRP

    *&---------------------------------------------------------------------**& Report ZSDR100*&a ...

  9. 268. Missing Number

    Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missin ...

  10. Codeforces Round #310 (Div. 2) A B C

    A. Case of the Zeros and Ones time limit per test 1 second memory limit per test 256 megabytes input ...