Ubuntu环境实现负载均衡的常见方法
在Ubuntu系统中,负载均衡可通过软件代理(如HAProxy、Nginx)或容器化编排(如Docker Compose)实现,以下是具体步骤及关键配置:
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
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http_front
bind *:80
default_backend http_back
backend http_back
balance roundrobin # 轮询算法(可选:leastconn、source等)
server server1 192.168.1.101:80 check # 后端服务器1,check表示健康检查
server server2 192.168.1.102:80 check # 后端服务器2
sudo systemctl start haproxy && sudo systemctl enable haproxy
curl访问HAProxy的IP地址,请求将被轮询分发至后端服务器。Nginx可作为反向代理服务器,实现HTTP/HTTPS流量的负载均衡。
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;
server 192.168.1.102:80;
}
server {
listen 80;
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 systemctl start nginx && sudo systemctl enable nginx
Keepalived可提供虚拟IP(VIP)和故障转移功能,结合Nginx/HAProxy提升可靠性。
sudo apt update && sudo apt install keepalived
/etc/keepalived/keepalived.conf,添加以下内容(以Master节点为例):vrrp_instance VI_1 {
state MASTER # Master节点,Backup节点改为BACKUP
interface eth0 # 网卡名称(通过ip a查看)
virtual_router_id 51 # 虚拟路由ID(同一网络唯一)
priority 100 # 优先级(Master高于Backup,如100 vs 90)
advert_int 1 # 心跳间隔(秒)
authentication {
auth_type PASS
auth_pass 42 # 密码(Master与Backup一致)
}
virtual_ipaddress {
192.168.1.100 # 虚拟IP(客户端访问的统一入口)
}
}
sudo systemctl start keepalived && sudo systemctl enable keepalived
192.168.1.100,若Master节点故障,Backup节点将自动接管VIP,确保服务连续性。适用于容器化部署的应用,通过Docker Compose管理多个容器实例,并利用内置负载均衡功能。
sudo apt update && sudo apt install docker.io docker-compose
docker-compose.yml,内容如下:version: '3'
services:
web:
image: nginx # 使用Nginx镜像
ports:
- "80:80" # 暴露80端口
deploy:
replicas: 3 # 启动3个容器实例
placement:
constraints:
- node.role == worker # 仅在worker节点部署(适用于Swarm集群)
docker-compose up -d
web容器实例。以上方法覆盖了Ubuntu环境下常见的负载均衡场景,可根据需求选择: