通过mesos marathon部署containerised node.js应用程序

1cosmwyk  于 2021-06-26  发布在  Mesos
关注(0)|答案(1)|浏览(388)

我正在使用marathon部署docker containerised node.js应用程序。我的马拉松应用程序规范如下:

{
  "id": "<some-name>",
  "cmd": null,
  "cpus": 1,
  "mem": 2800,
  "disk": 30720,
  "instances": 1,
  "container": {
    "docker": {
      "image": "<some-docker-registry-IP>:5000/<repo>",
      "network": "BRIDGE",
      "privileged": true,
      "forcePullImage": true,
      "parameters": [
        {
          "key": "net",
          "value": "host"
        }
      ],
      "portMappings": [
        {
          "containerPort": <some-port>,
          "hostPort": <some-port>,
          "protocol": "tcp",
          "name": null
        }
      ]
    },
    "type": "DOCKER"
  }
}

但问题是,一旦内存不足,就会重新启动部署应用程序的服务器。我需要我的服务来监听主机的私有ip,这就是我使用 --net=host .
是否可以通过释放内存来终止任务,以便marathon可以在不重新启动/关闭服务器的情况下重新生成它?或者有没有其他方法可以让docker容器无需使用 --net=host ?

yrwegjxp

yrwegjxp1#

基本上,如果节点应用程序显示内存泄漏行为,我认为它有问题。这是我要说的第一点。
第二种方法是在应用程序的docker映像中使用类似pm2的东西,当应用程序遇到问题时,它将负责重新启动应用程序(在容器本身中)。
此外,您可以实现一个marathon健康端点,以便marathon能够识别应用程序实际存在的问题。
为了达到一些冗余,我强烈建议您至少运行两个应用程序示例,并在公共从属节点上使用mesos dns和类似marathon lb的负载平衡器,它们将负责路由。这也允许您使用桥接网络,如果你想。

相关问题