在 CentOS 上,通常通过“域名解析 + 负载均衡器”来实现按域名分发流量。常见做法是将域名解析到一台或多台负载均衡器(如 Nginx/HAProxy),由负载均衡器将请求转发到后端应用服务器;若需要更高可用,可在负载均衡器前再加一层 LVS+Keepalived 的 VIP。也可使用 DNS 轮询做简单分发,但其故障切换和健康检查能力较弱,适合作为补充手段。
方案一 反向代理负载均衡 Nginx 或 HAProxy
upstream backend {
server 10.0.0.11:80 weight=3;
server 10.0.0.12:80;
server 10.0.0.13:80;
# 可按需改为 least_conn; ip_hash; 等
}
server {
listen 80;
server_name www.example.com;
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;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
校验并重载:nginx -t && systemctl reload nginx
frontend http-in
bind *:80
default_backend app_servers
backend app_servers
balance roundrobin
server web1 10.0.0.11:80 check
server web2 10.0.0.12:80 check
server web3 10.0.0.13:80 check
校验并重载:haproxy -c -f /etc/haproxy/haproxy.cfg && systemctl reload haproxy
方案二 高可用部署 LVS + Keepalived
yum install -y ipvsadm keepalived
echo 1 > /proc/sys/net/ipv4/ip_forward
vrrp_instance VI_1 {
state MASTER # 备机改为 BACKUP
interface eth0 # 按实际网卡名
virtual_router_id 51
priority 100 # 备机设更低
advert_int 1
authentication { auth_type PASS; auth_pass 1234 }
virtual_ipaddress { 192.168.2.254/24 }
}
virtual_server 192.168.2.254 80 {
delay_loop 6
lb_algo rr
lb_kind NAT
protocol TCP
real_server 10.0.0.11 80 { weight 1; TCP_CHECK { connect_timeout 3; } }
real_server 10.0.0.12 80 { weight 1; TCP_CHECK { connect_timeout 3; } }
}
systemctl enable --now keepalived
ip a | grep 192.168.2.254 # 应只在 MASTER 上看到 VIP
方案三 DNS 轮询与故障切换
www.example.com. IN A 203.0.113.11
www.example.com. IN A 203.0.113.12
nameserver 8.8.8.8
nameserver 1.1.1.1
域名解析与验证步骤
dig www.example.com +shortcurl -I http://www.example.com/health