CentOS域名如何实现负载均衡
导读:在 CentOS 上,通常通过“域名解析 + 负载均衡器”来实现按域名分发流量。常见做法是将域名解析到一台或多台负载均衡器(如 Nginx/HAProxy),由负载均衡器将请求转发到后端应用服务器;若需要更高可用,可在负载均衡器前再加一层...
在 CentOS 上,通常通过“域名解析 + 负载均衡器”来实现按域名分发流量。常见做法是将域名解析到一台或多台负载均衡器(如 Nginx/HAProxy),由负载均衡器将请求转发到后端应用服务器;若需要更高可用,可在负载均衡器前再加一层 LVS+Keepalived 的 VIP。也可使用 DNS 轮询做简单分发,但其故障切换和健康检查能力较弱,适合作为补充手段。
方案一 反向代理负载均衡 Nginx 或 HAProxy
- 思路:将域名解析到负载均衡器的 VIP 或公网 IP,在负载均衡器上配置 upstream/backend 指向多台后端应用服务器,实现轮询、加权、最少连接或基于源 IP/URI 的调度。
- 快速示例
- Nginx(/etc/nginx/conf.d/lb.conf)
校验并重载: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 - HAProxy(/etc/haproxy/haproxy.cfg 片段)
校验并重载: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 checkhaproxy -c -f /etc/haproxy/haproxy.cfg & & systemctl reload haproxy
- Nginx(/etc/nginx/conf.d/lb.conf)
- 要点:为应用开启健康检查和失败重试;需要会话保持时可用 ip_hash(Nginx)或 cookie 插入(HAProxy);对外域名统一解析到负载均衡器入口。
方案二 高可用部署 LVS + Keepalived
- 思路:使用 **LVS(IPVS)**做四层转发,配合 Keepalived 管理 VIP 与故障切换,实现双机或多机热备;适合大流量、对稳定性要求高的场景。
- 快速示例
- 在两台均衡器上安装组件并启用转发:
yum install -y ipvsadm keepalived echo 1 > /proc/sys/net/ipv4/ip_forward - Keepalived 主备配置(/etc/keepalived/keepalived.conf 片段)
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
- 在两台均衡器上安装组件并启用转发:
- 要点:VIP 对外暴露,域名解析到 VIP;后端服务器需开启服务并允许来自均衡器的流量;如需七层能力,可在 LVS 前再叠加 Nginx/HAProxy。
方案三 DNS 轮询与故障切换
- 思路:在 DNS 中为同一域名配置多条 A 记录(轮询返回),或将解析指向内部 HAProxy/Nginx 集群;为提升可用性,客户端可配置多个 DNS 服务器,并在服务端用 BIND 主从或 dnsmasq 做解析与转发。
- 示例与注意
- 多条 A 记录实现简单轮询:
www.example.com. IN A 203.0.113.11 www.example.com. IN A 203.0.113.12 - 客户端 /etc/resolv.conf 配置多个 DNS:
nameserver 8.8.8.8 nameserver 1.1.1.1 - 服务端可用 dnsmasq 做本地解析与转发,或 BIND 搭建主从同步。
- 多条 A 记录实现简单轮询:
- 限制:DNS 轮询不具备应用层健康检查,TTL 与客户端缓存会延迟故障切换;更适合作为入口层面的“粗粒度”负载或配合健康检查/就近解析使用。
域名解析与验证步骤
- 将域名解析指向负载均衡器入口(如 CNAME 到 LB 域名,或直接 A 记录到 VIP),并确保健康检查路径(如 / 或 /health)返回 2xx/3xx。
- 在负载均衡器上配置后端池与健康检查,必要时开启 X-Forwarded-For/X-Real-IP 以传递真实客户端信息。
- 验证
- 解析是否正确:
dig www.example.com +short - 连通与健康:
curl -I http://www.example.com/health - 观察分发:在各后端放置不同内容页面,连续刷新或压测,核对命中分布与日志。
- 解析是否正确:
- 防火墙与 SELinux:放行 80/443(及管理端口),必要时设置 SELinux 布尔值或策略以允许代理转发。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS域名如何实现负载均衡
本文地址: https://pptw.com/jishu/774324.html
