可编写脚本在应用交付(负载均衡)中是个相当关键的功能,它是负载均衡策略灵活性的最佳体现。虽然对于没有软件开发基础的技术同仁来说,脚本编写可能是一个“噩梦”,面对着那“神奇”的字符串,敝人也感同身受。为此,我搜集了一些脚本范例,特别是针对常用的HTTP流量的优化,为大家做个借鉴。

范例一:将HTTP的请求自动转换为HTTPS。这个脚本比较简单,但在很多电商网站或基于HTTPS访问的客户会用得比较多。

when HTTP_REQUEST {

HTTP::redirecthttps://[HTTP::host][HTTP::uri]

}

脚本说明:只要负载均衡收到HTTP的请求包,就以HTTP重定向的方式转换为HTTPS://加上域名和路径。

范例二:根据客户端请求的URI路径不同,分发至指定的服务器组(pool)。在一些客户的业务设计中,后台只有一台物理服务器(同一个IP地址同一个服务端口),但可根据路径的不同发布不同的业务,这时候就需要根据路径的关键字来区分业务。

when HTTP_REQUEST {

if {[HTTP::uri] starts_with"/test1" } {

pool pool_server1

} elseif {[HTTP::uri] starts_with"/test2" } {

pool pool_server2

} else } {

pool pool_server

}

}

脚本说明:当客户端请求的路径为“/test1”则分配给server1,当客户端请求的路径为“/test2”则分配给server2,其它请求都转发至默认的服务器组。

范例三:根据客户端浏览器默认语言设定自动选取对应国家语言的服务器群集。

when HTTP_REQUEST {

if { [HTTP::headeraccept-language] contains “es” } {

poolSpanish

} elseif { [HTTP::headeraccept-language] contains “ja” } {

poolJapanese

} elseif { [HTTP::headeraccept-language] contains “zh” } {

pool Chinese

} else {

poolEnglish

}

}

范例四:判断某虚拟服务器某端口业务(vport)的当前链接数,超过阀值后重定向到指定页面!~既能保护后台服务器,也能在接收到异常的大并发连接时提供友好的备份服务。

when HTTP_REQUEST {

set total1 [STATS::get virtual-servervs_192.168.111.45 8080 http current-connection]

if { $total1 > 100 } {

HTTP::redirect"http://www.163.com/"

}

}

脚本说明:当访问虚拟服务器192.168.111.45的8080端口的并发连接数大于100,后续请求都重定向至其他可访问的站点,如www.163.com

范例五:根据HTTP报文头的sessionID来做会话保持。某些网站是不能简单的采用源IP会话保持的策略,在开发时采用sessionID来标示会话信息。通过HTTPwatch工具,查看到客户的sessionID 是藏于cookies中:

Cookie内容:

ASP.NET_SessionId=rrwjbhbv1w4qgm553usoqqq3;MyCook=visitCount=1

使用以下脚本,在URI中查找“ASP.NET_SessionId”字段,就可以获取到sessionID,并进行会话保持。

when HTTP_REQUEST {

set session_id [findstr[HTTP::uri] "ASP.NET_SessionId=" 18 ";"]

if { ( $session_id eq"" ) and ( [HTTP::cookie exists ASP.NET_SessionId] ) } {

set session_id[HTTP::cookie ASP.NET_SessionId]

}

if { $session_id ne"" } {

persist uie $session_id

}

}

以上只是在HTTP环境中会经常遇到的脚本应用,脚本工具的强大远不止于此,藉此也希望更多的技术同仁能领略脚本工具的魅力所在,编写出更具Power的脚本范例,大家共同进步。

(ZJM)

本文转自 virtualadc 51CTO博客,原文链接:http://blog.51cto.com/virtualadc/1297238

应用交付脚本工具在HTTP服务中的应用相关推荐

  1. 在远程桌面服务中配置RD网关直接访问内网

    远程桌面网关(RD 网关)是一项角色服务,使授权远程用户可以从任何连接到 Internet 并且可以运行远程桌面连接 (RDC) 客户端的设备连接到内部企业网络或专用网络上的资源.网络资源可以是远程桌 ...

  2. 第三章 ArcGIS Pro创建 python 脚本工具(五)

    其实整个第三章介绍的内容很少,真正的实验步骤,一节左右就可以概述处理,只是原书作者对于基础与一些信息都给了介绍,所以内容才会显得较多.关于新建自定义脚本工具,我觉得简单的来说,步骤就是创建脚本(如何写 ...

  3. linux shell 域名 ip,Shell脚本一种检查Linux中域名和IP地址所有权信息、检查多个域名的到期日期工具...

    Shell脚本一种检查Linux中域名和IP地址所有权信息.检查多个域名的到期日期工具 jwhois是一个命令行实用程序,可从whois服务器(whois数据库)中获取有关域名所有权的信息. Whoi ...

  4. java中JShell脚本工具、常量优化、集成开发环境IDEA

    JShell脚本工具: jshell:直接在DOS命令行(黑窗口)键入main方法中的代码就可以快速看到运行的结果,无需编译再运行,并且省略了入口方法及定义类的过程,其使用方法: 1.打开黑窗口后键入 ...

  5. java的调试页面_[Java教程]使用开发者工具调试jsp页面中的脚本

    [Java教程]使用开发者工具调试jsp页面中的脚本 0 2016-04-21 23:00:07 只举例火狐和谷歌.如果是火狐,一般是用firebug,首先确保开启脚本调试: 然后刷新一下要调试的页面 ...

  6. java运行python脚本_java中执行python脚本工具类详解

    java中执行python脚本工具类,需要jython.jar import java.io.FileInputStream; import java.io.IOException; import j ...

  7. Arcgis中创建自定义脚本工具

    前言 虽然说ArcGis中已经自带了大量的工具,但面对某些特殊应用场景时还是无法满足,这时就可以考虑下创建自定义工具.开发人员将自己的逻辑封装为一个工具,直接提供给其他电脑上安装ArcGIS的人员使用 ...

  8. 用户在电商网站中购买成功了,那么 TA 在微服务中经历了什么?

    题目:用户在电商网站中购买成功了,那么它在微服务中经历了什么? 当我傻啊,用户在电商网站购买成功,还在微服务中,那肯定就是有一套微服务架构的电商系统. 设计一套电商系统还不简单 简单想象一下,既然是一 ...

  9. 魔鬼面试官:用户在电商网站中购买成功了,那么它在微服务中经历了什么?...

    点击上方"朱小厮的博客",选择"设为星标" 做积极的人,而不是积极废人 面试的时候,面试官问:用户在电商网站中购买成功了,那么它在微服务中经历了什么?你该如何作 ...

最新文章

  1. iOS-仿膜拜贴纸滚动(物理仿真)
  2. Scrapy_splash组件的使用
  3. 两两对应成排的 表格 样式
  4. mybati内sql查询语句在两个日期内
  5. ios退款 怎么定位到是哪个用户_哪个浏览器兼容性最好用?看看用户都是怎么评价的吧...
  6. 50 行代码教你爬取猫眼电影 TOP100 榜所有信息
  7. 杰控连接mysql_杰控FameView组态软件在数据库连接和查询方面的应用
  8. c语言数独合法验证,JavaScript数独验证
  9. 灰色预测模型python实例_12-6:数学模型(灰色模型)与Python编程预测
  10. Redis数据类型和应用场景
  11. 服务器接上显示器后没信号,为什么显示器无信号电脑显示器无信号的解决办法...
  12. <<视觉问答>>2021:Check It Again: Progressive Visual Question Answering via Visual Entailment
  13. css-水平和垂直布局
  14. c++ math库函数
  15. 欧拉计划问题四 学习笔记 matlab 回文字符串+length()+floor()
  16. 体积光 GodRay
  17. Spring Cloud 微服务项目操作实战流程(完结)
  18. android Telephony学习 --- 第九篇 USSD简介
  19. 转载《CSDC开发者大会感想》
  20. 利用ArcGIS制图表达标注输电线开关符号

热门文章

  1. akka actor父子监管的实现
  2. SpringCloud 从菜鸟到大牛之九 服务跟踪 spring CLoud sleuth + Zikpin
  3. 解决 IntelliJ IDEA 读取不了 datasource.properties
  4. golang 的枚举
  5. android 脚本录制工具,[atx 系列] android 脚本录制
  6. Go圈10月份优质博主推荐
  7. rabbitmq实现秒杀中订单流量削峰
  8. docker中安装了RabbitMQ后无法访问其Web管理页面
  9. Java 8 Lambda 表达式解析 1
  10. magento2 checkout totals添加产品属性