nginx是如何进行健康性检查的
健康性检查有两种策略,一种是主动性检查,如mycat,haproxy,keepalived定期向后端服务器发送命令进行判断服务器是否存活
还有一种是被动性健康性检查,nginx属于被动检查,当用户访问的时候才对后端服务器进行检查。默认1次不在线,就标记为不可用,对检测过不在线的服务器,默认10s检测其是否恢复。
nginx反向代理负载均衡的调度算法
1、RR, 轮询,默认
2、WRR,权重
3、ip_hash;源地址hash调度方法,基于客户端的ipv4前24位地址或ipv6全部地址做hash计算。(和backup冲突)
4、least_conn;#最少连接调度算法,优先将客户端请求调度到当前连接最少的后端服务器,相当于LVS中的WLC
5、hash KEY;
6、hash KEY [consistent]; 后面加consistent为使用一致性hash算法。
不加consistent,增加或减少服务器会打乱调度,产生大量的session失效(lvs没有)面试题 区别
包括hash $request_uri consistent;hash $remote_addr consistent;hash $cookie_sessionid;
hash $request_uri consistent;#基于用户请求的uri做hash,可以实现调度到后端缓存服务器功能
hash $remote_addr consistent;#则是对全部32bit的IPv4进行一致性hash计算
hash $cookie_sessionid consistent;#基于cookie中的sessionid这个key进行hash调度,实现会话绑定
实战案例:实现https的负载均衡
客户端到反向代理服务器为https协议,反向代理到后端服务器为http协议
[root@centos8 ~]#vim /apps/nginx/conf.d/proxy.conf
upstream webservers {
server 10.0.0.101:80;
server 10.0.0.102:80;
}
server {
listen 80;
server_name www.meng.org;
return 302 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name www.meng.org;
ssl_certificate /apps/nginx/conf/conf.d/ssl/www.meng.org.pem;
ssl_certificate_key /apps/nginx/conf/conf.d/ssl/www.meng.org.key;
ssl_session_cache shared:sslcache:20m;
ssl_session_timeout 10m;
location / {
proxy_pass http://webservers;
proxy_set_header Host $http_host;
}
}
nginx -s reload