目前,许多厂商推出了专用于平衡服务器负载的负载均衡器,如F5 Network公司的BIG-IP,Citrix公司的NetScaler。F5 BIG-IP LTM 的官方名称叫作本地流量管理器,能够作4-7层负载均衡,具备负载均衡、应用交换、会话交换、状态监控、智能网络地址转换、通用持续性、响应错误处理、 IPv6网关、高级路由、智能端口镜像、SSL加速、智能HTTP压缩、TCP优化、第7层速率整形、内容缓冲、内容转换、链接加速、高速缓存、 Cookie加密、选择性内容加密、应用攻击过滤、拒绝服务(DoS)攻击和SYN Flood保护、防火墙—包过滤、包消毒等功能。php
如下是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:apache
点击在新窗口中浏览此图片后端
①、如图,假设域名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访问互联网。浏览器
详细配置步骤:缓存
1、登陆到F5 BIG-IP管理界面: 一、初次使用: ①、打开F5 BIG-IP电源,用一根网线(直连线和交叉线都可)链接F5 BIG-IP的3.1管理网口和笔记本电脑的网口,将笔记本电脑的IP地址配置为“192.168.1.*”,子网掩码配置为“255.255.255.0”。 ②、用浏览器访问F5 BIG-IP的出厂默认管理IP地址https://192.168.1.245或https://192.168.245.245 ③、输入出厂默认用户名:admin,密码:admin ④、点击Activate进入F5 BIG-IP License申请与激活页面,激活License。 ⑤、修改默认管理密码。安全
二、之后登陆: 经过F5 BIG-IP的自身外网IP登陆。 ①、假设设置的F5自身外网IP为61.1.1.2,就能够经过https://61.1.1.2/登陆。 ②、还能够经过SSH登陆,用户名为root,密码跟Web管理的密码相同。服务器
2、建立两个VLAN:internal和external,分别表示内网和外网。 ★建立VLAN演示页面:http://blog.zyan.cc/book/f5/vlan_create.htm ★VLAN列表演示页面:http://blog.zyan.cc/book/f5/vlan_list.htm网络
一、建立VLAN:internal(内网) 在“Network→VLANs”页面点击“create”按钮: ①、Name栏填写:internal(填一个英文名称) ②、Tag栏填写:4093(填一个数字) ③、Interfaces栏:将Available列的“1.1”拉到Untagged列。1.1表示F5 BIG-IP的第一块网卡。架构
二、建立VLAN:external(外网) 在“Network→VLANs”页面点击“create”按钮建立VLAN: ①、Name栏填写:internal(填一个英文名称) ②、Tag栏填写:4094(填一个数字) ③、Interfaces栏:将Available列的“1.2”拉到Untagged列。1.2表示F5 BIG-IP的第二块网卡。
3、建立F5 BIG-IP的自身IP:分别对应internal(内网)和external(外网)。 ★建立自身IP演示页面:http://blog.zyan.cc/book/f5/selfip_create.htm
一、建立自身内网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(默认值)
二、建立自身外网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(默认值)
4、建立默认网关路由 ★建立默认网关路由演示页面:http://blog.zyan.cc/book/f5/routes_create.htm
一、建立默认网关路由 在“Network→Routes”页面点击“create”按钮: ①、Type栏选择:Default Gateway(默认值) ②、Resource栏选择:Use Gateeay...,在其后的输入框填写网关IP地址:61.1.1.1(这里假设此IP为外网网关地址)
5、建立服务器自定义健康检查 ★建立服务器自定义健康检查演示页面:http://blog.zyan.cc/book/f5/monitors_create.htm
一、建立自定义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栏填写:(填写对应的返回字符串,默认不填写)
6、建立服务器池(pool) ★建立服务器池演示页面:http://blog.zyan.cc/book/f5/pools_create.htm
一、建立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.十一、192.168.1.12以及它们的端口80
二、建立第一组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.2一、192.168.1.22以及它们的端口80
三、建立第二组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.2三、192.168.1.24以及它们的端口80
7、建立供七层负载均衡使用的Profiles配置 ★建立Profiles演示页面:http://blog.zyan.cc/book/f5/profiles_create.htm
一、建立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无需设置此项)
注:在此设置页面中,还有压缩等优化功能,能够根据须要进行设置。
8、建立iRules规则 ★建立iRules规则演示页面:http://blog.zyan.cc/book/f5/irules_create.htm
一、建立iRules规则:irules_apache 在“Local Traffic→Profiles”页面点击“create”按钮: ①、Name栏填写:irules_apache(填一个英文名称) ②、Definition栏填写如下脚本,将访问的域名为“blog.zyan.cc”,访问的网址以“.htm”结尾,或者以“/read.php”开头的请求所有转到服务器池“pool_apache_irules”: view plainprint? when HTTP_REQUEST {
if {[HTTP::host] equals "blog.zyan.cc" and [HTTP::uri] ends_with ".htm"} {
pool pool_apache_irules
}
elseif {[HTTP::host] equals "blog.zyan.cc" and [HTTP::uri] starts_with "/read.php"} {
pool pool_apache_irules
}
}
9、建立虚拟服务器(Virtual Servers) ★建立虚拟服务器演示页面:http://blog.zyan.cc/book/f5/vs_create.htm
一、以“四层”负载均衡模式建立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
二、以“七层”负载均衡模式建立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
10、建立SNAT安全网络地址转换,让真实服务器可以访问互联网、对外发邮件 ★建立SNAT演示页面:http://blog.zyan.cc/book/f5/snat_create.htm
一、建立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 配置手册(英文详细版)》