F5的HTTP monitor机制

简介:
最近在需求的驱动下,认真研究了一下F5的http monitor的处理机制。从F5的技术白皮书上初略理解到:http monitor可以通过检测某个服务目录,从而从得到的结果中匹配相关的字符串。
比如下面的monitor: 
b monitor http_mo1 list 
monitor http_mo1 { 
   defaults from http 
   recv "nameof" 
   send "GET /services/message/message.html” 

F5去GET /services/message/message.html这个页面,然后用"nameof"去匹配这个页面的内容,如果能查到就说明检测成功;否则失败。
而后续配置多个不同的系统的http monitor时,进行同样的配置(仅仅修改服务目录和recv的字串)下,发现有些monitor竟然匹配不到字符串,从而导致健康检查失败。但是直接使用浏览器浏览该页面时是能查找到相关的字符串的。monitor配置如下: 
monitor http_mo2 { 
   defaults from http 
   recv "targetName" 
   send "GET /services/conf/message/message.html” 

而后使用在F5的CLI上使用如下命令进行检测:echo -e "GET /services/message/message.html HTTP/1.1\r\nConnection: Close\r\nHost: \r\n\r\n" | nc 1.1.1.1 80;其中1.1.1.1 80是需要监控的地址和服务端口。echo出来的内容如下: 
echo -e "GET /services/conf/message/message.html HTTP/1.1\r\nConnection: Close\r\nHost: \r\n\r\n" | nc 1.1.1.1 80 | less 
HTTP/1.1 200 OK 
Content-Type: text/xml; charset=iso-8859-1 
Connection: close 
Server: Jetty(6.1.5)
<?xml version="1.0" encoding="UTF-8"?> 
&lt;wsdl:definitions targetNamespace=
可以看出targetName从应该能匹配到的。后来看了一些文档说有可能是HTTP的版本问题,因为F5默认是使用HTTP/1.0去GET的,但是目前基本上都是使用HTTP/1.1的。所以在GET中加入了HTTP的版本。即如下: 
monitor http_mo2 { 
   defaults from http 
   recv "targetName" 
   send "GET /services/conf/message/message.html HTTP/1.1\r\n” 

但是这样的GET还不够严谨,我后续测试也是有检测不到的现象。后来直接将上面echo命令中的HTTP/1.1\r\nConnection: Close\r\nHost: \r\n\r\n全部加进去就检测ok了。不能不加Host: \r\n\r\n,否则也有检测不到关键字的情况。
总结:做F5的http的monitor时需要关注GET的格式,即服务目录后面要添加”HTTP/1.1\r\nConnection: Close\r\nHost: \r\n\r\n“。否则有可能监控失败,具体为什么必须添加这些目前不清楚。

注意:









本文转自 chris_lee 51CTO博客,原文链接:http://blog.51cto.com/ipneter/221652,如需转载请自行联系原作者

目录
相关文章
|
存储 缓存 安全
第二章 HTTP请求方法、状态码详解与缓存机制解析
第二章 HTTP请求方法、状态码详解与缓存机制解析
405 0
|
存储 缓存 前端开发
HTTP的缓存机制是什么?
HTTP的缓存机制是什么?
431 1
|
4月前
|
存储 网络协议 安全
HTTP 协议及会话跟踪机制详解
本文详解了 HTTP 协议的核心知识,包括其定义(超文本传输协议,基于 TCP,规定客户端与服务器通信规则)及与 HTTPS 的区别(安全性、端口、资源消耗)。 介绍了 GET 与 POST 请求的差异(参数限制、安全性、应用场景),以及 Restful 风格(通过 URL 定位资源,请求方式决定操作)。列举了常见 HTTP 状态码(如 200 成功、404 资源未找到),对比了转发与重定向的区别(服务器端一次请求 vs 客户端两次请求)。 还阐述了会话跟踪机制:Cookie 基于客户端存储,通过Set-Cookie和Cookie头实现,安全性较低;Session 基于服务端存储,依赖 C
535 1
|
消息中间件 API 数据库
在微服务架构中,每个服务通常都是一个独立运行、独立部署、独立扩展的组件,它们之间通过轻量级的通信机制(如HTTP/RESTful API、gRPC等)进行通信。
在微服务架构中,每个服务通常都是一个独立运行、独立部署、独立扩展的组件,它们之间通过轻量级的通信机制(如HTTP/RESTful API、gRPC等)进行通信。
|
存储 安全 搜索推荐
HTTP的Cookie机制
【8月更文挑战第19天】Cookie 是服务器为识别用户身份而发送给浏览器的小型文本文件。首次访问时,服务器通过响应中的 Set-Cookie 创建并发送 Cookie 给浏览器。
|
存储 缓存 前端开发
http缓存机制
HTTP缓存机制通过缓存控制头、实体标签和最后修改时间头优化Web性能,减少网络请求。Cache-Control指令如`public`, `private`, `max-age`, `no-cache`, `no-store`管理缓存行为。ETag用于验证资源完整性,Last-Modified检查资源是否更新。前端可利用Web存储和服务工作者进行细粒度缓存控制。正确配置缓存关键在于适应应用场景和需求。
|
网络协议 Python
Python实现HTTP 传输的断点续传机制
使用Python `requests`库实现HTTP断点续传下载大文件,通过设置`Range`头部从上次中断的位置开始继续下载。示例代码展示了一个名为`resume_download`的函数,它接收URL、文件名和最后字节位置参数,以追加方式打开文件并逐块写入内容。要启用HTTP长连接,可添加`Connection: keep-alive`到请求头。
791 0
|
监控 前端开发 网络协议
HTTP - 长连接 & 短连接 & 长轮询 & 短轮询 & 心跳机制
HTTP - 长连接 & 短连接 & 长轮询 & 短轮询 & 心跳机制
3350 0
HTTP - 长连接 & 短连接 & 长轮询 & 短轮询 & 心跳机制
|
缓存 前端开发
前端知识笔记(三十六)———HTTP 缓存机制
前端知识笔记(三十六)———HTTP 缓存机制
262 0
|
Web App开发 缓存
HTTP缓存机制
Web 缓存大致可以分为:数据库缓存、服务器端缓存(代理服务器缓存、CDN 缓存)、浏览器缓存。 浏览器缓存也包含很多内容: HTTP 缓存、indexDB、cookie、localstorage 等等。
1435 0