nginx中的负载均衡
文章类型:nginx
发布者:admin
发布时间:2023-04-17
一:定义
1:是指将网络或计算资源的工作负载分配到多个服务器、网络链接或其他计算资源上,以提高系统的性能、可靠性和可扩展性。
2:多种方式实现,如硬件负载均衡器、软件负载均衡器、DNS负载均衡和虚拟IP负载均衡等。
3:使用算法来决定如何分配负载,例如基于轮询、基于权重、基于最少连接数等等。
4:可以检测到故障或性能问题,并将请求重新分配到可用的资源上,以确保高可用性和性能。
5:可以减少特定节点的负载,从而避免过度使用资源,提高系统的可靠性和可扩展性。
二:使用方法
1:配置
# upstream 指定后端服务器地址
# weight 设置权重
# server 中会将 http://webcanteen 的请求转发到 upstream 池中
upstream webcanteen {
server 127.0.0.1:66 weight=10;
server 127.0.0.1:77 weight=1;
server 127.0.0.1:88 weight=1;}
server {
location / {
proxy_pass http://webcanteen
}
}
2:状态
down:当前服务器不参与负载均衡
backup:当其他节点都无法使用时的备用服务器
max_fails:允许请求失败的次数,若到达就会休眠
fail_timeout:经过 max_fails 次失败后,服务器的暂停时间,默认为 10s
max_conns:限制每个服务器的最大接收连接数
upstream webcanteen {
server 127.0.0.1:66 down;
server 127.0.0.1:77 backup;
server 127.0.0.1:88 max_fails=3 fail_timeout=10s;
server 127.0.0.1:99 max_conns=1000;
}
三:分配方式
1:轮询(默认),按照时间顺序轮流分配到不同的后端服务器,如果某台后端服务器宕机,Nginx 轮训列表会自动将它去除掉;
2:weight(加权轮询),轮询的加强版,weight 和访问几率成正比,
3:ip_hash,每个请求按照访问 IP 的 hash 结果分配,访问可以固定访问一个服务器;
4:url_hash,按照访问 URL 的 hash 结果来分配请求,每个 URL 定向到同一个服务器上,
5:自定义 hash,基于任意关键字作为 hash key 实现 hash 算法的负载均衡;
6:fair,按照服务器的响应时间来分配请求,响应时间短则优先分配。