首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过mesos-marathon部署容器化node.JS应用程序

通过mesos-marathon部署容器化node.JS应用程序
EN

Stack Overflow用户
提问于 2016-05-12 15:37:52
回答 1查看 614关注 0票数 1

我正在使用马拉松来部署我的Docker容器化node.js应用程序。我的马拉松应用规格如下:

代码语言:javascript
复制
 {
  "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的情况下可以路由到外部世界?

EN

回答 1

Stack Overflow用户

发布于 2016-05-12 17:35:30

基本上,我认为如果Node应用程序显示内存泄漏行为,那么它就有问题。这是我要解决的第一点。

第二个是你应该在你的应用程序的Docker镜像中使用类似pm2的东西,当你的应用程序遇到问题时,它将负责重启你的应用程序(在容器本身中)。

此外,您还可以实现一个Marathon health endpoint,这样马拉松就可以识别出应用程序实际上存在问题。

为了实现一些冗余,我强烈建议您至少运行应用程序的两个实例,并在公共从节点上使用Mesos DNS和一个负载均衡器(如marathon-lb ),它将负责路由。如果您愿意,这也允许您使用桥接网络。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37180273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档