首页 > 其他分享 >Tengine 入门实战(2)--简单使用

Tengine 入门实战(2)--简单使用

时间:2023-06-04 10:11:35浏览次数:47  
标签:rise http 入门 -- upstream Tengine 健康检查 服务器 check

本文主要介绍 Tengine 的主动式后端服务器健康检查的扩展功能,其他的扩展功能可参考官网文档:http://tengine.taobao.org/;文中所使用到的软件版本:Centos 7.9.2009、Tengine 2.3.3。

1、相关指令

1.1、check

Syntax: check interval=milliseconds [fall=count] [rise=count] [timeout=milliseconds] [default_down=true|false] [type=tcp|http|ssl_hello|mysql|ajp] [port=check_port]
Default: 如果没有配置参数,默认值是:interval=30000 fall=5 rise=2 timeout=1000 default_down=true type=tcp
Context: upstream

该指令用于打开后端服务器的健康检查功能。

参数含义:

  • interval:向后端发送的健康检查包的间隔。
  • fall(fall_count): 如果连续失败次数达到 fall_count,服务器就被认为是 down。
  • rise(rise_count): 如果连续成功次数达到 rise_count,服务器就被认为是 up。
  • timeout: 后端健康请求的超时时间。
  • default_down: 设定初始时服务器的状态,如果是 true,就说明默认是 down 的,如果是 false,就是 up 的。默认值是 true,也就是一开始服务器认为是不可用,要等健康检查包达到一定成功次数以后才会被认为是健康的。
  • type:健康检查包的类型,现在支持以下多种类型
    • tcp:简单的 tcp 连接,如果连接成功,就说明后端正常。
    • ssl_hello:发送一个初始的 SSL hello 包并接受服务器的 SSL hello 包。
    • http:发送 HTTP 请求,通过后端的回复包的状态来判断后端是否存活。
    • mysql: 向 mysql 服务器发送连接,通过接收服务器的 greeting 包来判断后端是否存活。
    • ajp:向后端发送 AJP 协议的 Cping 包,通过接收 Cpong 包来判断后端是否存活。
  • port: 指定后端服务器的检查端口。你可以指定不同于真实服务的后端服务器的端口,比如后端提供的是 443 端口的应用,你可以去检查 80 端口的状态来判断后端健康状况。默认是 0,表示跟后端 server 提供真实服务的端口一样。

1.2、check_keepalive_requests

Syntax: check_keepalive_requests request_num
Default: 1
Context: upstream

该指令用于配置一个连接发送的请求数,其默认值为 1,表示 Tengine 完成 1 次请求后即关闭连接。

1.3、check_http_send

Syntax: check_http_send http_packet
Default: "GET / HTTP/1.0\r\n\r\n"
Context: upstream

该指令用于配置 http 健康检查包发送的请求内容。为了减少传输数据量,推荐采用 "HEAD" 方法。
当采用长连接进行健康检查时,需在该指令中添加 keep-alive 请求头,如:"HEAD / HTTP/1.1\r\nConnection: keep-alive\r\n\r\n"。
同时,在采用 "GET" 方法的情况下,请求 uri 的 size 不宜过大,确保可以在 1 个 interval 内传输完成,否则会被健康检查模块视为后端服务器或网络异常。

1.4、check_http_expect_alive

Syntax: check_http_expect_alive [ http_2xx | http_3xx | http_4xx | http_5xx ]
Default: http_2xx | http_3xx
Context: upstream

该指令指定 HTTP 响应的成功状态,默认认为 2XX 和 3XX 的状态是健康的。

1.5、check_shm_size

Syntax: check_shm_size size
Default: 1M
Context: http

所有的后端服务器健康检查状态都存于共享内存中,该指令用于设置共享内存的大小。默认是 1M,如果你有 1 千台以上的服务器并在配置的时候出现了错误,就可能需要扩大该内存的大小。

1.6、check_status

Syntax: check_status [html|csv|json]
Default: check_status html
Context: location

显示服务器的健康状态页面。

2、使用样例

upstream cluster {
  server 10.49.196.30:8080 weight=2;
  server 10.49.196.31:8080 weight=3;

  check interval=3000 rise=2 fall=5 timeout=2000 type=http;
  check_keepalive_requests 5;
  check_http_send "HEAD / HTTP/1.0\r\n\r\n";
  check_http_expect_alive http_2xx http_3xx;
}

server {
  listen 8081;
  server_name  localhost-8081;
  access_log  logs/access-8081.log;
 
  location / {
    proxy_pass  http://cluster/;
  }
  
  location /status {
    check_status;
  }
}

后端服务器健康检查,可以避免把请求转发到假死(请求无响应或响应很慢)的服务器上,提高了应用的可用性;监控状态页面如下,可以清晰的看到后端服务器的状态:

 

 

参考:http://tengine.taobao.org/document_cn/http_upstream_check_cn.html

标签:rise,http,入门,--,upstream,Tengine,健康检查,服务器,check
From: https://www.cnblogs.com/wuyongyin/p/17359531.html

相关文章

  • p1 文件的基本使用
    文件的基本使用一、文件什么是文件文件是保存数据的地方,比如word文档,txt文件,excel文件……都是文件。即可以保存一张图片,也可以保持视频,声音……文件流文件在程序中是以流的形式来操作的流:数据在数据源(文件)和程序(内存)之间经历的路径输入流:数据从数据源(文件)到程序(内存......
  • 进程的基本认识
    进程进程的提出是为什么?因为程序,计算机中运行程序是并不止一个的,为了如何方便地管理这些程序,操作系统提出了进程这个抽象的概念,相当于每一个进程都有一个运行中的程序进程能够同时执行是为什么?CPU的调度,也就是操作系统提出的上下文切换,通过保存和恢复进程在运行中的......
  • 2.交换机与特殊队列
    2.交换机2.1.类型1.FanoutExchange(扇形)2.DirectExchange(直连)3.TopicExchange(主题)4.HeadersExchange(头部)以下类型的交换机使用都会使用到这两个步骤①选择依赖②修改启动类2.2.FanoutExchange2.2.1.介绍FanoutExchange:扇形交换机投递到所有绑定的队列,不需要路由键,不......
  • 写给Android工程师的协程指南
    这是一份写给Android工程师的协程指南,希望在平静的2023,给大家带来一些本质或者别样的理解。引言在Android的开发世界中,关于异步任务的处理一直不是件简单事。面对复杂的业务逻辑,比如多次的异步操作,我们常常会经历回调嵌套的情况,对于开发者而言,无疑苦不堪言。当Kotlin协程出......
  • ChatGPT 生态,毁灭人性的一次开源!
    原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,非公众号转载保留此声明。很多人可能对百度文心一言发布会的现场记忆犹新。几百亿身价的老板,像小学生一样汇报自己的PPT,充满了忐忑。其实大可不必,命令行更加富有科技感,也更有说服力。不管对程序员来说还是围观的群众来说,能干什么并不重要......
  • 高效稳定的通用增量 Checkpoint 详解之二:性能分析评估
    作者:雷颜菲、夏瑞、俞航翔、梅源|阿里云Flink存储引擎团队摘要:我们在“Flink1.15新功能架构解析:高效稳定的通用增量Checkpoint”【1】一文介绍了通用增量Checkpoint的原理和背后的思考以及执行性能、空间放大等方面的初步测试结果。该功能在Flink1.16中经过优化,已达到生......
  • flutter 使用 http 请求数据
    flutter虽然有原生的HttpClient,package:http对开发会更友好,这是官方推荐的网络请求模块。安装httppackagefluterpubaddhttp在android文件夹下的AndroidManifest.xml文件,添加网络权限,<uses-permissionandroid:name="android.permission.INTERNET"/>构造URI因为ht......
  • 06web安全学习---信息搜集(The Soul of penetration test)
    声明学习网络安全,必须要坚守一个原则,那就是一定一定一定要遵守《中华人民共和国网络安全法》,做一个遵纪守法的好公民,不要利用技术做一些违法犯罪的事情,否则后果自负,请切记!!!一、为什么要信息收集(踩点)目的就是找到薄弱点进行attack;二、信息收集方向三、巧用网络空间搜索引擎 四、信息......
  • Flink Table Store 独立孵化启动 ,Apache Paimon 诞生
    2023年3月12日,FlinkTableStore项目顺利通过投票,正式进入Apache软件基金会(ASF)的孵化器,改名为ApachePaimon(incubating)。随着ApacheFlink技术社区的不断成熟和发展,越来越多企业开始利用Flink进行流式数据处理,从而提升数据时效性价值,获取业务实时化效果。与此......
  • 踩坑|以为是Redis缓存没想到却是Spring事务!
    前言  最近碰到了一个Bug,折腾了我好几天。并且这个Bug不是必现的,出现的概率比较低。一开始我以为是旧数据的问题,就让测试重新生成了一下数据,重新测试。由于后面几轮测试均未出现,我也就没太在意。  可惜好景不长,测试反馈上次的问题又出现了。于是我立马着手排查,根据日志的表......