什么是负载均衡
在高并发的情况下,一台服务器的负载承受不住,我们就需要使用服务器集群来解决高并发,但是又会出现另一个问题,就是客户端的请求如何分配给多个服务器,所以在服务器集群中,需要一个服务器充当一个【负载均衡器-Nginx】【NameServer-也可以是一个集群】的作用,用户的所有请求都会都会由负载均衡器【NameServer】进行接收,调度者根据每台服务器的负载情况通过负载均衡算法将请求分配给某一台后端服务器进行处理。
负载均衡算法比如轮询、权重、随机、区域等等
Nginx常用的实现负载均衡的4种方式
1、轮询:
这是默认的负载均衡算法,Nginx按照请求的顺序依次将请求分配给后端的服务器。每个服务器按照其权重来处理请求,然后按顺序循环分配。这种算法简单且平均地将负载分配给后端服务器,适用于后端服务器配置相同、处理能力相当的场景。
upstream backend {
server 192.168.1.101:8080;
server 192.168.1.102:8080;
server 192.168.1.103:8080;
}
2、IP哈希:
Nginx根据客户端的IP地址进行哈希运算,并根据计算结果将请求分配给固定的后端服务器。这种算法保证了相同的客户端IP每次请求都会被分配到相同的服务器,适用于需要保持会话状态的应用。
upstream backend {
ip_hash;
server 192.168.1.101:8080;
server 192.168.1.102:8080;
server 192.168.1.103:8080;
}
3、加权轮询:
Nginx根据每个后端服务器的配置权重将请求分配给服务器。权重越高的服务器,处理的请求就越多。这种方式适用于后端服务器之间配置不同、处理能力不同的情况下。
upstream backend {
server 192.168.1.101:8080 weight=3;
server 192.168.1.102:8080 weight=2;
server 192.168.1.103:8080 weight=1;
}
4、最少连接:
Nginx会统计每个后端服务器当前的活动连接数,并将请求分配给活动连接数最少的服务器,以实现负载均衡。这种算法适用于后端服务器配置和处理能力不同、连接持续时间不均衡的场景。
upstream backend {
least_conn;
server 192.168.1.101:8080;
server 192.168.1.102:8080;
server 192.168.1.103:8080;
}
实例
了解了基础概念后就开始实际操作
1、准备工作
需要准备 负载均衡转发服务器 和 应用服务器
2、添加应用站点
在应用服务器中添加对应的 【IP+端口号】 的网站
IP:当前服务器的公网或内网IP地址
端口号:自定义一个端口,比如我这里设置的是9027,需要保证端口权限。
3、添加负载均衡转发入口
在准备做负载均衡的服务器上添加一个站点 可以是解析备案过的域名,也可以是公网IP+端口(一般测试的时候用,正式用域名)
4、配置
打开站点 设置->配置文件,在配置文件中的最上方添加服务器组
upstream xch {
server 192.168.01:9027 weight=100;
server 92.168.02:9027 weight=100;
}
然后在server中添加如下代理转发
location / {
proxy_pass http://xch/; # 负载均衡访问地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
# {
# expires 30d;
# error_log /dev/null;
# access_log /dev/null;
# }
# location ~ .*\.(js|css)?$
# {
# expires 12h;
# error_log /dev/null;
# access_log /dev/null;
# }
access_log /www/wwwlogs/123.6.102.106.log;
error_log /www/wwwlogs/123.6.102.106.error.log;
保存后 就可以直接访问,还是挺简单的。