我有一个关于申请的“健康检查”的问题。我指的是文档:https://docs.cloudfoundry.org/devguide/deploy-apps/healthchecks.html和我理解,当我们部署一个应用程序时,会创建一个默认的“健康检查”,它的类型是端口。CloudFoundry会自动检查此端口的健康状况。
我的问题是:
ssh放入已部署的应用程序并尝试使用命令lsof -i -P -n搜索可用端口时,我会看到以下响应: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 7 vcap 47u IPv4 474318791 0t0 TCP *:8080 (LISTEN)
diego-ssh 8 vcap 3u IPv4 474330297 0t0 TCP *:2222 (LISTEN)
diego-ssh 8 vcap 7u IPv4 474330524 0t0 TCP 10.XXX.XX.XXX:2222->10.YYY.YY.YYY:58858 (ESTABLISHED)你能告诉我上述哪一个反应作为健康检查端口吗?(还是我看错地方了?)
发布于 2021-12-30 02:12:50
你能告诉我上述哪一个反应作为健康检查端口吗?(还是我看错地方了?)
我怀疑这是你的申请。
Java7Vcap47u IPv4 474318791 0t0 TCP *:8080 (听)
它正在监听端口8080,它几乎总是云创建机构会告诉您的应用程序监听的端口(即$PORT)。
但这不是回应。您的应用程序正在监听该端口上的连接。健康检查( TCP健康检查)将定期运行,并与通过$PORT (即8080)分配的值建立TCP连接。如果该TCP连接成功,则健康检查通过。如果无法连接或超时,则健康检查失败,平台确定应用程序已崩溃。然后它将重新启动应用程序实例。
我知道CF连接这个端口来为部署的应用程序做健康检查。是否可以手动连接到已部署应用程序的Health (类似于CF内部的功能)?
是。cf ssh进入您的应用程序。然后运行nc -v localhost 8080。这将形成TCP连接。-v标志为您提供详细的输出。
例如:
> nc -v localhost 8080 # successful
Connection to localhost port 8080 [tcp/http-alt] succeeded!
> nc -v localhost 8081 # failure
nc: connectx to localhost port 8081 (tcp) failed: Connection refused
nc: connectx to localhost port 8081 (tcp) failed: Connection refused如何在Mac系统(安装了cf cli )上这样做?
默认情况下,您将没有直接进行此操作的权限。这也不是一个公平的比较。健康检查从容器内部运行,所以在容器内部运行nc (在cf ssh之后)是最准确的比较。
如果您想要使此工作,您可能可以在使用隧道能力 in cf ssh。我没有进行测试,但我认为这样的测试是可行的:cf ssh -L 8080:localhost:8080 YOUR-HOST-APP。
然后,您可以将nc -v localhost 8080和nc连接到ssh正在侦听的本地端口(即<local-port>:<destination>:<destination-port>)。同样,如果您想要精确性,那么您应该将cf ssh放入容器中,然后从那里运行nc。
https://stackoverflow.com/questions/70520491
复制相似问题