Tcl为F5 LTM编写iRule

 
  1. 什么是TCL?使用什么开发调试工具?参考资料?
  2. 什么是F5 LTM?
  3. 什么是iRule?
  4. 使用TCLF5 LTM设备写iRule
  5. F5 LTM设备上应用iRule

 

  1.         Tcl("Tool Command Language",“工具命令语言”)一种 脚本语言。 由John Ousterhout创建,关于TCL的历史可以参考:源文档 <http://www.cnblogs.com/me-sa/articles/HistoryofTcl.html>

    TCL学,功能很强大。TCL经常被用于 快速原型开发,脚本编程, GUI和测试等方面。TCL念作 "tickle". Tcl的特性包括:

    * 任何东西都是一条命令,包括语法结构(for, if等)。

    * 任何事物都可以重新定义和重载。

    * 所有的数据类型都可以看作字符串。

    * 语法规则相当简单

    * 提供事件驱动给Socket和文件。基于时间或者用户定义的事件也可以。

    * 动态的域定义。

    * 很容易用C, C++,或者Java扩展。

    * 解释语言,代码能够动态的改变。

    * 完全的Unicode支持。

    * 平台无关。Win32, UNIX, Mac 上都可以跑。

    * 和Windows的GUI紧密集成。

    * 代码紧凑,易于维护。

    TCL本身不提供面向对象的支持。但是语言本身很容易扩展到支持面向对象。许多C语言扩展都提供面向对象能力,包括XOTcl, Incr Tcl 等。另外SNIT扩展本身就是用TCL写的。

    使用最广泛的TCL扩展是TK。 TK提供了各种OS平台下的图形用户界面GUI。连强大的Python语言都不单独提供自己的GUI,而是提供接口适配到TK上。另一个流行的扩展包是Expect. Expect提供了通过终端自动执行命令的能力,例如(passwd, ftp, telnet等命令驱动的外壳).

    源文档 <http://baike.baidu.com/view/459615.htm>

     

  2. TCL开发调试工具

    官方发布的"最新"调试工具是20031124日发布的ActiveTcl 8.4.5 .我使用的是Script.Net和配套的TCL扩展包,这个工具对于使用VS的人再熟悉不过了,界面和快捷键都如出一辙.还有ASED ,Visual TCL , spec TCL等工具可选.如果你喜欢用TCL写点小的可执行工具,Freewrap可以把TCL脚本转成可执行文件.

     

  3. TCL的参考资料

    安装了Script.netTCL扩展包之后开始页面会有一个TCL开发文档的帮助,介绍了TCL的基本语法.如果要深入学习就要参考Brent B.Welch 写的"Practical Programming in Tcl and Tk"以及John K.Ousterhout"Tcl and the Tk Toolkit".

    Tcl英文参考文档地址:http://tmml.sourceforge.net/doc/tcl/index.html

    顺便说一下在搜索引擎里面找TCL的资料很容易找到电视机广告,建议使用"TCL 语言""TCL 开发"之类的检索词过滤一下.

     

  4. 我遇到的问题

    1.一定要好好看看Tcl变量的那部分内容,经常出现漏写$符号的情况

    2.Tcl 语法要求比较严格,比如if语句{一定要写在上一行,if{中间有一个空格

    3.Tcl里面怎么获取时间?
     set curtime [clock seconds]

     set formattime [clock format $curtime -format {%D %T}]

    时间的格式化参数如下:

    %% Insert a %.

    %a Abbreviated weekday name (Mon, Tue, etc.).

    %A Full weekday name (Monday, Tuesday, etc.).

    %b Abbreviated month name (Jan, Feb, etc.).

    %B Full month name.

    %c Locale specific date and time.

    %d Day of month (01 - 31).

    %H Hour in 24-hour format (00 - 23).

    %I Hour in 12-hour format (00 - 12).

    %j Day of year (001 - 366).

    %m Month number (01 - 12).

    %M Minute (00 - 59).

    %p AM/PM indicator.

    %S Seconds (00 - 59).

    %U Week of year (01 - 52), Sunday is the first day of the week.

    %w Weekday number (Sunday = 0).

    %W Week of year (01 - 52), Monday is the first day of the week.

    %x Locale specific date format.

    %X Locale specific time format.

    %y Year without century (00 - 99).

    %Y Year with century (e.g. 1990)

    %D Date as %m/%d/%y.

    %e Day of month (1 - 31), no leading zeros.

    %h Abbreviated month name.

    %n Insert a newline.

    %r Time as %I:%M:%S %p.

    %R Time as %H:%M.

    %t Insert a tab.

    %T Time as %H:%M:%S.

     

  5. 什么是F5 LTM?

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

     

  6. 什么是iRule

    对于asp.net开发者iRule不是什么新东西,我的理解它就像写HTTPModule:使用Tcl语言编写脚本在适当的时机拦截处理HTTP请求.LTM提供了一套完整的HTTP扩展命令,我们可以很容易取得URI::protocol URI::path  HTTP::cookie之类的内容,还有加密解密解码编码应有尽有.所有扩展命令的列表在:http://devcentral.f5.com/wiki/default.aspx/iRules/commands.html

    对于插入iRule的时机我们控制在:

    HTTP_REQUEST 系统完全解析整个客户机请求标头时触发。此处所说标头是指

    方法、URI、版本和所有标头,不包括请求正文。

    HTTP_REQUEST_DATA 请求接收到新的HTTP 内容数据时触发。

    HTTP_RESPONSE 系统解析服务器响应中的所有响应状态和标头行时触发。

    HTTP_RESPONSE_DATA 系统从响应中接收到新的HTTP 内容数据时触发。

    HTTP_RESPONSE_CONTINUE系统从服务器接收到100 Continue 响应时触发。

     

    # Rename a cookie by inserting a new cookie name with the same value as the original.  Then remove the old cookie.
    when HTTP_REQUEST {

       # Check if old cookie exists in request
       if { [HTTP::cookie exists "old-cookie-name"] } {

          # Insert a new cookie with the new name and old cookie's value
          HTTP::cookie insert name "new-cookie-name" value [HTTP::cookie value "old-cookie-name"]

          # Remove the old cookie
          HTTP::cookie remove "old-cookie-name"
       }
    }

     

    源文档 <http://devcentral.f5.com/Wiki/default.aspx/iRules/HTTP__cookie.html>

     

     

     

  7. 使用TCLF5 LTM设备写iRule

     F5官方提供了一个编辑器iRule Editor这个编辑器有下列需要注意的:

    1. 你会发现新建选项是不可用的,你需要首先连接到LTM服务器
    2. 你还会发现有保存选项,但是保存到什么地方了呢?答案:直接保存到LTM服务器了
    3. 不要担心你新加的iRule会马上影响到运营的站点,iRule的应用还需要指定到每一个Server
    4. 这个工具不可以单步调试,但是如果有错不能提交到

     

     

  8. F5 LTM设备上应用iRule

     

    点击一个server尝试在Properties页面应用iRule,这里如果出错很有可能是下列原因:

    LTM 系统能够选择运用所编写的iRule 前,必须执行以下操作:

    • 将iRule 分配给Real Server。

    将iRule 分配给Real Server 时,表示该Real Server 参考该iRule,

    这类似于Real Server 参考pool 或Profile。

    • 确保Real Server 参考正确的Profile。

    例如,如果iRule 包括事件声明HTTP_REQUEST,那么仅当Real

    Server 参考HTTP Profile 类型时,LTM 系统才选择运用iRule.这里的HTTP Profile其实相当于底层类库需要显示的引用一下:

    修改与实施缺省Profile 共分两步:

    修改缺省Profile 的步骤

    1. 在Main选项卡上,展开Local Traffic。

    2. 点击Profiles

    将打开HTTP Profile”屏幕。

    3. 选择要修改的缺省Profile:

    • 如果要修改http Profile,请点击名称http。

    此操作将显示缺省http Profile的属性和设置。

    • 如果要修改除HTTP Profile之外的缺省Profile,请在菜单栏上

    点击相应的Profile菜单,选择Profile类型,然后点击Profile名

    称。

    此操作将显示该缺省Profile的属性和设置。

    4. 根据需要修改设置。

    5. 点击Update

     

     

    不知道下一次写Tcl脚本是什么时候了... ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iRules是基于F5 TMOS操作系统的开放脚本语言,为F5设备提供灵活强大的定制功能,基于TCL语法的iRules可以方便的加入到F5设备内部,处理通过F5设备的网络流量,控制各种协议和应用数据。每个iRules必须包含事件、命令和逻辑三部分才可以有效运行,通过这三个部分的灵活组合和排序可以定制IP层面以上的数据流量处理功能,提高和增强F5设备的灵活性和功能性。同时,高效的使用iRules定制某些应用功能,可以大大降低应用系统的研发成本,简化研发复杂程度,提高应用系统性能,减少计划内外当机时间。 在开始使用iRules之前,要了解F5设备的基本功能及配置;同时,根据要实现的不同功能,要对该功能涉及的相关知识有所了解,比如TCP协议、UDP协议、DNS原理、SSL证书原理、HTTP协议、安全攻击及防护、Cache、XML等。 那什么时候要用到iRules语言呢?F5设备支持绝大多数应用交付的标准功能,可以满足绝大部分IT系统对这方面的功能及部署要求,但某些应用系统对数据控制有着更加精细的定制要求,或者对标准协议的功能支持有更高的要求,这些时候要使用iRules来增强F5设备的功能,实现这些功能要求。比如,F5LTM设备支持基于源地址、COOKIE、目的地址、SSL ID等模式的会话保持方式,可以满足大多数应用交付系统对会话保持的要求。但大多数JAVA开发人员希望使用中间件的SESSION ID作为会话保持的依据,这样可以更加方便和准确的控制应用数据的后台走向,这时候,使用iRules编写一段简单的代码并输入到F5设备中,即可高效的实现这一功能,满足应用程序的功能求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值