一、核心概念概述
负载均衡(Load Balancing)是指将请求分发到多个服务器节点,提升系统可用性和性能。在Ubuntu LNMP(Linux+Nginx+MySQL+PHP)环境中,常见的负载均衡方案有:
– Nginx负载均衡(软件负载,轻量高效)
– LVS(内核级负载,性能优异)
– Keepalived(高可用,故障自动转移)
二、常见负载均衡方案对比
| 方案 | 类型 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| Nginx | 软件负载 | 配置简单、支持SSL、动态负载 | 性能略低于LVS | 中小型网站、API服务 |
| LVS | 内核级负载 | 性能高、稳定性好 | 配置复杂、功能单一 | 大型网站、高并发场景 |
| Keepalived | 高可用 | 故障自动转移、VIP漂移 | 依赖负载均衡器 | 所有负载均衡场景 |
三、Nginx负载均衡配置(LNMP环境推荐)
3.1 环境准备
- 主服务器:Ubuntu 22.04(安装Nginx)
- 节点服务器:2台或以上Ubuntu 22.04(安装LNMP)
- 所有服务器需互通,关闭防火墙或开放相关端口
3.2 配置Nginx负载均衡
编辑Nginx配置文件
sudo nano /etc/nginx/nginx.conf
添加上游服务器(upstream)
在http块中添加:
http {
# 负载均衡上游配置
upstream lnmp_cluster {
server 192.168.1.101:80 weight=5; # 节点1,权重5
server 192.168.1.102:80 weight=5; # 节点2,权重5
# 可选:IP哈希(解决会话保持问题)
# ip_hash;
# 可选:最少连接
# least_conn;
}
# 其他配置...
}
配置虚拟主机
编辑虚拟主机配置文件(如/etc/nginx/sites-available/default):
server {
listen 80;
server_name example.com www.example.com;
# 转发请求到上游集群
location / {
proxy_pass http://lnmp_cluster;
# 传递真实客户端IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
3.3 测试配置并重启Nginx
sudo nginx -t # 测试配置
sudo systemctl restart nginx # 重启Nginx
四、Keepalived高可用配置
4.1 安装Keepalived
在主服务器和备用服务器上安装:
sudo apt update
sudo apt install keepalived
sudo systemctl enable keepalived # 开机自启
4.2 配置主服务器
编辑配置文件:
sudo nano /etc/keepalived/keepalived.conf
配置内容:
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER # 主服务器
interface eth0 # 网卡名称,需根据实际情况调整
virtual_router_id 51 # 虚拟路由ID,主备需一致
priority 100 # 优先级,主服务器高于备用
advert_int 1 # 心跳间隔(秒)
authentication {
auth_type PASS
auth_pass 1111 # 密码,主备需一致
}
virtual_ipaddress {
192.168.1.100/24 # 虚拟IP(VIP)
}
}
4.3 配置备用服务器
修改state为BACKUP,priority为90(低于主服务器),其他配置与主服务器一致。
4.4 启动Keepalived
sudo systemctl start keepalived
五、负载均衡测试与优化
5.1 测试负载均衡
- 访问虚拟IP(如http://192.168.1.100),多次刷新查看请求是否分发到不同节点
- 可在节点服务器上查看Nginx日志:
“`bash
sudo tail -f /var/log/nginx/access.log
### 5.2 压力测试
使用ab工具测试:
```bash
sudo apt install apache2-utils
sudo ab -n 1000 -c 100 http://192.168.1.100/
5.3 优化建议
- 启用Nginx缓存,减少后端压力
- 配置SSL/TLS,提升安全性
- 定期监控节点服务器状态
六、常见问题解答
Q1: 负载均衡不生效?
A: 检查:
– Nginx配置是否正确(nginx -t)
– 节点服务器是否可达
– 虚拟主机配置是否正确
– 防火墙是否开放80端口
Q2: 高可用故障转移失败?
A: 检查:
– Keepalived配置是否正确(主备优先级、密码、虚拟路由ID)
– 网卡名称是否正确
– 主服务器故障时,备用服务器是否能接管VIP
Q3: 会话保持问题?
A: 使用ip_hash算法(Nginx)或sticky会话(需额外配置)
Q4: 如何监控负载均衡状态?
A: 使用Nginx状态页或Prometheus+Grafana监控
七、总结
Ubuntu LNMP环境下配置负载均衡的关键步骤包括:选择合适的负载均衡方案(Nginx推荐)、配置上游服务器、设置虚拟主机、配置高可用(Keepalived)、测试与优化。通过合理配置负载均衡,可以提升系统可用性和性能,应对高并发场景。
注:本文基于Ubuntu 22.04、Nginx 1.18、Keepalived 2.2版本编写,具体实现可根据实际环境调整。