You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法访问通过AKS部署并经NGINX Ingress暴露的指定Neo4j数据库

问题分析与修复步骤

核心问题梳理

  • HTTP路径路由错误:Ingress处理HTTP请求,但当前Service将端口80指向Neo4j的Bolt端口(7687),而非HTTP管理端口(7474)
  • 路径重写缺失:Neo4j Web UI依赖根路径资源,直接用前缀路径会导致静态资源加载失败
  • TCP转发配置冲突:多个Neo4j Bolt端口不能共用Ingress的同一外部端口
  • Helm资源修改方式错误:直接编辑Ingress Controller Deployment会被Helm覆盖,应通过Helm参数配置

分步修复

1. 修正Neo4j Service配置

每个Neo4j需暴露HTTP和Bolt两个端口,以aks-neo4j-one为例:

apiVersion: v1
kind: Service
metadata:
  name: aks-neo4j-one
spec:
  type: ClusterIP
  ports:
    # HTTP端口,供Ingress路由Web UI
    - protocol: TCP
      port: 7474
      targetPort: 7474
      name: http
    # Bolt端口,供TCP转发数据库连接
    - protocol: TCP
      port: 7687
      targetPort: 7687
      name: bolt
  selector:
    app: aks-neo4j-one

同理创建aks-neo4j-two的Service,确保标签匹配对应Deployment。

2. 配置Ingress路径重写

NGINX Ingress需通过注解实现路径重写,将前缀路径转换为Neo4j需要的根路径:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: neo4j-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  ingressClassName: nginx
  rules:
  - http:
      paths:
      - path: /neo4jone(/|$)(.*)
        pathType: ImplementationSpecific
        backend:
          service:
            name: aks-neo4j-one
            port:
              number: 7474
      - path: /neo4jtwo(/|$)(.*)
        pathType: ImplementationSpecific
        backend:
          service:
            name: aks-neo4j-two
            port:
              number: 7474

3. 修正TCP转发配置

两个Neo4j的Bolt端口需分配不同的外部LB端口,更新tcp-services ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-services
  namespace: ingress-test
data:
  7687: "ingress-test/aks-neo4j-one:7687"
  7688: "ingress-test/aks-neo4j-two:7687"

4. 通过Helm更新Ingress Controller

避免直接编辑Deployment,用Helm命令同步TCP配置:

helm upgrade ingress-nginx ingress-nginx/ingress-nginx \
  --namespace ingress-test \
  --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz \
  --set-string controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-internal"="true" \
  --set controller.tcp.services.7687="ingress-test/aks-neo4j-one:7687" \
  --set controller.tcp.services.7688="ingress-test/aks-neo4j-two:7687"

5. 验证连接

  • HTTP访问:http://<内部LB IP>/neo4jone或http://<内部LB IP>/neo4jtwo,输入账号密码即可正常使用Web UI
  • Bolt连接:用Neo4j客户端连接bolt://<内部LB IP>:7687(对应db1)或bolt://<内部LB IP>:7688(对应db2)

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 20:13:16