设为首页收藏本站

LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区!

 找回密码
 注册

QQ登录

只需一步,快速开始

#公告#抱歉,网站将关闭,不再开放。由于PC时代已远逝 。在这个后移动互联网时代,我们继续携手前行,保持对技术的热情。共同构建linuxtone知识星球欢迎加入,一起讨论技术、招聘人才、分享资源。请新老linuxtone人 扫码移步到 知识星球:linuxtone

学习是一种信仰!分享是一种快乐!能力= 心态 * 沟通 * 知识 (你的每一天需要正能量!)

 网站的发展需要你贡献一份力量!希望你能每天坚持看贴1小时,并回答网友的问题!祝你在浏览论坛的过程中取得进步!谢谢!linuxtone加油!大家加油! 友情提示: 你今天学习了吗?你今天进步了吗?少一点抱怨!多一点进步!Life is short ! Why not linuxtone ?  

网站的发展、感谢每位坛友的努力!

查看: 13792|回复: 7

[nginx] Tengine-1.2.5新版本upstream健康检测模块upstream_check使用 [复制链接]

LT管理团队

向Linuxsir的哈密瓜大哥看齐 ...

Rank: 9Rank: 9Rank: 9

签到
520
注册时间
2008-6-5
最后登录
2019-1-23
在线时间
1828 小时
阅读权限
200
积分
63902
帖子
715
主题
199
精华
4
UID
46

LT同学

发表于 2012-5-11 18:33:15 |显示全部楼层
前言:
淘宝开源项目:Tengine 在2012.5.9更新1.2.5版本
  1. News

  2.     [05/09/2012] Tengine-1.2.5 is released (changes).
  3.     [03/30/2012] Tengine-1.2.4 is released (changes).
  4.     [03/08/2012] We are writing an open book on Nginx development.
  5.     [02/27/2012] Tengine-1.2.3 is released (changes).
  6.     [01/11/2012] Tengine-1.2.2 is released (changes).
  7.     [12/07/2011] We gave a talk on Hacking Nginx on Velocity China 2011.
  8.     [12/06/2011] Tengine-1.2.1 is released (changes).
  9.     [12/02/2011] Tengine goes to open source.
复制代码
变更信息:
  1. Tengine-1.2.5 [2012-05-09]
  2. Feature:增加upstream_check模块,对后端服务器做主动健康检查,以自动的下线失效的服务器;
  3. Feature:允许syslog输出日志时指定程序的标识(program identifier);
  4. Change:合并nginx-1.0.14至nginx-1.0.15之间的修改;
  5. Change:将accept_mutex_delay的默认值从500毫秒更改为100毫秒以提高性能;
  6. Bugfix:修复syslog的一个在后端服务器连接不上导致端错误的bug;
  7. Bugfix:修复access_log可能和buffer参数冲突的bug;
复制代码
今天刚好有时间,就升级并且测试了下upstream_check模块功能!

1.编译:(upstream_check模块)
  1. ./configure --user=www --group=www --add-module=../ngx_cache_purge-1.5 --add-module=../ngx-fancyindex --prefix=/usr/local/nginx/ --with-http_upstream_check_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-md5=/usr/lib --with-sha1=/usr/lib
复制代码
需要加入:--with-http_upstream_check_module 编译参数来添加upstream_check模块

2.配置
nginx.conf
  1. upstream linuxtone {
  2.    server    127.0.0.1:81;
  3.    server    127.0.0.1:82;
  4.    check interval=3000 rise=2 fall=5 timeout=1000;
  5. }
复制代码
vhost:
  1. location /nstatus {
  2.         check_status;
  3.         access_log              off;
  4.         #allow SOME.IP.ADD.RESS;
  5.         #deny all;
  6. }
复制代码
3.查看:
URL: http://bbs.linuxtone.org/nstatus
upstream_check1.png

upstream_check2.png


说明:upstream_check会自动检测你upstream后端的app存活,规定检测次数内如果down,会移除出upstream。同样如果恢复会自动加到upstream。这个过程不需要人工重启nginx!

RT:如果有后端app down机,发邮件通知功能会更好!

相关参数解释:
  1. Directives
  2.   check
  3.     syntax: *check interval=milliseconds [fall=count] [rise=count]
  4.     [timeout=milliseconds] [default_down=true|false]
  5.     [type=tcp|ssl_hello|mysql|ajp]*

  6.     default: *none, if parameters omitted, default parameters are
  7.     interval=30000 fall=5 rise=2 timeout=1000 default_down=true type=tcp*

  8.     context: *upstream*

  9.     description: Add the health check for the upstream servers.

  10.     The parameters' meanings are:

  11.     *   *interval*: the check request's interval time.

  12.     *   *fall*(fall_count): After fall_count check failures, the server is
  13.         marked down.

  14.     *   *rise*(rise_count): After rise_count check success, the server is
  15.         marked up.

  16.     *   *timeout*: the check request's timeout.

  17.     *   *default_down*: set initial state of backend server, default is
  18.         down.

  19.     *   *type*: the check protocol type:

  20.         1.  *tcp* is a simple tcp socket connect and peek one byte.

  21.         2.  *ssl_hello* sends a client ssl hello packet and receives the
  22.             server ssl hello packet.

  23.         3.  *http* sends a http requst packet, recvives and parses the http
  24.             response to diagnose if the upstream server is alive.

  25.         4.  *mysql* connects to the mysql server, recvives the greeting
  26.             response to diagnose if the upstream server is alive.

  27.         5.  *ajp* sends a AJP Cping packet, recvives and parses the AJP
  28.             Cpong response to diagnose if the upstream server is alive.

  29.   check_http_send
  30.     syntax: *check_http_send http_packet*

  31.     default: *"GET / HTTP/1.0\r\n\r\n"*

  32.     context: *upstream*

  33.     description: If you set the check type is http, then the check function
  34.     will sends this http packet to check the upstream server.

  35.   check_http_expect_alive
  36.     syntax: *check_http_expect_alive [ http_2xx | http_3xx | http_4xx |
  37.     http_5xx ]*

  38.     default: *http_2xx | http_3xx*

  39.     context: *upstream*

  40.     description: These status codes indicate the upstream server's http
  41.     response is ok, the backend is alive.

  42.   check_shm_size
  43.     syntax: *check_shm_size size*

  44.     default: *1m*

  45.     context: *http*

  46.     description: Default size is one megabytes. If you check thousands of
  47.     serveres, the shared memory for health check may be not enough, you can
  48.     enlarge it with this directive.

  49.   check_status
  50.     syntax: *check_status*

  51.     default: *none*

  52.     context: *location*

  53.     description: Display the health checking servers' status by HTTP. This
  54.     directive should be set in the http block.
复制代码
参考:
Tengine: http://tengine.taobao.org/index.html
120斤的大青蛙Blog[upstream_check作者]: http://yaoweibin2008.blog.163.com/
gitub: https://github.com/yaoweibin/nginx_upstream_check_module
哈密瓜!一个热爱linux的水果!
gtalk/msn:hamgua@gmail.com
sina微博:http://weibo.com/hamgua
LTmail:hamgua@linuxtone.org
是雄鹰就有展翅飞翔的时候,不是雄鹰要制造展翅飞翔的时候!

论坛元老

尼玛才是运维工程师

Rank: 8Rank: 8

注册时间
2010-6-25
最后登录
2018-9-27
在线时间
178 小时
阅读权限
90
积分
27143
帖子
339
主题
37
精华
1
UID
9612
发表于 2012-5-11 19:28:36 |显示全部楼层
给力,感谢分享。

使用道具 举报

Rank: 8Rank: 8

注册时间
2008-10-22
最后登录
2016-10-15
在线时间
488 小时
阅读权限
90
积分
75709
帖子
103
主题
5
精华
0
UID
426
发表于 2012-5-11 20:18:52 |显示全部楼层
是的,要是有邮件提示就更爽了……

使用道具 举报

Rank: 4

注册时间
2011-5-22
最后登录
2015-4-21
在线时间
10 小时
阅读权限
50
积分
1916
帖子
23
主题
1
精华
0
UID
13785
发表于 2012-5-12 21:11:10 |显示全部楼层
看看,准备把我的nginx,升级一下Tengine

使用道具 举报

Rank: 6Rank: 6

注册时间
2012-5-15
最后登录
2012-11-4
在线时间
7 小时
阅读权限
70
积分
2061
帖子
9
主题
0
精华
0
UID
20044
发表于 2012-5-15 11:04:08 |显示全部楼层
谢谢。
不过我觉得在upstream_check里加上邮件发送并不是个好主意,因为会影响Tengine的整体性能。
我觉得可能更好的另一种方式是:
1、upstream_check提供除HTML(现在的方式)之外的状态页面,比如JSON,XML之类的。
2、写个小工具定时检查upstream_check的状态页面,分析其中的down信息。
3、如果检查到down信息,则由这个小工具发送邮件通知。
大家觉得怎么样?

使用道具 举报

Rank: 8Rank: 8

注册时间
2010-9-6
最后登录
2019-7-22
在线时间
3058 小时
阅读权限
90
积分
58749
帖子
1405
主题
1178
精华
0
UID
10313
发表于 2012-5-15 23:51:57 |显示全部楼层
大神来了

check 到down 时生成邮件发出省事,可以定义是否用这个功能
Windows、MSSQL 、IIS、FreeBSD、 Linux、Nginx、Apache、MySQL、LVS、Haproxy等服务器应用;大型网站与服务器架构;网络安全;高可用集群及负载均衡;Q群:21085957

使用道具 举报

LT管理团队

守住每一天

Rank: 9Rank: 9Rank: 9

注册时间
2008-5-30
最后登录
2017-3-31
在线时间
790 小时
阅读权限
200
积分
68279
帖子
1398
主题
190
精华
10
UID
31
发表于 2012-6-17 10:07:55 |显示全部楼层
淘叔度 发表于 2012-5-15 11:04
谢谢。
不过我觉得在upstream_check里加上邮件发送并不是个好主意,因为会影响Tengine的整体性能。
我觉得 ...

监控的做法挺多的。调外部工具或许对于tengine是最优的。要是设备多我还是倾向于集中监控。
KP只做剔除就可以了。
<-sina_sign,1054764633,8fd6ea04,4-><-sina_sign,1054764633,7->

使用道具 举报

Rank: 8Rank: 8

注册时间
2010-9-6
最后登录
2019-7-22
在线时间
3058 小时
阅读权限
90
积分
58749
帖子
1405
主题
1178
精华
0
UID
10313
发表于 2012-11-14 18:29:21 |显示全部楼层
tengine 的文档跟不上,能不能把所有功能都写在在nginx.conf 中呢?
Windows、MSSQL 、IIS、FreeBSD、 Linux、Nginx、Apache、MySQL、LVS、Haproxy等服务器应用;大型网站与服务器架构;网络安全;高可用集群及负载均衡;Q群:21085957

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

IT运维专家网感谢您的支持

合作联系: QQ:67888954/MSN:cnseek@msn.com/mail:netseek@linuxtone.org

Archiver|手机版|感谢所有关心和支持过LinuxTone的朋友们 转载本站内容请注明原作者名及出处 ( 京ICP备08103151 )   |

GMT+8, 2020-2-21 00:56 , Processed in 0.028700 second(s), 14 queries , Apc On.

Powered by Discuz! X2 Licensed

© 2001-2011 Comsenz Inc.

回顶部