F5是非常强大的商业负载均衡器。除了处理性能强劲,以及高稳定性之外,F5还可以通过iRules编写强大灵活的七层路由转发规则,实现web业务的灵活应用。

iRules是基于TCL语法的,每个iRules必须包含事件、命令和逻辑三部分才可以有效运行。

irules常用的逻辑运算符:contains 包含、equals(==) 等于、starts_with 以开始、ends_with 以结束,另外还支持正则表达式,需要复杂的匹配规则也可以使用正则表达式。

以上为F5 irules的基本语法及常用的逻辑运算符,那么今天主要来介绍一下,如何通过编写irules来实现常用的http路由转发。需要注意的是,要通过irules做http的转发处理,Virtual Server必须选择七层负载均衡模式即standard模式,四层负载均衡模式工作在传输层相当于是直通模式,是不会检查以及改变http请求及转发的。

场景一:基于请求的域名转发

由于公网IP有限,通过F5七层负载均衡发布Web应用,可以实现公网IP的收敛,即一个公网IP可以对应多个业务的发布。具体为可以根据请求的域名来做转发。比如说请求者访问A域名,转发到后端A服务器。请求访问B域名,转发到后端B服务器。这个功能,叫做虚拟主机功能,是比较常用的。

例如,现在我有一个公网IP:10.1.1.1,我有两个WEB应用对应的域名为http://news.aaa.comhttp://sports.aaa.com;后端服务器群分别为pool_newspool_sports。那么下面就介绍如何使用irules来实现虚拟主机的功能。

when HTTP_REQUEST {if { [HTTP::host] equals "news.aaa.com" } {pool pool_news} elseif { [HTTP::host] equals "sports.aaa.com" } {pool pool_sports
}
}

以上即为irules的写法,还是比较简单,只需要根据tcl语言的格式,先做个事件声明为http request请求,再通过if else的条件判断语句,客户端通过域名访问网站,会在http请求头的host字段里插入当前访问的域名,F5通过调用iRules规则后,即会检查http头部的host字段来识别请求,逻辑运算符equlas(==)表示等于,就可以实现虚机主机功能。然后就可以根据不同的域名转发到后端相应的应用(pool)中。

场景二:基于请求的URL转发

除了通过二级域名发布不同的业务,然后通过七层虚拟主机的方式转发到对应后端的方式外,还有一个比较常用的就是同一个域名不同的URL来对应不同的应用。比如请求者访问的URL包含A目录,就转发到A服务器;请求访问的URL包含B目录,就转发到B服务器。

例如,我有一个网站,分别有读书跟电影两个频道,用户点击或访问不同的目录即进到不同频道的页面。读书 http://www.aaa.com/read、电影http://www.aaa.com/movie。那么,通过irules可以这么实现。这次用到的是前缀匹配starts_with,就是匹配这个访问路径是从/read开始的,后面任意。比如/read/111/aa.html也是匹配到这个条件。

when HTTP_REQUEST {if { [HTTP::uri] starts_with"/read" } {pool pool_read} elseif { [HTTP::uri] starts_with "/movie" } {pool pool_movie
}
}

场景三:动静分离

在说动静分离之前,说明一下,irules的if else也是可以支持嵌套的方式编写的,这样就可以非常灵活的编写转发规则。那么下面就以结合动静分离的例子来演示下嵌套的方式如何编写。

动静分离的实现,通常是将请求的图片如jpg、png或视频等分发到专门的静态资源服务器如Nginx上,动态页面则分发到tomcat服务器上,从而提升网站的访问效率。下面就举例如何编写irules来实现动静分离。

when HTTP_REQUEST {if { [HTTP::host] equals "www.aaa.com" } {if { [HTTP::uri] contains ".js" or [HTTP::uri] contains ".css" or [HTTP::uri] contains ".jpg"} {pool pool_static_nginx} else {pool pool_aaa_srv}}  elseif { [HTTP::host] equals "www.bbb.com" } {if { HTTP::uri] starts_with"/html"} {pool pool_static_nginx} else {pool pool_bbb_srv}}
}

以上就是以嵌套的形式来编写动静分离的irules,可以看到对应aaa站点及bbb站点,静态资源服务器是共用的pool_static_nginx,而动态资源是转发到对应的后端服务器上。

小结

从以上的介绍及案例,可以看出,F5通过irules可以实现非常强大及灵活的七层转发策略,所举的例子只是irules应用的冰山一角,例子只是日常非常常用的策略,还可以做更多的事情。其实通过nginx或haproxy大部分场景也能够实现,有需要的可以参考进行配置。

F5负载均衡器通过iRules实现http应用的灵活转发相关推荐

  1. F5负载均衡器的功能介绍

    基于庞大的网络结构,集群服务器的使用带来了不少流量等负载问题.那么相对的,负载均衡的技术也应运而生.每一种技术都需要产品的支持,那么现在我们来认识一下F5,是负载均衡器的一种. 那么首先我们先把产品的 ...

  2. f5双机配置_[整理]F5负载均衡器双机切换机制及配置.

    ------------- ------------- F5 负载均衡器双机切换触发机制及配置 1 F5 双机的切换触发机制 1.1 F5 双机的通信机制 F5 负载均衡器的主备机之间的心跳信息可以通 ...

  3. [Linux]F5负载均衡器

    F5负载均衡器是硬件的负载均衡设备 F5配置最简单负载均衡,需要配置的参数有Node(节点).Pool(资源池).和Virtual Server(虚拟服务器),它们的关系是,先配置Node,然后配置V ...

  4. linux f5作用,[Linux]F5负载均衡器

    f5负载均衡器是硬件的负载均衡设备 f5配置最简单负载均衡,需要配置的参数有node(节点).pool(资源池).和virtual server(虚拟服务器),它们的关系是,先配置node,然后配置v ...

  5. F5负载均衡器实施配置文档

          F5负载均衡器实施配置文档 目录 一.         F5负载均衡器详细配置步骤... 2 1.设备上架与加电... 2 2.初始化BIG-IP 3900. 2 2.1.CONSOLE方 ...

  6. was这么做的负载均衡_关于F5负载均衡器+WAS+Oracle 10g集群的方案的若干问题

    本人的项目出现了并发访问量增大.数据库压力增大等问题造成的效率低下的问题,现在初步想将原来的单WAS + 单oracle 的架构改为: 1.在WAS前增加两台F5负载均衡器(一台是冗余的). 2.增加 ...

  7. f5负载均衡导致服务器响应,什么是F5负载均衡器,看完你就明白怎么回事了

    一.前言 在互联网雄起的时代,随着各个网络请求量的不断增大,利用负载分化请求量,从而达到优化硬件负荷量的目的,一般负载分为软件负载和硬件负载,比如软件中使用nginx等工具实现负载均衡,而F5负载均衡 ...

  8. 负载均衡器技术 Nginx VS F5 Big-IP

    对于数据流量过大的网络中,往往单一设备无法承担,需要多台设备进行数据分流,而负载均衡器就是用来将数据分流到多台设备的一个转发器. 目前有许多不同的负载均衡技术用以满足不同的应用需求,如软/硬件负载均衡 ...

  9. 通过负载均衡器+域名实现容灾切换-(9)GSLB典型产品-F5简介

    ======================================== F5和Ngnix的区别&应用 摘自:https://www.cnblogs.com/Lonelydancer/ ...

最新文章

  1. Hybrid App 跨平台热更新方案实践 附带源码
  2. 安卓如何调出软键盘_如何系统学习手机摄影?这张思维导图告诉你
  3. ADO.NET Entity Framework如何:手动配置实体框架项目
  4. Android研发中对String的思考(源码分析)
  5. 关注健康,从现在开始(视力篇)
  6. oracle hcm 发展,甲骨文发布Oracle HCM Cloud云服务 呈现三大亮点
  7. 读书笔记_中国期货市场量化交易(李尉)01
  8. 建立可视化决策平台,“数据化”首当其冲!
  9. 计算机视觉图像去噪原理,图像去噪方法研究进展
  10. LINUX X11剪贴板/clipboard访问C代码范例
  11. SSA ERP LN v6.1
  12. nmake的调用方法
  13. 中国气象数据要注册或交钱才给,咱们就去美国下载免费数据
  14. Mac下nginx的安装记录(亲测可用)
  15. Linux下和编译器、程序的运行、环境变量等相关的常见问题
  16. B Spline(B样条曲线)
  17. 51nod 1535 深海探险【思维+并查集】
  18. VaR模型中的风险因子和估值框架
  19. mac安装WireShark2.0新手教程
  20. 一分钟让你了解什么是CYN

热门文章

  1. Scratch 与C语言实现数据结构静态链表的建立及操作
  2. Android:将鼠标右键点击事件设置为返回功能
  3. catia v5r18 百度云_catia v5r18 64位免费版 附带安装教程
  4. 如何用WGDI进行共线性分析(一点五)
  5. jquery省市县三级联动
  6. 政府引导基金管理平台,携手政府成就资本与产业的“双向奔赴”!
  7. [CF1436A] Reorder
  8. homeassistant core安装方式无HACS插件成功解决(记录)
  9. 【项目笔记_答题器】rp552d usb hid 在seewo win10 设备上启动无法识别
  10. matlab编写数学公式计算,关于MATLAB Function实现数学运算的相关介绍