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服务
- 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 数组属性和方法
- 聊聊dubbo-go的HystrixFilter
- c/c++补完计划(二): c字符串复制
- vue 随记(3):“新时代”的姿势
- 归并排序 O(nLogn)
- 读书笔记--Android系统启动
- Swift 数组(Arrays)
- Swift 多行字符串字面量
- 服务器配置ssh密钥登陆
- Swift 区间运算符
- Spring Security 实战干货:理解AuthenticationManager
- 深度学习|Tensorflow2.0基础
- 【Rust日报】2020-07-20 boids算法, tide, popol, Calcite
- Cell Ontology:解析细胞类型新维度
- 软件设计思想:池化技术
- MySQL变量声明、赋值和使用