Debian Apache高可用架构实践
一、架构选型与总体思路
- 常见做法有两类:其一是用Keepalived+VIP做主备切换,让单台Apache对外提供无中断服务;其二是部署两台以上Apache节点+负载均衡器(HAProxy/Nginx 或 Apache自身 mod_proxy_balancer),负载均衡器也可双机用 Keepalived 做 VIP 漂移,实现更高吞吐与容错。若采用 DNS 轮询,仅能简单分发请求,无法感知后端健康与连接状态,生产环境更推荐负载均衡器方案。
二、方案一 Keepalived VIP 主备
- 适用场景:只有2台Apache,期望对外呈现1个IP,故障时自动切换。
- 实施要点:
- 在两台 Apache 节点安装并配置 Keepalived,使用VRRP协议漂移VIP。示例:节点A为MASTER priority 100,节点B为BACKUP priority 90;网卡如ens160;虚拟路由ID如51;认证口令如1111;VIP 如192.168.10.252/24。
- 健康检查脚本示例(/etc/keepalived/check_httpd.sh):检测 httpd 进程,异常时停止本机 Keepalived,促使对端接管 VIP。
- 启动服务:systemctl enable --now keepalived;故障演练可通过停止 httpd 或断网验证 VIP 漂移与恢复。
- 关键配置片段(节点A示例):
- global_defs { router_id web1 }
- vrrp_script check_httpd { script “/etc/keepalived/check_httpd.sh”; interval 3; weight -50; fall 2; rise 1 }
- vrrp_instance VI_1 {
state MASTER; interface ens160; virtual_router_id 51; priority 100; advert_int 1
authentication { auth_type PASS; auth_pass 1111 }
virtual_ipaddress { 192.168.10.252/24 }
track_script { check_httpd }
}
- 注意:生产环境建议为脚本设置最小权限、开启日志,并限制 VRRP 组播到受控网段。
三、方案二 负载均衡器 + 多 Apache 节点
- 拓扑建议:至少2台负载均衡器(双机 Keepalived 漂移 VIP)+ 2台以上 Apache 后端,对外统一通过 VIP 访问,避免单点。
- 负载均衡器选型与配置要点:
- HAProxy 示例(/etc/haproxy/haproxy.cfg):frontend 监听 *:80 或 *:443;backend 使用 balance roundrobin 或 leastconn,为每个 Apache 节点配置 server … check 健康检查;启用 httpchk 或应用层探针;可选 cookie 会话保持。
- Apache 作为负载均衡器:启用模块 mod_proxy、mod_proxy_http、mod_proxy_balancer、lbmethod_byrequests;配置 balancer:// 集群与 ProxyPass/ProxyPassReverse;如需会话保持,使用 stickysession(如 JSESSIONID 或自定义会话标识)。
- 会话与一致性:
- 有状态应用建议开启会话保持或将会话存入共享存储/数据库/Redis;无状态服务可直接轮询或最少连接。
- 健康检查与故障隔离:
- 负载均衡器应对后端做主动健康检查与失败摘除,避免将请求转发到异常节点;必要时结合应用健康端点(/health、/status)。
四、关键补充与运维要点
- 动态内容性能与稳定性:
- 选择并优化 MPM(event/worker);启用 KeepAlive、mod_deflate 压缩;使用 mod_cache/mod_cache_disk;PHP 场景优先 PHP-FPM + OPcache;按需调整 Timeout、MaxRequestWorkers 等参数。
- 监控与告警:
- 部署 Prometheus + Grafana 监控节点资源、连接数、5xx 错误率、后端健康等;结合 Alertmanager 或 Monit/Nagios 做主动告警与自动恢复。
- 数据与配置冗余:
- 后端建议配置 MariaDB 主从复制 与故障切换流程;静态资源使用共享存储或 CDN;定期备份配置与数据并演练恢复;对外域名可结合 DNS轮询 作简单分发(不作为唯一高可用手段)。
- 安全加固:
- 使用 ufw/firewalld 最小化放通(80/443、VIP 网段、管理端口);及时更新系统与软件;为负载均衡器与 Apache 启用 TLS/HTTPS;限制管理接口与后端管理路径访问。