什么是负载均衡
在访问量较大的网站中,比如电商大促时,成千上万的用户同时下单,如果所有请求都压到一台服务器上,系统很容易崩溃。这时候就需要负载均衡来分摊压力,把流量合理地分配到多台服务器上,提升系统的稳定性和响应速度。
简单来说,负载均衡就像饭店里的多个服务员,顾客来了不用排队等一个人,而是由领班安排不同的服务员接待,效率自然就上去了。
常见的负载均衡方式
目前主流的负载均衡实现方式有硬件设备(如F5)、软件方案(如Nginx、HAProxy)和云服务商提供的负载均衡服务(如阿里云SLB、腾讯云CLB)。对于大多数中小项目,使用Nginx做反向代理是最常见也最经济的选择。
以Nginx为例的部署步骤
假设你已经有三台Web服务器,IP分别是192.168.1.10、192.168.1.11、192.168.1.12,现在要通过Nginx将用户请求分发到这三台机器上。
第一步:安装Nginx
在准备作为负载均衡器的服务器上安装Nginx。以Ubuntu系统为例:
sudo apt update
sudo apt install nginx -y安装完成后,启动并设置开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx第二步:配置上游服务器组
编辑Nginx的配置文件,通常位于/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf,添加一个upstream块:
upstream web_servers {
server 192.168.1.10:80;
server 192.168.1.11:80;
server 192.168.1.12:80;
}这个组定义了后端可用的服务器列表,Nginx会根据策略将请求转发过去。
第三步:配置反向代理规则
在server块中设置监听端口和代理行为:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://web_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}这样,所有访问example.com的请求都会被转发到上游服务器组中。
第四步:选择负载策略
Nginx默认使用轮询(round-robin)方式,即每个请求依次分配给下一台服务器。如果想让性能更强的机器处理更多请求,可以使用加权轮询:
upstream web_servers {
server 192.168.1.10:80 weight=3;
server 192.168.1.11:80 weight=2;
server 192.168.1.12:80 weight=1;
}weight值越高,分到的请求越多。也可以使用ip_hash,让同一个用户的请求始终落到同一台后端服务器,适合需要会话保持的场景。
第五步:测试并重载配置
修改完配置后,先检查语法是否正确:
sudo nginx -t如果没有报错,重新加载配置:
sudo systemctl reload nginx此时负载均衡已经生效。可以通过多次刷新页面,查看不同后端服务器的日志,确认请求被均匀分发。
监控与维护
部署完成后,建议开启简单的健康检查机制。虽然Nginx开源版不支持主动健康检测,但可以通过手动标记down来隔离故障节点:
upstream web_servers {
server 192.168.1.10:80;
server 192.168.1.11:80;
server 192.168.1.12:80 down;
}当某台服务器宕机时,临时将其设为down,避免请求发送过去导致失败。