我在尝试让Istio在群集上工作时遇到问题。我的基础架构如下:
我有一个Magento商店,上面有一个清漆作为前缓存。在安装istio之前,它正在工作。我已经启用了特使注入。 Varnish部署在Pod中,并具有自己的服务重定向,未缓存到magento服务。
当我尝试从清漆卷曲到magento时出现问题。
如果我从清漆卷曲magento服务,我将重定向到magento URL(这是预期的行为)
root@varnish-6468d5958d-dvxhx:/# curl -v store-es
* Rebuilt URL to: store-es/
* Trying 10.32.97.229...
* TCP_NODELAY set
* Connected to store-es (10.32.97.229) port 80 (#0)
> GET / HTTP/1.1
> Host: store-es
> User-Agent: curl/7.52.1
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< server: envoy
< date: Wed, 07 Nov 2018 11:08:47 GMT
< content-type: text/html
< content-length: 185
< location: https://store-sta.xxxxx.yyy/
< myheader: store-es-6484d46d66-952xj
< x-envoy-upstream-service-time: 4
<
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.13.8</center>
</body>
</html>
* Curl_http_done: called premature == 0
* Connection #0 to host store-es left intact
但是当我尝试相同但使用Host标头跳过magento重定向时,我得到了404:
root@varnish-6468d5958d-dvxhx:/# curl -v -H "Host: store-sta.xxxxx.yyy" store-es
* Rebuilt URL to: store-es/
* Trying 10.32.97.229...
* TCP_NODELAY set
* Connected to store-es (10.32.97.229) port 80 (#0)
> GET / HTTP/1.1
> Host: store-sta.xxxxx.yyy
> User-Agent: curl/7.52.1
> Accept: */*
>
< HTTP/1.1 404 Not Found
< date: Wed, 07 Nov 2018 11:11:59 GMT
< server: envoy
< content-length: 0
<
* Curl_http_done: called premature == 0
* Connection #0 to host store-es left intact
我检查了日志,并请求主机标头从未到达magento服务(在我的示例中为store-es)。当我检查清漆使者的日志时,它返回的是404:
[2018-11-07T11:11:50.548Z] "GET /HTTP/1.1" 404 NR 0 0 0 - "-" "curl/7.52.1" "e754b17f-ae2e-4734-beb4-f7a2d6e412da" "store-sta.xxxxx.yyy" "-" - - 10.32.97.229:80 10.32.67.5:45540
您知道为什么会这样吗?为什么主机标头在不请求magento服务的情况下返回404?
我还想提到magento在没有清漆的情况下可以正常工作,并且能够连接到Redis(在同一集群中)和mysql(外部集群),所以我放弃了magento的麻烦。
答案 0 :(得分:1)
我有一个类似的问题,其中Host标头打到特使是一个外部域,该内部域与内部服务条目名称不匹配(从不匹配)。因为它不匹配,所以它得到了404,我认为必须有一种方法可以通过VirtualService进行配置,但不确定如何。