docker - Liberty Admin Center 将 Docker 服务器显示为正在运行,而它没有

标签 docker websphere-liberty autoscaling

我在 Ubuntu x64 上使用 Liberty 16.0.0.2。当我使用 REST 在另一台主机上部署远程 Liberty Docker 容器时,一切正常,但是当我手动停止这些远程容器(使用 docker stop xxx 命令)时,管理中心仍然显示这些容器正在运行,即使在重新启动集体 Controller 之后也是如此。

我已经为我的 Docker 容器定义了自动缩放,其中一些容器由于该策略而被停止,但一些真正运行的容器在管理中心中显示为已停止。以下是正在运行的容器列表:

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
fb59f94cd25b        liberty_img         "/opt/ibm/wlp/bin/ser"   41 minutes ago      Up 41 minutes                           liberty_container11
5fd2d5858f60        liberty_img         "/opt/ibm/wlp/bin/ser"   42 minutes ago      Up 42 minutes                           liberty_container10
98117dac4f69        liberty_img         "/opt/ibm/wlp/bin/ser"   42 minutes ago      Up 42 minutes                           liberty_container9
cdce71905081        liberty_img         "/opt/ibm/wlp/bin/ser"   8 hours ago         Up 3 hours                              liberty_container6

这是管理中心向我展示的内容(注意容器 5 和 11):

enter image description here

如何解决这个问题,以便 Controller 发现我的 Docker 容器的正确状态?

messages.log file is attached ,但我在那里看不到任何有趣的东西。

最佳答案

由于您直接执行 docker stop 命令,因此集体成员基本上被杀死了,因此它不会向 Controller 报告它正在被停止。因此, Controller 报告该服务器的最后一个已知状态(由该服务器发布到 Controller ;成员将信息推送到 Controller )。对于进程被终止(而不是“正确”删除)的非 docker Liberty 成员来说,同样的行为也是如此。

如果 docker 成员被 serverCommands mbean(通过 Admin Center、swagger、java、jconsole、JMX REST 连接器等)或通过 '/wlp/bin ./server stop {memberName}' 命令停止,则不应看到这个问题,因为成员将首先向 Controller 报告它正在停止。由于它与您的环境有关,因此我会注意,如果您想通过管理中心停止/启动/重新启动自动缩放的服务器,您首先需要从该成员中删除自动缩放功能,或者将该成员置于维护模式。

为了回到你的集体的正确状态,你应该只需要等到成员的心跳超时过期 3 次(心跳的默认值是 60 秒,所以总共 3 分钟),之后 Controller 应该将它们标记为已停止(因为在约定的时间内没有收到他们的消息)。或者,您可以启动成员备份,然后“正确”停止它们(这可以通过管理中心通过将停止的成员置于维护模式(因为它们是自动缩放的)然后选择“重新启动”来启动成员备份然后“停止”以停止它。然后您可以删除维护模式)。

关于docker - Liberty Admin Center 将 Docker 服务器显示为正在运行,而它没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38317595/

相关文章:

docker - 从 Docker 容器显示 Android Studio GUI,同时通过 headless Ubuntu 服务器进行 SSH 隧道传输

postgresql - 如何使用 Java Main 将 jar 添加到 CloudFoundry java buildpack 的类路径

redis - 有没有办法在 Kubernetes 上自动缩放 Redis 集群?

amazon-web-services - cloudformation 错误 : Received 1 FAILURE signal(s) out of 1. 无法满足 100% MinSuccessfulInstancesPercent 要求

docker - kubernetes,在一个容器中按容器共享卷

Docker 构建命令在 WSL 2 Ubuntu 18.04 中挂起

scala - 有没有一种方法可以从两个 jar 构建docker镜像,例如每个 jar 都位于其自己的层中

grails - javax.servlet.ServletException : Filter [sitemesh]: could not be initialized when deploying grails 2. 11 应用程序到 WebSphere 8.5 自由配置文件?

ssl - 如何在 Open Liberty 上启用 TLSv1.2 目前它说已为 TLSV1 启用

amazon-web-services - 如何在自动缩放组中添加 aws new elb