大家好,欢迎来到IT知识分享网。
目录
4、加权轮询(Weighted Round Robin 常用)
一、负载均衡的作用
- 解决服务器的高并发压力,提高应用程序的处理性能。
- 提供故障转移,实现高可用。
- 通过添加或减少服务器数量,增强网站的可扩展性。
- 在负载均衡器上进行过滤,可以提高系统的安全性。
二、负载均衡状态
状态 |
概述 |
down |
当前的server暂时不参与负载均衡 |
backup |
预留的备份服务器,当主服务器不可用时,将用来传递请求 |
max_fails |
允许请求失败的次数 |
fail_timeout |
经过max_fails失败后, 服务暂停时间 |
max_conns |
限制最大的接收连接数 |
三、负载均衡的指令
1、upstream 指令
该指令是用来定义一组服务器,它们可以是监听不同端口的服务器,并且也可以是同时监听TCP和Unix socket的服务器。服务器可以指定不同的权重,默认为1。
2、server指令
该指令用来指定后端服务器的名称和一些参数,可以使用域名、IP、端口或者unix socket。与之前的server指令不一样。
四、负载均衡几种方式
1、轮询(Round Robin 常用)
轮询是最常见的负载均衡方式,Nginx会按照请求的顺序依次将请求分发给后端服务器。例如,如果有3台后端服务器,Nginx会将第1个请求分发给服务器A,第2个请求分发给服务器B,第3个请求分发给服务器C,然后循环重复。适于无状态的请求。
配置示例:
upstream backend { server backend1; server backend2; server backend3; } server { listen 80; location / { proxy_pass http://backend; } } 示例: upstream backend{ server 192.168.153.128:8081; server 192.168.153.128:8082; server 192.168.153.128:8083; } server { listen 8080; server_name localhost; location /{ proxy_pass http://backend; } } 示例2:对特定资源负载 upstream videobackend{ server 192.168.153.128:9001; server 192.168.153.128:9002; } upstream filebackend{ server 192.168.153.128:9003; server 192.168.153.128:9004; } server { listen 8084; server_name localhost; location /video/ { proxy_pass http://videobackend; } location /file/ { proxy_pass http://filebackend; } } 示例3:对不同域名实现负载 upstream qwe{ server 192.168.153.128:9001; server 192.168.153.128:9002; } upstream asd{ server 192.168.153.128:9003; server 192.168.153.128:9004; } server { listen 8085; server_name www.qwe.cn; location / { proxy_pass http://qwe; } } server { listen 8086; server_name www.asd.cn; location / { proxy_pass http://asd; } }
2、IP Hash (较少)
IP Hash方式根据客户端的IP地址进行哈希计算,将同一个客户端的请求始终转发到同一台后端服务器上。这样可以保证同一个客户端的请求都由同一台服务器处理,适合于需要保持会话的应用场景。
配置示例:
upstream backend { ip_hash; server backend1; server backend2; server backend3; } server { listen 80; location / { proxy_pass http://backend; } }
3、最少连接数(Least Connections 较少)
最少连接数方式会将请求分发给当前连接数最少的后端服务器,以达到负载均衡的效果。这种方式适用于后端服务器性能不一致的情况。
配置示例:
upstream backend { least_conn; server backend1; server backend2; server backend3; } server { listen 80; location / { proxy_pass http://backend; } }
4、加权轮询(Weighted Round Robin 常用)
加权轮询方式可以根据后端服务器的性能配置不同的权重,来调整请求的分发比例。权重越高的服务器会接收到更多的请求。
配置示例:
upstream backend { server backend1 weight=3; server backend2 weight=2; server backend3 weight=1; } server { listen 80; location / { proxy_pass http://backend; } } 示例: upstream backend{ server 192.168.153.128:9001 weight=7; server 192.168.153.128:9002 weight=5; server 192.168.153.128:9003 weight=3; } server { listen 8083; server_name localhost; location /{ proxy_pass http://backend; } }
5、fair(较少)
upstream backend { fair; server backend1 weight=3; server backend2 weight=2; server backend3 weight=1; } server { listen 80; location / { proxy_pass http://backend; } }
fair模块是比上面几个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块;再次不做演示
6、backup(一般)
backup关键字用于定义备份服务器。当主服务器宕机或无法处理请求时,备份服务器将接手处理请求。
upstream backend { server backend1; server backend2 backup; } server { listen 80; location / { proxy_pass http://backend; } } 当 backend1 处于在线状态并且能够处理请求时,Nginx将只将请求发送到backend1。 只有当backend1 宕机或者由于某些原因无法处理请求时,Nginx才会将请求发送到backend2。 这种配置通常用于高可用性部署,确保在主服务器宕机时,有一个备用服务器可以接手处理请求,从而减少服务中断的影响。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/144068.html