You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何配置GCP负载均衡直接转发WebSocket流量至后端服务器

直接用GCP负载均衡转发WebSocket流量到后端服务器的配置步骤

我之前刚完成过类似的架构调整,其实GCP的HTTP(S)负载均衡原生就支持WebSocket协议,不需要额外开启特殊开关——因为WebSocket是基于HTTP握手升级的,只要后端服务器能正确处理Upgrade请求头,就能直接通过LB转发流量。下面是具体的配置步骤:

1. 确认后端WebSocket服务器的准备工作

  • 确保你的WebSocket服务器监听了指定端口(比如8080,或者直接用80/443),并且能正确响应WebSocket握手请求(识别Upgrade: websocketConnection: Upgrade头)。
  • 检查服务器的防火墙规则:允许来自GCP负载均衡的流量(可以先临时放开0.0.0.0/0到对应端口,后续再根据GCP LB的IP段做更严格的限制)。

2. 创建/更新后端服务

登录GCP控制台,找到负载均衡 -> 后端服务

  • 如果是新建后端服务:选择你的WebSocket服务器所在的实例组(或实例模板),设置端口映射——把负载均衡的前端端口(比如443)映射到后端服务器的WebSocket监听端口(比如8080)。
  • 如果是已有后端服务:编辑服务,添加或调整端口映射,确保指向正确的后端端口。
  • 这里不需要额外配置WebSocket相关的参数,GCP LB会自动处理HTTP升级请求。

3. 配置前端转发规则

  • 进入负载均衡 -> 转发规则,创建或更新规则:
    • 选择HTTP(S)负载均衡类型(如果用加密的wss://就选HTTPS)。
    • 绑定对应的SSL证书(如果是HTTPS,用GCP托管证书或自定义上传的证书)。
    • 前端端口设置为对外暴露的WebSocket端口:443(对应wss://)或80(对应ws://)。
    • 目标指向你刚才配置的后端服务。

4. 配置健康检查

因为WebSocket基于HTTP,所以用普通的HTTP健康检查即可:

  • 在后端服务的健康检查设置里,创建一个HTTP健康检查,指定后端服务器的健康检查路径(比如/health)和端口,确保后端能返回200 OK
  • 健康检查是LB判断后端是否可用的关键,一定要配置正确,否则LB不会把流量转发到异常的实例。

5. 验证配置

wscat工具快速测试连接:

wscat -c wss://your-lb-domain-name.com

如果能成功建立连接并收发消息,说明配置生效了。也可以查看GCP负载均衡的日志,确认流量直接转发到了后端WebSocket服务器,没有经过Nginx。

常见注意事项

  • 如果用自定义端口(非80/443),要确保前端转发规则的端口和后端服务的端口映射一致,同时后端防火墙开放该端口。
  • 对于HTTPS的wss://,务必确保SSL证书有效且绑定正确,否则浏览器会拒绝连接。
  • 如果后端服务器在VPC内,要确保VPC的防火墙规则允许LB的健康检查IP和转发流量进入。

内容的提问来源于stack exchange,提问作者Bharanitharan

火山引擎 最新活动