nginx后端服务器状态检测

一、模块healthcheck_nginx_upstreams

http://wiki.nginx.org/HttpHealthcheckModule

1、下载安装,

在https://github.com/liseen/healthcheck_nginx_upstreams下载该模块,没有公布的版本,下载时要双击打开后,将代码另存的方式下载,

也可以去这里下载: http://download.csdn.net/detail/ly_stu/5976009

2、进入nginx的源码目录 为nginx打补丁 healthcheck.pathch #注意路径

#patch –p1< ../cep21-healthcheck_nginx_upstreams/healthcheck.patch

编译安装nginx

./configure --user=www --group=www--prefix=/usr/local/nginx/ --with- pcre=/usr/local/src/pcre-8.31--with-http_stub_status_module --with-http_ssl_module --add-module=../cep21-healthcheck_nginx_upstreams-b33a846/ && make && make install&& make clean

3、配置nginx.conf healthcheck_nginx_upstreamscontextupstream

分别在两个站点目录下创建error.jsp探测页面,注意防火墙的阻挡,touch error.jsp

http{

……

upstream backend {

server 192.168.15.65:80;

server 192.168.15.183:8080;

#开启

healthcheck_enabled;

#检测每一端的延迟,单位为毫秒

healthcheck_delay 1000;

#超过2000毫秒为超时

healthcheck_timeout 2000;

#失败尝试

healthcheck_failcount 3;

#实际检测

healthcheck_send "GET /error.jspHTTP/1.0";

}

server{

……

location ~ /health {

healthcheck_status;

access_log off;

allow 192.168.15.65/20;

deny all;

}

……

网页查看运行结果:

203743197.png


注意:HttpHealthcheckModulenginx_upstream_check_module安装时补丁包有一定冲突,不可同时安装。


二、模块nginx_upstream_check_module


获取该模块版本包

https://github.com/yaoweibin/nginx_upstream_check_module/releases


进入nginx的解压目录:

#patch -p1 < /path/to/nginx_http_upstream_check_module/check.patch


注:因nginx版本更新,1.2以上版本的nginx,补丁为check_1.2.1+.patch

编译安装nginx

#./configure --prefix=/usr/local/nginx/ \

--with-pcre=/usr/local/src/pcre-8.31\

--with-http_stub_status_module \

--with-http_ssl_module \

--add-module=/path/to/nginx_http_upstream_check_module

#make && makeinstall && make clean

nginx.conf配置文件里面的upstream加入健康检查,如下:

http{

……

upstreamwww.example.com {

server 192.168.15.187:80;

server 192.168.15.188:80;

#追加下面行就ok了

check interval=1500 rise=2 fall=2 timeout=1000;

}

server{

……

location ~ /nstatus {

check_status;

access_log off;

allow 192.168.1.176;

}

}

}

注:无关配置项省略。


判断语法,重载nginx服务

[root@master ~]# /usr/local/nginx/sbin/nginx -t

[root@master ~]# /usr/local/nginx/sbin/nginx -s reload


网页查看运行结果:

203708535.png

虽然上面两个模块都可以实现对后端的检测,但总是有一种鸡肋的感觉,对于有多个应用前端的生产环境而言,每个前端都需要安装该模块插件,当然也是单独的页面显示,会给用户返回大量的信息【包括很多正常的信息,其实检测后端的目的就是了解到错误连接,并实现告警】,并不理想,而且不能实现告警。继续学习寻找中[手动写脚本]……



本文转自 刘园  51CTO博客,原文链接:http://blog.51cto.com/colynn/1328863
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要配置Nginx实现后端服务的高可用,可以采用以下方法: 1. 使用upstream配置负载均衡:在Nginx配置中,使用upstream指令定义后端服务器池,并在server块中使用proxy_pass指令将请求转发到后端服务器。可以设置不同的负载均衡算法,如轮询、IP哈希等。 例如,在Nginx配置文件中添加如下内容: ``` http { upstream backend { server backend1.example.com; server backend2.example.com; } server { listen 80; location / { proxy_pass http://backend; } } } ``` 这样配置后,Nginx会将请求按照负载均衡算法转发到后端服务器上。 2. 使用健康检查:为了确保后端服务器的可用性,可以配置Nginx进行健康检查。通过使用`proxy_next_upstream`指令和`proxy_connect_timeout`指令,Nginx可以自动检测后端服务器的健康状况,并在服务器不可用时将请求转发到下一个可用的服务器。 ``` http { upstream backend { server backend1.example.com; server backend2.example.com; keepalive 64; } server { listen 80; location / { proxy_pass http://backend; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_connect_timeout 2s; } } } ``` 在上述配置中,`proxy_next_upstream`指令定义了哪些返回码表示后端服务器不可用,`proxy_connect_timeout`指令定义了连接超时的时间。当Nginx检测后端服务器不可用时,会自动将请求转发到下一个可用的服务器。 3. 使用主从复制:如果使用数据库等有状态后端服务,可以采用主从复制的方式实现高可用。在Nginx配置中,将写请求转发到主服务器,读请求转发到从服务器。 ``` http { upstream backend { server backend-master.example.com; server backend-slave.example.com backup; } server { listen 80; location /write { proxy_pass http://backend-master; } location /read { proxy_pass http://backend-slave; } } } ``` 这样配置后,Nginx会根据请求的URL路径将请求转发到相应的主或从服务器上。 通过以上方法,可以实现Nginx后端服务的高可用性配置。根据具体需求和环境,可以选择适合的方法进行配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值