Envoy仅针对新连接进行TCP流量切换的可行性咨询
可以实现,具体方案如下
完全可以通过Envoy的加权集群配置实现你要的效果,核心逻辑是:Envoy的加权路由只对新发起的连接生效,已建立的活跃WebSocket长连接不会被强制中断,会持续保持到连接自然关闭。
具体配置步骤
- 确保你已经在Envoy中定义了
cluster_a和cluster_b两个集群,且cluster_b的健康检查状态正常 - 调整路由配置中的加权规则,将
cluster_a的权重设为0,cluster_b的权重设为100。示例配置片段如下:
route_config: name: tcp_route virtual_hosts: - name: tcp_service domains: ["*"] routes: - match: { prefix: "/" } route: weighted_clusters: clusters: - name: cluster_a weight: 0 - name: cluster_b weight: 100
关键注意事项
- 权重调整后,所有新发起的TCP/WebSocket连接都会被路由到
cluster_b,而已经在cluster_a上的活跃连接不受影响,会继续保持直到客户端主动断开或连接超时 - 不要急于删除
cluster_a的配置,需要持续监控cluster_a的活跃连接数,直到所有连接都自然耗尽后,再移除相关配置 - 如果需要更平滑的过渡(比如部分新连接先切到B),可以逐步降低
cluster_a的权重(比如从100→50→0),但你的需求是直接切所有新连接到B,直接设权重0即可
内容的提问来源于stack exchange,提问作者Brinal
相关产品推荐
相关产品推荐

