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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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 拆分运行状况检查无法设置自定义路径_Docker_Google App Engine_Google App Engine Python_App Engine Flexible - Fatal编程技术网

Docker 拆分运行状况检查无法设置自定义路径

Docker 拆分运行状况检查无法设置自定义路径,docker,google-app-engine,google-app-engine-python,app-engine-flexible,Docker,Google App Engine,Google App Engine Python,App Engine Flexible,这最初是一条内部消息,可能涉及到我们的一些项目,但背景信息将非常有用,因此在本文中留下了对这些项目的参考 我们遇到了谷歌应用程序引擎的问题,阻止我们进行新的部署 错误消息是: ERROR: (gcloud.app.deploy) Error Response: [4] Your deployment has failed to become healthy in the allotted time and therefore was rolled back. If you believe thi

这最初是一条内部消息,可能涉及到我们的一些项目,但背景信息将非常有用,因此在本文中留下了对这些项目的参考

我们遇到了谷歌应用程序引擎的问题,阻止我们进行新的部署

错误消息是:

ERROR: (gcloud.app.deploy) Error Response: [4] Your deployment has failed to become healthy in the allotted time and therefore was rolled back. If you believe this was an error, try adjusting the 'app_start_timeout_sec' setting in the 'readiness_check' section.
这是一个令人惊讶的错误,尤其是因为我们直到最近才发现这个问题。今年早些时候,我们为准备新的Google App Engine split运行状况检查所做的更改似乎没有真正起作用,因此,当系统在9月15日(此处提到)被弃用时,从那时起就没有任何部署起作用。此处列出了运行状况检查规范:

错误消息引用了
app\u start\u timout\u sec
设置,有关此设置的更多详细信息,请参见:。我不认为这是一个超时问题,因为我们的系统启动得相当快(少于默认的5分钟),所以我调查了应用程序版本的日志(从现在起,除非另有说明,否则我将讨论codeWOF生产系统)。版本只列出了“工作”版本,但当我在日志查看器中查看时,列出了所有不同的版本,包括失败的版本

通过以下
app.yaml
日志显示此错误:

liveness_check:
    path: "/gae/liveness_check"

readiness_check:
    path: "/gae/readiness_check"
这证实了系统已成功启动,检查正在通过,但返回了错误的代码,是301重定向,而不是200重定向。但是,由于检查指向错误的URL,因此没有显示前缀

我认为重定向是由
APPEND\u SLASH
设置或HTTP到HTTPS重定向引起的。我尝试了以下配置,得到了以下结果:

liveness_check:
    path: "/liveness_check/"

readiness_check:
    path: "/readiness_check/"
liveness_check:
    path: "/liveness_check/"

readiness_check:
    path: "/readiness_check/"
与上述错误相同,因此设置自定义路径似乎不会影响健康检查的发送位置。在所有日志记录消息中搜索自定义路径只返回一条消息(摘要如下):

所以这是第一件要研究的事情,正确设置自定义路径,我无法改变它

我读了所有StackOverflow的帖子,都在谈论应用程序引擎和拆分健康检查(只有不到10个条目),并尝试了所有建议的修复。这些措施包括: 使用
gcloud app descripe--project codewof
检查拆分运行状况检查设置是否正确。 使用
gcloud app update--split health checks--project codewof
设置拆分运行状况检查(再次)

我最后一次尝试的结果是非常有趣的。我删除了
app.yaml
文件中的所有健康检查设置

文件()说明了以下内容:

liveness_check:
    path: "/liveness_check/"

readiness_check:
    path: "/readiness_check/"
liveness_check:
    path: "/liveness_check/"

readiness_check:
    path: "/readiness_check/"
默认情况下,来自运行状况检查的HTTP请求不会转发到应用程序容器。如果要将运行状况检查扩展到应用程序,请指定活动性检查或就绪性检查的路径。如果应用程序返回200 OK响应代码,则对应用程序的自定义运行状况检查被视为成功

这听起来像是在检查整个虚拟机,而不是其中运行的docker映像,部署工作正常

GET 200 0 B 2 ms GoogleHC/1.0 /readiness_check
GET 200 0 B 3 ms GoogleHC/1.0 /liveness_check
但是如果docker容器由于某种原因失败,Google应用程序引擎将不会知道有问题。我们需要研究这个场景,看看它到底意味着什么,我找不到任何确切的说明。然而,这允许我们进行紧急部署

我还测试了以下内容以跳过HTTPS重定向

settings/production.py

SECURE_REDIRECT_EXEMPT = [
    r'^/?cron/.*',
    r'^/?liveness_check/?$',
    r'^/?readiness_check/?$',
]
我发现的最后一件令人困惑的事情是
codewof dev
网站的行为与我读过的文档相冲突。我再也找不到文档了,但我很肯定它说appengine实例将运行旧的遗留或新的剥离运行状况检查。但是
codewof-dev
网站同时运行这两个功能

GET 200 0 B 2 ms GoogleHC/1.0 /readiness_check
GET 200 2 B 2 ms GoogleHC/1.0 /_ah/health
GET 200 2 B 2 ms GoogleHC/1.0 /_ah/health
GET 200 2 B 2 ms GoogleHC/1.0 /_ah/health
GET 200 2 B 2 ms GoogleHC/1.0 /_ah/health
GET 200 2 B 2 ms GoogleHC/1.0 /_ah/health
GET 200 2 B 2 ms GoogleHC/1.0 /_ah/health
GET 200 0 B 2 ms GoogleHC/1.0 /readiness_check
GET 200 2 B 2 ms GoogleHC/1.0 /_ah/health
GET 200 0 B 2 ms GoogleHC/1.0 /readiness_check
GET 200 2 B 2 ms GoogleHC/1.0 /_ah/health
GET 200 0 B 2 ms GoogleHC/1.0 /readiness_check
GET 200 2 B 2 ms GoogleHC/1.0 /_ah/health
GET 200 0 B 2 ms GoogleHC/1.0 /readiness_check
GET 200 0 B 3 ms GoogleHC/1.0 /liveness_check
最后一个发现:我今早测试了app.yaml文件中的所有健康检查配置(正如我之前所做的),但也删除了配置URL路由文件中的所有自定义健康检查URL。通过以下运行状况检查,系统已成功部署

GET 200 0 B 2 ms GoogleHC/1.0 /readiness_check
GET 200 0 B 3 ms GoogleHC/1.0 /liveness_check

这似乎表明App Engine VM实例有自己的检查,并且它没有进入我们的Docker容器。这对于大多数GAE灵活的实例来说都是不错的,但不是我们正在使用的自定义运行时选项。

我可以看到他们也提出了同样的问题,我在这篇评论中添加了链接,因为您在那里有回复,我认为,如果其他人也有同样的问题,这会很有帮助。@EnriqueDelValle上面评论中指向issuetracker.google.com的链接给了我一个“拒绝访问”的信息。我想读一下对此的回应。。。
GET 200 0 B 2 ms GoogleHC/1.0 /readiness_check
GET 200 2 B 2 ms GoogleHC/1.0 /_ah/health
GET 200 2 B 2 ms GoogleHC/1.0 /_ah/health
GET 200 2 B 2 ms GoogleHC/1.0 /_ah/health
GET 200 2 B 2 ms GoogleHC/1.0 /_ah/health
GET 200 2 B 2 ms GoogleHC/1.0 /_ah/health
GET 200 2 B 2 ms GoogleHC/1.0 /_ah/health
GET 200 0 B 2 ms GoogleHC/1.0 /readiness_check
GET 200 2 B 2 ms GoogleHC/1.0 /_ah/health
GET 200 0 B 2 ms GoogleHC/1.0 /readiness_check
GET 200 2 B 2 ms GoogleHC/1.0 /_ah/health
GET 200 0 B 2 ms GoogleHC/1.0 /readiness_check
GET 200 2 B 2 ms GoogleHC/1.0 /_ah/health
GET 200 0 B 2 ms GoogleHC/1.0 /readiness_check
GET 200 0 B 3 ms GoogleHC/1.0 /liveness_check
GET 200 0 B 2 ms GoogleHC/1.0 /readiness_check
GET 200 0 B 3 ms GoogleHC/1.0 /liveness_check