Apache通过mod_proxy和mod_proxy_balancer模块实现蓝绿部署,核心是反向代理精准路由流量;需准备隔离的蓝/绿两套后端环境,配置独立balancer并用ProxyPass切换主路由,验证后平滑重载生效。

Apache 本身不内置蓝绿部署功能,但能通过 mod_proxy 和 mod_proxy_balancer 模块,以反向代理+后端分组的方式支撑蓝绿切换逻辑。关键不在 Apache “做发布”,而在它“精准控制流量路由”。
准备两个独立的后端服务组
蓝绿部署的前提是两套完全隔离、可并行运行的环境。你需要先部署好:
-
蓝色环境(blue):例如运行在
10.0.1.10:8080和10.0.1.11:8080的旧版本服务 -
绿色环境(green):例如运行在
10.0.2.10:8080和10.0.2.11:8080的新版本服务
两个环境配置应一致(如数据库连接、中间件参数),仅应用代码/镜像版本不同。
用 ProxyBalancer 定义两组负载均衡器
在 Apache 配置中分别声明两个 balancer,并禁用其中一组的初始流量:
<ProxyBalancer "balancer://blue">
ProxySet lbmethod=byrequests
BalancerMember http://10.0.1.10:8080 route=blue1
BalancerMember http://10.0.1.11:8080 route=blue2
</ProxyBalancer>
<ProxyBalancer "balancer://green">
ProxySet lbmethod=byrequests
BalancerMember http://10.0.2.10:8080 route=green1
BalancerMember http://10.0.2.11:8080 route=green2
</ProxyBalancer>
注意:lbmethod=byrequests 可避免会话粘滞问题;route 参数便于后续配合 sticky session(如有需要)。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
主路由指向当前活跃环境
默认将全部流量导向蓝色环境:
ProxyPass / balancer://blue/ ProxyPassReverse / balancer://blue/
绿色环境此时不接收任何生产请求,可用于冒烟测试、接口验证、监控观察等。验证通过后,只需修改这一行:
ProxyPass / balancer://green/
然后执行 apachectl graceful —— Apache 会平滑重载配置,已有连接不受影响,新请求立即走绿环境。
支持快速回滚与配置管理
回滚就是把 ProxyPass 改回 balancer://blue/ 并再次 graceful 重载。为降低出错风险,建议:
- 把 balancer 定义和 ProxyPass 分开成不同
Include文件,例如balancers.conf和routes.conf - 使用符号链接管理活跃配置(如
current.conf → routes-blue.conf),切换时只改链接 - 搭配健康检查(
ping或自定义hc参数)确保后端真实可用
不复杂但容易忽略。

















