【问题标题】:Kubernetes: Replace mod_cluster for back end services (reverse proxy)Kubernetes:将 mod_cluster 替换为后端服务(反向代理)
【发布时间】:2018-06-13 10:31:55
【问题描述】:

我正在将我当前的服务迁移到 Kubernetes。目前后端服务通过 mod_cluster 解决。 mod 集群管理器在 httpd 上运行,mod_cluster 客户端在启动时自动向 httpd/mod_cluster 管理器注册其 Web 上下文

user-->ingress-rule--> httpd [running mod_cluster manager]--> Jboss[mod_cluster clients]

我通过以下入口规则解析我的用户界面

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: httpd
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
spec:
  rules:
  - host: myk8s.myath.myserv.com
    http:
      paths:
      - path: /
        backend:
          serviceName: httpd
          servicePort: 443
  tls:
  - hosts:
    - myk8s.myath.myserv.com

这很好用,可以解析 UI,可以登录并解析所有静态内容等。

Mod 集群公开myservice 等服务。我禁用了 mod_cluster 并创建了一个 Kubernetes 服务 myservice 解析到后端 Pod 认为 Ingress 规则将请求尽可能远地获取 httpd 然后 httpd 将能够通过 Kubernetes 解析后端服务但我得到 404s我无法解决myservice

服务可以通过如下的反向代理规则来解决,但这不是首选的解决方案

# Redirect to myjbossserv
ProxyPass /myservice/services/command/  http://myjbossserv:8080/myservice/services/command/          <-----myjbossserv is a service registered in kubernetes
ProxyPassReverse /myservice/services/command/  http://myjbossserv:8080/myservice/services/command/

非常感谢任何帮助

【问题讨论】:

  • 404 表示后端成功处理了您的请求,但没有找到数据。您可能在 jboss 路径中配置错误,或者请求与 jboss 预期的不同。
  • 您能否提供服务列表并描述您的httpd 服务是否一切正常?
  • 你部署了入口控制器吗?
  • 嗨@NickRak 1。是的,我已经部署了入口控制器,入口规则部署在2之上。如果我启用mod集群,我可以看到请求到达httpd。然后 httpd/mod_cluster manager 解析后端服务,例如 myservice 3。如果我禁用 modcluster manager,我可以看到请求到达 httpd,然后 httpd 尝试解析静态内容 /var/www/myservice 但不能。它不会尝试解析服务。 4. 如果我使用反向代理规则而不是 mod_cluster 它可以工作!但这不是很“云原生”
  • @NickRak addeddum:我已将工作 Revers 代理规则添加到主 qn...

标签: docker nginx kubernetes reverse-proxy mod-cluster


【解决方案1】:

解决这个问题的最简单方法...满足所有 HA 和健壮性用例是使用反向代理规则。有多种方法可以配置这些,例如在图像构建时或通过配置映射...

# Redirect to myjbossserv
ProxyPass /myservice/services/command/  http://myjbossserv:8080/myservice/services/command/          <-----myjbossserv is a service registered in kubernetes
ProxyPassReverse /myservice/services/command/  http://myjbossserv:8080/myservice/services/command/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-19
    • 2018-10-24
    • 2022-06-23
    • 2018-12-19
    • 1970-01-01
    • 2023-04-04
    • 2018-11-12
    • 1970-01-01
    相关资源
    最近更新 更多