目标
环境切换需要即时且可逆,又不能等 DNS 传播。本配方在 Cloudflare Worker 中读取环境变量权重,按比例在蓝绿源站间分流,两个源站始终保持暖机;切换与回退只需修改变量并重新部署,数秒内完成;同时提醒会话粘性需按稳定标识哈希路由。
步骤要点
- 在 Worker 中按环境变量权重分流到两个源站。
- 通过更改变量并重新部署实现切换与回退。
- 按稳定标识哈希路由以保持会话粘性。
- 显式设置目标主机名以匹配 TLS 与路由。
export default {
async fetch(request, env) {
const toGreen = Math.random() * 100 < Number(env.GREEN_WEIGHT || 0);
const origin = toGreen ? 'green.internal' : 'blue.internal';
const url = new URL(request.url);
url.hostname = origin;
return fetch(new Request(url, request));
},
};
排错提示
- 会话粘性若破坏需按用户哈希路由。
- 权重是概率而非精确配额。
- 遍历 Worker 会增加一跳延迟。
适用边界
- 两套源站需始终健康。
- 权重控制是概率性的。