Appearance
蓝绿部署与灰度发布
HAProxy 支持多种发布策略,可实现不停机的平滑更新和精细的流量控制。
蓝绿部署基础
haproxy
frontend web_front
bind *:80
bind *:443 ssl crt /etc/ssl/certs/
acl is_green var(txn.deploy_target) -m str green
use_backend web_green if is_green
default_backend web_blue
backend web_blue
server app1 10.0.0.11:8080 check
backend web_green
server app1 10.0.0.21:8080 check灰度发布(基于权重)
haproxy
backend web_backend
balance roundrobin
# 旧版本 90%,新版本 10%
server app_old 10.0.0.11:8080 weight 90 check
server app_new 10.0.0.21:8080 weight 10 check按用户比例灰度
haproxy
acl is_beta_user cook(BETA_VERSION) -m str true
acl is_vip_user cook(USER_TIER) -m str vip
use_backend web_new if is_beta_user
use_backend web_new if is_vip_user金丝雀发布脚本
bash
for pct in 5 10 20 30 50 100; do
echo "set server web_backend/app_new weight $pct" | socat /run/haproxy-admin.sock stdio
sleep 60
doneA/B 测试配置
haproxy
acl group_a cook(AB_GROUP) -m str A
acl group_b cook(AB_GROUP) -m str B
use_backend web_variant_a if group_a
default_backend web_variant_b