Tcl为F5 LTM编写iRule

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

    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>

  1. TCL开发调试工具

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

  2. 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 开发"之类的检索词过滤一下.

  3. 我遇到的问题

    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.

  4. 什么是F5 LTM?

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

  5. 什么是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>

  6. 使用TCLF5 LTM设备写iRule

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

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

  7. 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脚本是什么时候了... ...

坚强2002和你一起回头再说...

你可能感兴趣的:(应用服务器,脚本,网络应用,asp.net,Tcl)