Nginx负载均衡健康检查功能
时间:2022-07-25
本文章向大家介绍Nginx负载均衡健康检查功能,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
upstream_check_module模块可以用来检测后端服务的健康状态,如果后端服务器不可用,则所有的请求不转发到这台服务器 upstream_check_module模块是第三方模块,并不是Nginx提供的 模块地址 https://github.com/yaoweibin/nginx_upstream_check_module
环境
172.16.0.132 #代理服务器
172.16.0.1 #后端WEB服务器
172.16.0.186 #后端WEB服务器
安装依赖
yum install -y pcre pcre-devel openssl openssl-devel patch libxml2 libxml2-dev libxslt-devel gd gd-devel perl-devel perl-ExtUtils-Embed gperftools
克隆项目到本地
git clone https://github.com/yaoweibin/nginx_upstream_check_module.git
下载Nginx源码包
wget http://nginx.org/download/nginx-1.7.5.tar.gz
tar zxf nginx-1.7.5.tar.gz
cd nginx-1.7.5
Nginx 打补丁
选择相对应Nginx版本的补丁
patch -p1 < ../nginx_upstream_check_module/check_1.7.5+.patch
编译安装
./configure --prefix=/usr/local/nginx --add-module=/nginx_upstream_check_module --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module
make
make install #如果没安装过Nginx就执行这条命令
#如果安装过Nginx就执行下面的命令
cp /usr/local/nginx/sbin/nginx{,.bak} #先备份
cp objs/nginx /usr/local/nginx/sbin/nginx
编辑配置文件
vim /usr/local/nginx/conf.d/www.conf
upstream web{
server 172.16.0.1;
server 172.16.0.186;
check interval=3000 rise=2 fall=3 timeout=1000 type=http default_down=true port=80;
}
server {
listen 80;
server_name 172.16.0.132;
location / {
proxy_pass http://web;
}
location /status {
check_status;
}
}
参数解释
interval=3000 #检测间隔时间,单位为毫秒
rise=2 #请求2次都成功的话,目标主机是正常状态
fall=3 #请求3次都失败的话,目标主机是宕机状态
timeout=1000 #设置请求超时时间,单位为毫秒
default_down=true #设定初始时服务器的状态,如果是true,就说明默认是down的,如果是false,就是up的,要等rise检查次数达到一定成功次数以后才会被认为是正常的
port=80 #指定后端服务器的检查端口
tyep=http #设置请求的协议
#支持的协议
tcp:简单的tcp连接,如果连接成功,就说明后端正常。
ssl_hello:发送一个初始的SSL hello包并接受服务器的SSL hello包。
http:发送HTTP请求,通过后端的回复包的状态来判断后端是否存活。
mysql: 向mysql服务器连接,通过接收服务器的greeting包来判断后端是否存活。
ajp:向后端发送AJP协议的Cping包,通过接收Cpong包来判断后端是否存活。
重载配置文件
/usr/local/nginx/sbin/nginx -s reload
浏览器访问
如果其中一台服务器关闭Nginx服务
- 洛谷P3224 [HNOI2012]永无乡
- 手把手教你使用sklearn快速入门机器学习
- 【 关关的刷题日记48】Leetcode 58. Length of Last Word
- RESTful API 设计指南
- 洛谷P1043 数字游戏
- 使用“空”对象替代引用是否为空判断
- 真是绝了!史上最详细的Jupyter Notebook入门教程
- 10.socket网络编程
- BZOJ1269: [AHOI2006]文本编辑器editor
- 开发人员为何需要企业服务总线?
- 搭建Visual Studio Code+Python开发环境1.对象简介2. 搭建步骤3.小结
- 洛谷P3835 【模板】可持久化平衡树
- 17.HTML
- 洛谷P2925 [USACO08DEC]干草出售Hay For Sale
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 视频流媒体服务器EasyNVR在CentOS6.5上编译报 No such file or directory错误
- Flink Timer(定时器)机制及实现详解
- android:运行时权限工具类的封装
- Android:非Activity跳转Activity时要加FLAG?
- Java自动化测试(接口鉴权 16)
- Android:Tools命名空间原来是有大用处的
- Android:无线调试就是这么简单
- Java自动化测试(回写与断言 17)
- 一篇就够——Kotlin快速入门
- 微信大牛教你深入了解数据库索引
- SqlServer 资源消耗查询
- Android:检查通知权限并跳转到通知设置界面
- OpenShift应用发布和运维设计
- Android:依赖Module的问题汇总
- Android:加载网图时精确获取图片格式