OpenShift部署Neo4j后WebSocket连接失败问题求助
OpenShift上Neo4j Bolt连接WebSocket错误的解决思路
检查Route的协议兼容性
OpenShift默认Route为HTTP/HTTPS设计,Bolt作为二进制协议无法被HTTP路由正确处理。需调整Route配置:- 使用Passthrough终止策略:将Route的
tls.termination设为passthrough,避免OpenShift Router对Bolt流量做HTTP层处理,直接透传TCP流量。 - 若集群支持,创建TCP Route(OpenShift 4.10+支持),专门用于转发TCP协议的Bolt流量。
- 使用Passthrough终止策略:将Route的
修正Neo4j的Advertised Address配置
当前dbms.connector.bolt.advertised_address设置为0.0.0.0:7687,会导致客户端收到无效的连接地址。需将其修改为Neo4j Route的外部域名+端口,例如:env: - name: dbms.connector.bolt.advertised_address value: "your-neo4j-route.example.com:7687"确保客户端能解析该域名并访问对应端口。
调整客户端连接协议前缀
- 若通过浏览器或基于WebSocket的客户端连接,需使用
ws://(非加密)或wss://(加密)前缀,而非bolt://。例如:wss://your-neo4j-route.example.com:7687。 - 若使用Neo4j Desktop等桌面客户端,需直接通过TCP协议连接,此时不能依赖HTTP Route,需使用TCP Route、NodePort或ClusterIP(仅集群内客户端可用)。
- 若通过浏览器或基于WebSocket的客户端连接,需使用
验证Service与Pod的端口映射
确认Service的targetPort与Pod的7687端口一致,且协议为TCP,示例Service配置:spec: ports: - port: 7687 targetPort: 7687 protocol: TCP排查Neo4j日志与集群内连通性
- 查看Neo4j Pod日志,确认Bolt连接器正常启动(日志中会显示
Bolt enabled on 0.0.0.0:7687)。 - 在集群内启动测试Pod(如
curl镜像),执行nc -zv <neo4j-service-name> 7687,验证Service到Pod的连通性,排除集群内部网络问题。
- 查看Neo4j Pod日志,确认Bolt连接器正常启动(日志中会显示
内容的提问来源于stack exchange,提问作者Juliana
相关产品推荐
相关产品推荐

