Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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
Google cloud platform 谷歌云可抢占实例:ACPI关闭信号后停止接收请求_Google Cloud Platform_Google Cloud Load Balancer - Fatal编程技术网

Google cloud platform 谷歌云可抢占实例:ACPI关闭信号后停止接收请求

Google cloud platform 谷歌云可抢占实例:ACPI关闭信号后停止接收请求,google-cloud-platform,google-cloud-load-balancer,Google Cloud Platform,Google Cloud Load Balancer,我有一个服务,我想在谷歌云平台上的可抢占实例上运行。这些实例将位于负载平衡器后面。大多数请求处理时间小于10秒 我不能修改服务本身,但是在同一个映像上有一个nginx实例,它位于我可以配置的服务前面 据我所知,ACPI软关闭信号在实例关闭前30秒发送到实例,此时我希望它停止接收请求 我可以创建一个重新配置nginx以停止向该服务转发健康检查,并用拇指朝下的方式来响应,但这似乎有点黑客行为,我觉得应该有更好的方法。(说这项服务不健康也让人感觉有点不对——它只是想被淘汰。) 告诉负载平衡器停止向该实

我有一个服务,我想在谷歌云平台上的可抢占实例上运行。这些实例将位于负载平衡器后面。大多数请求处理时间小于10秒

我不能修改服务本身,但是在同一个映像上有一个nginx实例,它位于我可以配置的服务前面

据我所知,ACPI软关闭信号在实例关闭前30秒发送到实例,此时我希望它停止接收请求

我可以创建一个重新配置nginx以停止向该服务转发健康检查,并用拇指朝下的方式来响应,但这似乎有点黑客行为,我觉得应该有更好的方法。(说这项服务不健康也让人感觉有点不对——它只是想被淘汰。)

告诉负载平衡器停止向该实例发送请求的适当方式是什么,这样它就可以(希望)满足当前的请求,然后在没有收到任何新请求的情况下关闭

                             ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
                           ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─  │
                         ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─  │
                          Preemptible instance                  │   │
                         │                                        │
                                                                │   │
                         │                                        │
                                                                │   │
        ┌─────────┐      │   ┌─────────┐           ┌─────────┐    │
        │  Load   │          │         │  /health  │  some   │  │   │
   ────▶│balancer │──────┼──▶│  nginx  │──────────▶│ service │    │
        │         │          │         │   /api/…  │         │  │   │
        └─────────┘      │   └─────────┘           └─────────┘    │
                                                                │   │
                         │                                        │
                                                                │   │
                         │                                        │─
                                                                │─
                         └ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
与“这是更好的解决方案”相比,这个答案更像是“我所希望的”,但如果健康检查真的很快就能回答,那么这个答案就行了

我理解你从哪里来的想法,在它停止之前切断请求,这样你就不会有中间的正在进行的请求,并且用超时来回答。这已经通过服务的优雅停止实现了

如果服务处于正常停止状态,它将停止接收请求,但在停止前等待当前正在进行的请求完成,创建nginx服务对其他服务的依赖关系,以便它们在停止后停止

这样,如果负载平衡器每秒钟检查一次服务器是否启动并直接应答,当google发送停止实例的信号时,lb将几乎立即将其从可能的目标中删除,正在进行的请求将正常完成,然后服务器应完全停止。这样,您应该几乎不会丢失任何请求。

与“这是更好的解决方案”相比,这个答案更像是一个“我希望的”,但如果健康检查真的很快就能回答,那么这个答案就行了

我理解你从哪里来的想法,在它停止之前切断请求,这样你就不会有中间的正在进行的请求,并且用超时来回答。这已经通过服务的优雅停止实现了

如果服务处于正常停止状态,它将停止接收请求,但在停止前等待当前正在进行的请求完成,创建nginx服务对其他服务的依赖关系,以便它们在停止后停止


这样,如果负载平衡器每秒钟检查一次服务器是否启动并直接应答,当google发送停止实例的信号时,lb将几乎立即将其从可能的目标中删除,正在进行的请求将正常完成,然后服务器应完全停止。这样,您应该几乎不会丢失任何请求。

您使用的是哪种类型的实例组?@night gold用于当前的非抢占实例:托管、自动缩放和自动修复。您如何进行健康检查?一个简单的答案路径?对于nginx,200行吗?是的。它是通过nginx向某个服务发送的
proxy\u pass
ed,该服务回复200 OK(如果一切正常)。您的nginx是否处于优雅的停止模式?您使用的是哪种类型的实例组?@night gold用于当前不可抢占的实例:托管、自动缩放和自动修复。您如何进行健康检查?一个简单的答案路径?对于nginx,200行吗?是的。这是通过nginx向
某个服务发送的
代理\u pass
ed,该服务回复200 OK(如果一切正常)。您的nginx是否处于优雅的停止模式?