Tengine 服务健康检查
简介
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
从2011年12月开始,Tengine成为一个开源项目,Tengine团队在积极地开发和维护着它。Tengine团队的核心成员来自于淘宝、搜狗等互联网企业。Tengine是社区合作的成果,我们欢迎大家参与其中,贡献自己的力量。
入门安装
# 安装依赖
$ yum -y install gcc-c++ pcre-devel openssl openssl-devel# 下载
$ wget https://tengine.taobao.org/download/tengine-2.3.3.tar.gz# 解压
$ tar -zxvf tengine-2.3.3.tar.gz
$ cd tengine-2.3.3# 编译安装 默认安装在/usr/local/nginx目录。你可以用'--prefix'来指定你想要的安装目录。
$ ./configure --add-module=modules/ngx_http_upstream_check_module
$ make
$ sudo make install# 进入 Tengine 安装目录
$ cd /usr/local/nginx# 启动 Tengine 服务
$ ./sbin/nginx
访问测试
- 其他机器访问请注意防火墙端口是否开放
- 访问 http://127.0.0.1:80 即下图欢迎页面
- 非本机访问请检查防火墙端口是否开放
健康检查
ngx_http_upstream_check_module该模块可以为Tengine提供主动式后端服务器健康检查的功能。在Tengine-1.4.0版本以前没有默认开启,它可以在配置编译选项的时候开启:
./configure --with-http_upstream_check_module
# 修改nginx配置文件如下 (服务地址按实际应用更改): http {upstream cluster1 {# simple round-robinserver 192.168.0.1:80;server 192.168.0.2:80;check interval=3000 rise=2 fall=5 timeout=1000 type=http;check_http_send "HEAD / HTTP/1.0\r\n\r\n";check_http_expect_alive http_2xx http_3xx;}upstream cluster2 {# simple round-robinserver 192.168.0.3:80;server 192.168.0.4:80;check interval=3000 rise=2 fall=5 timeout=1000 type=http;check_keepalive_requests 100;check_http_send "HEAD / HTTP/1.1\r\nConnection: keep-alive\r\n\r\n";check_http_expect_alive http_2xx http_3xx;}server {listen 80;location /1 {proxy_pass http://cluster1;}location /2 {proxy_pass http://cluster2;}location /status {check_status;access_log off;# allow SOME.IP.ADD.RESS;# deny all;}}
}
指令解释
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提供真实服务的端口一样。该选项出现于Tengine-1.4.0。
检验测试
- 访问 http://127.0.0.1/status 会如下页面
- 访问 http://127.0.0.1/status/?format=json
{"servers": {"total": 4,"up": 0,"down": 4,"generation": 3,"server": [{"index": 0,"upstream": "cluster1","name": "192.168.0.1:80","status": "down","rise": 0,"fall": 286,"type": "http","port": 0},{"index": 1,"upstream": "cluster1","name": "192.168.0.2:80","status": "down","rise": 0,"fall": 286,"type": "http","port": 0},{"index": 2,"upstream": "cluster2","name": "192.168.0.3:80","status": "down","rise": 0,"fall": 286,"type": "http","port": 0},{"index": 3,"upstream": "cluster2","name": "192.168.0.4:80","status": "down","rise": 0,"fall": 286,"type": "http","port": 0}]}
}
- server number是后端服务器的数量
- generation是Nginx reload的次数
- Index是服务器的索引
- Upstream是在配置中upstream的名称
- Name是服务器IP
- Status是服务器的状态
- Rise是服务器连续检查成功的次数
- Fall是连续检查失败的次数
- Check type是检查的方式
- Check port是后端专门为健康检查设置的端口
- 服务正常返回2xx或3xx的状态码后会显示正常UP上线
加密认证
# 安装i密码
yum -y install httpd# 生成认证用户名密码: htpasswd -nb 用户名 密码
htpasswd -nb admin 123456# 进入配置文件夹
cd conf# 新建密钥文件
touch htpasswd # 打开密钥保存已经生成的用户名密码
vim htpasswd# 保存文件
:wq# 更新nginx配置文件
vim ./nginx.conf# 新增配置如下:
location /status {check_status;auth_basic "登录";auth_basic_user_file /usr/local/nginx/conf/htpasswd;access_log off;# allow SOME.IP.ADD.RESS;# deny all;
}# 重启nginx
/usr/local/nginx/sbin/nginx -s reload
重启后重新访问如下图需输入用户名密码进行认证:
Tengine 服务健康检查相关推荐
- consul 服务健康检查
文章目录 简介 check方法 Script check(Script+ Interval) 基于HTTP请求 基于tcp请求 基于grpc请求 Docker 简介 服务注册 - 服务进程在注册中心注 ...
- nacos的cp和ap原则,服务健康检查
CP和AP CAP原则:cap理论是针对分布式数据库而言的,它是指在一个分布式系统中,一致性(Consistency,C).可用性(Availability,A).分区容错性(Partition To ...
- SpringCloud Nacos 心跳机制和服务健康检查源码解析
1 客户端心跳机制 1.1 客户端注册源码流程 https://blog.csdn.net/qq_34125999/article/details/117566523 1.2 NacosNamingS ...
- mysql健康检查脚本_MySQL服务健康检查脚本
#!/bin/sh #date:2015-12-07 #filename:check_mysql.sh #作者:linuxzkq #Email:1729294227@qq.com #version:v ...
- mysql 健康检查_MySQL服务健康检查脚本
#!/bin/sh #date:2015-12-07 #filename:check_mysql.sh #作者:linuxzkq #Email:1729294227@qq.com #version:v ...
- Nacos系列【23】Nacos2.x服务发现模块之注册中心健康检查机制
有道无术,术尚可求,有术无道,止于术. 资料整理来自Nacos架构与原理电子书,下载地址:https://developer.aliyun.com/ebook/36?spm=a2c6h.2034510 ...
- slb健康检查方式_SLB健康检查也是“正常”-问答-阿里云开发者社区-阿里云
负载均衡通过健康检查来判断后端服务器(ECS实例)的业务可用性.健康检查机制提高了前端业务整体可用性,避免了后端ECS异常对总体服务的影响. 开启健康检查功能后,当后端某台ECS健康检查出现异常时,负 ...
- 负载均衡 > 用户指南 > 健康检查 > 健康检查概述
健康检查概述 更新时间:2019-08-16 15:46:34 编辑我的收藏 本页目录 健康检查过程 HTTP/HTTPS监听健康检查机制 TCP监听健康检查机制 UDP监听健康检查 健康检查时间窗 ...
- Docker学习总结(28)——Docker 容器健康检查机制
摘要: 在分布式系统中,经常需要利用健康检查机制来检查服务的可用性,防止其他服务调用时出现异常.自 1.12 版本之后,Docker 引入了原生的健康检查实现.本文将介绍Docker容器健康检查机制, ...
最新文章
- 安全测试之xss攻击和mysql注入
- java中ArrayList
- highcharts图标插件详解一
- 【软考-软件设计师】解释程序实现高级语言的三种方式
- 经典卷积神经网络--AlexNet的详解
- 一步步学习EF Core(3.EF Core2.0路线图)
- java中连接mysql数据库_java中怎么连接mysql数据库
- 校园网免认证登录基于DNS伪装包
- 快书编标让标书制作更高效、更规范、更轻松
- html 标签置底,学习笔记:让元素永久置底的几种方案(css only)
- android虚拟按键
- 基于胜任力模型为集团企业构建动态信息安全培训课程体系
- itutorgroup:在线教育与传统线下教育的七大区别你知多少?
- 程序员上下班途中都在想什么
- Guava 之 Multiset
- AndroidStudio中忽略大小写设置
- 增加智能建筑照明网络的安全性
- MRD文档的写作----产品经理深入浅出课程
- webapi输出炜json_asp.net web api只返回json数据格式
- 计算机信息素养的三个层次是,信息素养的三个层面包括( A ).doc