负载均衡通过分发流量提升系统处理能力,高可用性通过冗余机制消除单点故障。以下是针对Ubuntu虚拟机的具体实现方法,结合负载均衡工具与高可用框架的组合方案:
负载均衡的核心是将请求分发到多个后端服务器,Ubuntu虚拟机常用的工具有Nginx(反向代理+负载均衡)、HAProxy(高性能TCP/HTTP负载均衡)。以下是具体配置步骤:
Nginx作为反向代理服务器,通过upstream模块定义后端服务器组,支持轮询、加权轮询、IP哈希等算法。
sudo apt update && sudo apt install nginx。/etc/nginx/nginx.conf或在/etc/nginx/conf.d/下创建新配置文件(如load_balancer.conf),添加以下内容:http {
upstream backend {
server 192.168.1.101:80 weight=1; # 后端服务器1,权重1
server 192.168.1.102:80 weight=2; # 后端服务器2,权重2(流量占比更高)
server 192.168.1.103:80 weight=1; # 后端服务器3,权重1
}
server {
listen 80;
server_name your_domain.com; # 替换为域名或IP
location / {
proxy_pass http://backend; # 转发到后端服务器组
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
sudo nginx -t检查语法,无误后重启Nginx:sudo systemctl restart nginx。curl访问虚拟机IP,多次刷新可看到请求被分发到不同后端服务器(如页面显示不同服务器IP)。HAProxy专注于高性能负载均衡,支持TCP(如数据库)和HTTP协议,配置更灵活。
sudo apt update && sudo apt install haproxy。/etc/haproxy/haproxy.cfg,添加以下内容:global
log /dev/log local0
log /dev/log local1 notice
daemon
defaults
log global
mode http
option httplog
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 # 后端服务器1,开启健康检查
server server2 192.168.1.102:80 check # 后端服务器2,开启健康检查
server server3 192.168.1.103:80 check # 后端服务器3,开启健康检查
sudo systemctl start haproxy && sudo systemctl enable haproxy。负载均衡器本身可能成为单点故障,需通过Keepalived(虚拟IP+故障转移)或集群管理工具(如Pacemaker)实现高可用。
Keepalived通过**虚拟IP(VIP)**实现主备服务器的故障转移,当主服务器宕机时,VIP自动漂移到备用服务器。
sudo apt update && sudo apt install keepalived。/etc/keepalived/keepalived.conf,添加以下内容:vrrp_instance VI_1 {
state MASTER # 主节点状态
interface ens160 # 虚拟机网卡名称(通过`ip a`查看)
virtual_router_id 51 # 虚拟路由ID(同一网络内唯一,主备一致)
priority 100 # 优先级(主节点高于备用节点,如100 vs 90)
advert_int 1 # 心跳间隔(秒)
authentication {
auth_type PASS
auth_pass 42 # 密码(主备一致)
}
virtual_ipaddress {
192.168.1.100 # 虚拟IP(VIP),客户端通过此IP访问
}
}
state为BACKUP,priority为90(低于主节点),其余配置与主节点一致。sudo systemctl start keepalived && sudo systemctl enable keepalived。ip addr show ens160查看是否有VIP(192.168.1.100)。sudo systemctl stop keepalived),备用节点会自动获取VIP。将Keepalived的VIP作为负载均衡器的访问入口,实现“负载均衡器高可用+后端服务器负载均衡”的双层架构:
192.168.1.100。若虚拟机运行容器化应用(如Docker),可使用Kubernetes(K8s)实现更高级的高可用:
kubeadm搭建多节点K8s集群(1个Master+多个Worker)。Deployment控制器管理应用副本(如replicas: 3),确保应用多实例运行。Service暴露应用,type: LoadBalancer(需云厂商支持)或NodePort实现负载均衡。check参数),自动剔除故障节点。通过上述方案,Ubuntu虚拟机可实现高效的负载均衡(提升处理能力)与高可用性(消除单点故障),满足生产环境的需求。