谷歌云负载均衡按查询字符串分流VM及gcloud更新方法咨询
GCP 基于查询参数的GCE流量路由方案
需要用到的GCP服务
- 外部HTTP(S)负载均衡器:属于7层负载均衡,原生支持基于查询参数的高级路由规则,是实现该需求的核心组件
- 受管实例组(MIG)或无别名实例组:把VM1、VM2分别加入两个独立的实例组,作为负载均衡的两个后端服务
- 可选:GCP托管SSL证书:如果站点需要HTTPS访问,可直接在负载均衡侧绑定托管证书,无需在VM内部单独配置
实现逻辑
你只需要在负载均衡关联的URL Map中配置两条路由规则即可:
- 默认路由规则直接绑定VM1对应的后端服务,覆盖所有不带
placeholder查询参数的请求,包括根路径/的访问 - 新增一条高级路由规则,匹配查询参数中存在
placeholder键的请求,将其路由到VM2对应的后端服务
路由规则支持仅匹配参数是否存在,也支持匹配参数的具体值,可根据你的实际需求调整
gcloud SDK操作支持
你完全可以通过gcloud命令行更新查询参数绑定的VM后端,只需要修改URL Map的对应路由规则即可,示例命令参考:
# 为已有URL Map新增查询参数匹配规则,将带placeholder参数的请求路由到VM2的后端服务 gcloud compute url-maps update YOUR_URL_MAP_NAME \ --add-route-rule \ --route-rule-name=placeholder-route \ --priority=100 \ --service=VM2_BACKEND_SERVICE_NAME \ --query-parameter-matches="name=placeholder,presentMatch=true" # 将默认路由的后端服务设置为VM1的后端服务 gcloud compute url-maps set-default-service YOUR_URL_MAP_NAME \ --default-service=VM1_BACKEND_SERVICE_NAME
替换命令中的资源名称为你自己的对应资源ID即可完成配置,全程不需要修改VM内部的服务配置。
内容的提问来源于stack exchange,提问作者user13121687
相关产品推荐
相关产品推荐

