Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker Kubernetes:替换后端服务的mod_群集(反向代理)_Docker_Nginx_Kubernetes_Reverse Proxy_Mod Cluster - Fatal编程技术网

Docker Kubernetes:替换后端服务的mod_群集(反向代理)

Docker Kubernetes:替换后端服务的mod_群集(反向代理),docker,nginx,kubernetes,reverse-proxy,mod-cluster,Docker,Nginx,Kubernetes,Reverse Proxy,Mod Cluster,我正在将当前服务迁移到Kubernetes。目前,后端服务通过mod_群集解决。mod cluster manager在httpd上运行,mod_cluster客户端在启动时自动向httpd/mod_cluster manager注册其web上下文 user-->ingress-rule--> httpd [running mod_cluster manager]--> Jboss[mod_cluster clients] 我通过以下入口规则解析我的UI apiVersion

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

user-->ingress-rule--> httpd [running mod_cluster manager]--> Jboss[mod_cluster clients]
我通过以下入口规则解析我的UI

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 cluster公开诸如
myservice
之类的服务。我禁用了mod_cluster并创建了一个Kubernetes服务
myservice
,该服务解析到后端Pod,认为入口规则将获得尽可能远的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/
#重定向到myjbossserv

ProxyPass/myservice/services/command/http://myjbossserv:8080/myservice/services/command/ 解决这个问题的最简单方法是使用反向代理规则,以满足所有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/
#重定向到myjbossserv

ProxyPass/myservice/services/command/http://myjbossserv:8080/myservice/services/command/ 404表示后端已成功处理您的请求,但未找到数据。您可能未在jboss路径中配置某些内容,或者请求与jboss预期的不同。您是否也可以提供服务列表,并描述您的
httpd
服务是否一切正常?您是否部署了入口控制器?Hi@NickRak 1。是,我已部署入口控制器,入口规则部署在2以上。如果我让mod cluster处于启用状态,我可以看到请求进入httpd。然后,httpd/mod_集群管理器解析后端服务,如myservice 3。若我禁用modcluster manager,我可以看到请求到达httpd,然后httpd尝试解析静态内容/var/www/myservice,但无法解析。它不会尝试解析服务。4.如果我使用反向代理规则而不是mod_cluster,它会工作!但是这不是很“云本地”@NickRak adddum:我已经在主qn中添加了工作反向代理规则。。。