Linux服务器负载均衡实现指南
负载均衡是提升Linux服务器集群性能、可靠性的关键技术,通过将请求分发到多个后端服务器,避免单点过载。以下是常见工具及详细配置步骤:
Nginx作为高性能反向代理服务器,支持HTTP、HTTPS和TCP负载均衡,配置灵活且资源占用低。
sudo apt update && sudo apt install nginx -ysudo yum install epel-release -y && sudo yum install nginx -y编辑Nginx配置文件(如/etc/nginx/conf.d/loadbalancer.conf),添加以下内容:
http {
upstream backend {
# 轮询(默认,按顺序分发请求)
server 192.168.1.101:80;
server 192.168.1.102:80;
# 加权轮询(weight越高,分配请求越多,适用于服务器性能差异)
# server 192.168.1.101:80 weight=3;
# server 192.168.1.102:80 weight=1;
# IP Hash(同一客户端IP固定访问同一服务器,实现会话保持)
# ip_hash;
}
server {
listen 80;
server_name yourdomain.com; # 替换为你的域名或IP
location / {
proxy_pass http://backend; # 转发到后端服务器组
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
sudo nginx -tsudo systemctl restart nginxcurl http://yourdomain.com多次访问,观察请求是否分发到不同后端服务器。HAProxy是专注于负载均衡的专业工具,支持百万级并发连接,适合游戏、电商等场景。
sudo apt update && sudo apt install haproxy -ysudo yum install haproxy -y编辑HAProxy配置文件(/etc/haproxy/haproxy.cfg),添加以下内容:
global
log /dev/log local0
log /dev/log local1 notice
daemon
defaults
log global
mode http # 模式设为HTTP(若为TCP负载均衡,改为mode tcp)
option httplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http_front
bind *:80 # 监听80端口
default_backend http_back # 转发到后端服务器组
backend http_back
balance roundrobin # 负载均衡算法(轮询,默认)
server server1 192.168.1.101:80 check # check表示开启健康检查
server server2 192.168.1.102:80 check
# 最少连接数算法(适用于长连接场景)
# balance leastconn
sudo systemctl start haproxysudo systemctl enable haproxycurl http://your-server-ip访问,观察请求分发情况。LVS是Linux内核级负载均衡,支持NAT、DR、TUN三种模式,性能极高,适合电信级应用。
sudo apt install ipvsadm -ysudo yum install ipvsadm -y假设:
192.168.1.100192.168.1.101、192.168.1.102步骤1:启用IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward # 临时生效
# 永久生效:编辑/etc/sysctl.conf,添加net.ipv4.ip_forward=1,然后执行sysctl -p
步骤2:配置虚拟服务(VIP)
ipvsadm -A -t 192.168.1.100:80 -s rr # 添加虚拟服务,rr表示轮询算法
步骤3:添加后端真实服务器
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -m # -m表示NAT模式(若用DR模式,改为-g)
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.102:80 -m
步骤4:查看规则
ipvsadm -Ln # 查看当前LVS规则
lo:0),并设置内核参数net.ipv4.conf.all.arp_ignore=1、net.ipv4.conf.all.arp_announce=2,避免ARP冲突。Keepalived通过VRRP协议实现IP热备份,常与Nginx/HAProxy结合,确保负载均衡器的高可用。
sudo apt install keepalived -ysudo yum install keepalived -y编辑主负载均衡器的配置文件(/etc/keepalived/keepalived.conf):
vrrp_instance VI_1 {
state MASTER # 主节点设为MASTER,备节点设为BACKUP
interface eth0 # 监听的网卡(根据实际情况修改)
virtual_router_id 51 # 虚拟路由ID(同一网络内唯一)
priority 100 # 优先级(主节点高于备节点,如100 vs 90)
advert_int 1 # 心跳间隔(秒)
authentication {
auth_type PASS
auth_pass 1111 # 密码(主备节点一致)
}
virtual_ipaddress {
192.168.1.200/24 # 虚拟IP(VIP),客户端访问此IP
}
}
sudo systemctl start keepalivedsudo systemctl enable keepalivedweight=3),高性能服务器分配更多请求。以上方案覆盖了不同场景的负载均衡需求,可根据服务器规模、性能要求选择合适的工具。例如,中小型网站可选择Nginx,大型游戏平台可选择LVS,需要高可用的场景则需结合Keepalived。