时间:2021-05-19
严格来说,nginx自带是没有针对负载均衡后端节点的健康检查的,但是可以通过默认自带的ngx_http_proxy_module模块和ngx_http_upstream_module模块中的相关指令来完成当后端节点出现故障时,自动切换到健康节点来提供访问。
下面列出这两个模块中相关的指令:
语法: proxy_connect_timeout time;
默认值: proxy_connect_timeout 60s;
设置与后端服务器建立连接的超时时间。应该注意这个超时一般不可能大于75秒。
语法: proxy_read_timeout time;
默认值: proxy_read_timeout 60s;
定义从后端服务器读取响应的超时。此超时是指相邻两次读操作之间的最长时间间隔,而不是整个响应传输完成的最长时间。如果后端服务器在超时时间段内没有传输任何数据,连接将被关闭。
利用nginx_upstream_check_module模块对后端节点做健康检查
这个就是淘宝技术团队开发的nginx模块。大家可以访问淘宝tengine的官网http://tengine.taobao.org来获取该版本的nginx。
在nginx.conf配置文件里面的upstream加入健康检查,如下:
upstream name { server 192.168.0.21:80; server 192.168.0.22:80; check interval=3000 rise=2 fall=5 timeout=1000 type=http;}上面配置的意思是,对name这个负载均衡条目中的所有节点,每个3秒检测一次,请求2次正常则标记
realserver状态为up,如果检测 5 次都失败,则标记 realserver的状态为down,超时时间为1秒。
这里列出nginx_upstream_check_module模块所支持的指令意思:
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。
补充知识:nginx超时自动重发
1、现象:
使用nginx做负载后,如果url响应超过一定时间(一般是10分钟)后,请求会自动重发到另一台机器;
2、原因:
在nignxi中,超时自动重发,默认是开启的,需要关闭配置。
3、解决方案:
nginx中增加配置:
proxy_next_upstream off;
以上这篇nginx负载均衡配置,宕机自动切换方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
详解Linux系统配置nginx的负载均衡负载均衡的几种方式:1.轮询:默认按照时间顺序对所有服务器一个一个的访问,如果有服务器宕机,会自动剔除;2.weigh
什么是负载均衡?当一个域名指向多台web服务器时,添加一台nginx负载均衡服务器,通过nginx负载均衡即可将来自于客户端的请求均衡的发送给每台web服务器,
在linux环境下,配置了nginx负载均衡,由于可能在虚拟主机的配置文件nginx.conf中,对缓存机制未配置成功,导致页面不刷新,仍然显示缓存中的内容。最
Nginx代理与负载均衡详解nginx除了可以做网站的虚拟主机之外,还可以做代理器,并且,nginx在代理器的基础上可以做到负载均衡。一、代理器:所谓代理器,即
nginx大家如果没用过那或多或少都应该听过,vue的部署、反向代理、负载均衡nginx都能帮你做到。今天主要说一下nginx负载均衡我们的项目,如下图所示,请