backup
热备配置,标志这台服务器作为备份服务器,若主服务器全部宕机了,就会向它转发请求
down
表示这个服务器永不可用,可配合ip_hash使用
范例:
upstream web_pools {
server linux.example.com weight=5;
server 127.0.0.1:8080 max_fail=5 fail_timeout=10s;
# 当5次连续检查失败后,间隔10s后重新检测。
server linux.example.com:8080 backup;
# 指定备份服务器。作用:等上面服务器全部不可访问时就向它转发请求。
}
2.2、http_proxy_module模块
(1)proxy_pass指令介绍
proxy_pass
指令属于ngx_http_proxy_module
模块,此模块可以将请求转发到另一台服务器上。在实际的反向代理工作中,会通过location
功能匹配指定的URI,然后把接收到的符合匹配URI
的请求通过proxy_pass
抛给定义好的upstream
节点池。
location内容,参考: 一文彻底读懂nginx中的location指令
(2)proxy_pass的使用案例
location /web/ {
proxy_pass http://127.0.0.1/abc/;
}
将匹配URI为web的请求抛给http://127.0.0.1/abc/
(3)http proxy模块参数
proxy_set_header
设置http请求header项传给后端服务器节点。例如,可以实现让代理后端的服务器节点获取访问客户端用户真实的IP地址
client_body_buffer_size
用于指定客户端请求主题缓冲区大小
proxy_connect_timeout
表示反向代理与后端节点服务器连接的超时时间,即发起握手等候响应的超时时间
proxy_send_timeout
表示代理后端服务器的数据回传时间,即在规定时间之内,后端服务器必须传完所有的数据,否则,nginx将断开这个连接
proxy_read_timeout
设置nginx从代理的后端服务器获取信息的时间,表示连接建立成功后,nginx等待后端服务器的响应时间,其实是nginx在后端排队等候处理的时间
proxy_buffer_size
设置缓冲区大小,默认该缓冲区大小等于指令proxy_buffers设置的大小
proxy_buffers
设置缓冲区的数量和大小,nginx从代理的后端服务器获取的响应信息,会放置在缓冲区
proxy_busy_buffers_size
用于设置系统很忙时可以使用的proxy_buffers大小,官方推荐的大小为proxy_bufer*2
proxy_temp_file_write_size
指定proxy缓存临时文件的大小
3、Nginx负载均衡调度算法
(1)rr轮询(默认)
默认调度算法,按照客户端请求逐一分配到不同的后端服务器,宕机的服务器会自动从节点服务器池中剔除。
upstream server_pools {
server 192.168.1.251;
server 192.168.1.252;
}
注意:对于服务器
性能不同
的集群,该算法容易引发资源分配不合理
等问题。
(2)wrr加权轮询(weight)
在rr轮询算法的基础上加上权重,权重和用户访问成正比,权重值越大,被转发的请求也就越多
upstream server_pools {
server 192.168.1.251 weight=5;
server 192.168.1.252 weight=10;
}
加权轮询应用于服务器性能不等的集群中,使资源分配更加合理化。
(3)ip_hash(会话保持)
每个请求按访问 IP 的hash
结果分配,每个访客固定访问一个后端服务器,可解决session
不共享的问题。
upstream server_pools {
ip_hash;
server 192.168.1.251;
server 192.168.1.252;
}
Session 不共享是说,假设用户已经登录过,此时发出的请求被分配到了 A 服务器,但 A 服务器突然宕机,用户的请求则会被转发到 B 服务器。但由于 Session 不共享,B 无法直接读取用户的登录信息来继续执行其他操作。
(4)fair(动态调度算法)
根据后端节点服务器的响应时间来分配请求,响应时间短的优先分配。
upstream server_pools {
server 192.168.1.251;
server 192.168.1.252;
fair;
}
这是更加智能的调度算法,但Nginx
本身不支持
fair调度算法。如果需要使用fair调度,必须下载Nginx相关模块upstream_fair
。
(5)url_hash算法(web缓存节点)
根据访问URL的hash结果来分配请求,让每个URL定向到同一个后端服务器。
upstream server_pools {
server qll:9001;
server qll:9002;
hash $request_uri;
hash_method crc32;
}
同样,Nginx本身是不支持url_hash,如果需要使用这种调度算法,必须安装Nginx的hash模块软件包。
4、Nginx负载均衡配置实例
(1)实现效果
在浏览器上输入地址http://www.qll.com
,实现负载均衡效果(平均访问到两台服务器)
(2)准备工作
a)准备3台nginx服务器,如下:
主机名 | IP地址 | 角色说明 |
---|---|---|
web01 | 10.43.187.251 | nginx web01服务器 |
web02 | 10.43.187.252 | nginx web01服务器 |
lb | 10.43.187.253 | nginx 负载均衡服务器 |
b)三台服务器均安装nginx
安装nginx,参考:Nginx编译安装及常用命令
c)配置用于测试的Web服务
注意:本小节是在
两台Nginx Web
服务器上操作
[root@web01 nginx]# cat conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html/www;
index index.html index.htm;
}
access_log logs/access_www.log main;
}
}
创建测试文件数据
[root@web01 ~]# cd /usr/local/nginx/html/
[root@web01 html]# mkdir www
[root@web01 www]# echo "`hostname -I` www" > index.html
查看创建的文件内容:
[root@qll251 www]# cat index.html
10.43.187.251 www
别忘记启动nginx服务哦
d)配置nginx 负载均衡服务器
[root@lb01 nginx]# cat conf/nginx.conf
worker_processes 1;



` www" > index.html
查看创建的文件内容:
[root@qll251 www]# cat index.html
10.43.187.251 www
别忘记启动nginx服务哦
d)配置nginx 负载均衡服务器
[root@lb01 nginx]# cat conf/nginx.conf
worker_processes 1;
[外链图片转存中...(img-PBlODc8X-1726076380482)]
[外链图片转存中...(img-hYOCFK8F-1726076380483)]
[外链图片转存中...(img-sSpRu6Su-1726076380483)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!**