在 Ubuntu 虚拟机中搭建负载均衡的可行方案
方案一 应用层 Nginx 或 HAProxy 快速落地
适用:快速为 Web/API 做负载均衡,支持轮询、权重、健康检查等常用策略。
拓扑示例:客户端 → LB(Nginx/HAProxy) → 多个后端(如 192.168.1.101:8080、192.168.1.102:8080)。
Nginx 示例
upstream backend {
server 192.168.1.101:8080;
server 192.168.1.102:8080;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
HAProxy 示例
global
daemon
maxconn 256
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http-in
bind *:80
default_backend servers
backend servers
balance roundrobin
server server1 192.168.1.101:8080
server server2 192.168.1.102:8080
健康检查增强(Nginx):在 upstream 中加入参数如 weight=1 max_fails=3 fail_timeout=20s 可提升容错能力。
方案二 四层高性能 LVS + Keepalived 主备
适用:需要更高吞吐/更低延迟的四层转发(TCP/UDP),并通过 Keepalived 提供 VIP 高可用。
拓扑示例:客户端 → VIP(如 192.168.31.200) → LVS(主/备)→ 多个 RealServer(后端应用)。
部署步骤
global_defs { router_id LVSMaster }
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 100
priority 100
advert_int 1
authentication { auth_type PASS; auth_pass 123456 }
virtual_ipaddress { 192.168.31.200 }
}
virtual_server 192.168.31.200 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
protocol TCP
real_server 192.168.31.186 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
说明:LVS 支持 NAT/TUN/DR 三种模式;NAT 需 LB 开启转发,DR 需在同一二层网段并做回环/VIP 配置。
方案三 高可用增强与扩展
虚拟机网络与连通性要点