在Linux上配置网络负载均衡可以通过多种方式实现,以下是常见的几种方法及详细步骤:
适用场景:HTTP/HTTPS 流量分发
步骤:
1. 安装 Nginx
bash
sudo apt update && sudo apt install nginx # Debian/Ubuntu
sudo yum install nginx # CentOS/RHEL
配置负载均衡
编辑 /etc/nginx/nginx.conf
或 /etc/nginx/conf.d/loadbalancer.conf
:
upstream backend {
server 192.168.1.10:80 weight=3; # 权重3
server 192.168.1.11:80;
server 192.168.1.12:80 backup; # 备用服务器
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
}
}
bash
sudo systemctl restart nginx
适用场景:TCP/HTTP 高性能负载均衡
步骤:
1. 安装 HAProxy
bash
sudo apt install haproxy # Debian/Ubuntu
sudo yum install haproxy # CentOS/RHEL
配置 /etc/haproxy/haproxy.cfg
frontend http_front
bind *:80
default_backend http_back
backend http_back
balance roundrobin # 轮询算法
server s1 192.168.1.10:80 check
server s2 192.168.1.11:80 check
启动 HAProxy
sudo systemctl restart haproxy
适用场景:高性能四层(L4)负载均衡
步骤:
1. 安装 IPVS 工具
bash
sudo apt install ipvsadm # Debian/Ubuntu
sudo yum install ipvsadm # CentOS/RHEL
配置负载均衡规则
# 添加虚拟IP(VIP)
sudo ip addr add 192.168.1.100/24 dev eth0
# 添加后端服务器(DR模式示例)
sudo ipvsadm -A -t 192.168.1.100:80 -s rr
sudo ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -g
sudo ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -g
启用 IP 转发
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
适用场景:避免单点故障
步骤:
1. 安装 Keepalived
bash
sudo apt install keepalived
配置 /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER # 主节点设为MASTER,备节点设为BACKUP
interface eth0
virtual_router_id 51
priority 100 # 备节点设置为更低值(如90)
virtual_ipaddress {
192.168.1.100 # VIP
}
}
virtual_server 192.168.1.100 80 {
delay_loop 6
lb_algo rr # 轮询算法
lb_kind DR # 直接路由模式
protocol TCP
real_server 192.168.1.10 80 {
weight 1
TCP_CHECK { connect_timeout 3 }
}
real_server 192.168.1.11 80 {
weight 1
TCP_CHECK { connect_timeout 3 }
}
}
启动服务
sudo systemctl start keepalived
适用场景:低成本分散流量
方法:在DNS解析中为同一域名配置多个A记录(如 example.com
指向 192.168.1.10
和 192.168.1.11
),客户端会随机选择IP。
sticky
模块。ipvsadm
、netstat
或 Prometheus 监控流量分布。iptables
/nftables
)限制访问VIP的源IP。工具 | 层级 | 性能 | 配置复杂度 | 适用场景 |
---|---|---|---|---|
Nginx | L7 | 中高 | 简单 | HTTP/HTTPS |
HAProxy | L4/L7 | 高 | 中等 | TCP/HTTP |
LVS | L4 | 极高 | 复杂 | 高性能四层负载 |
Keepalived | L4 | 高 | 中等 | 高可用 + 负载均衡 |
根据实际需求(协议、性能、高可用性)选择合适的方案。对于Web应用,Nginx/HAProxy是常见选择;对数据库或大规模TCP服务,LVS更合适。