Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Marathon/Mesos 集群排错记录

Marathon/Mesos 集群排错记录

作者头像
陆道峰
发布于 2020-06-17 14:01:05
发布于 2020-06-17 14:01:05
85500
代码可运行
举报
运行总次数:0
代码可运行

问题一

问题描述

部署某个镜像到Mesos集群的某个Agent一直停留在Waiting,但是在Mesos UI上发现这个Agent的资源是够的(4CPU/14G mem,只使用了1CPU/256M mem)。为了重现这个问题,我在这台Agent上部署了2048镜像,对应的Marathon Json文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
 "id": "/2048-test",
 "cmd": null,
 "cpus": 0.01,
 "mem": 32,
 "disk": 0,
 "instances": 1,
 "constraints": [
   [      "hostname",      "CLUSTER",      "10.140.0.15"
   ]
 ],
 "container": {
   "type": "DOCKER",
   "volumes": [],
   "docker": {
     "image": "alexwhen/docker-2048",
     "network": "BRIDGE",
     "privileged": false,
     "parameters": [],
     "forcePullImage": false
   }  },
 "portDefinitions": [
   {
     "port": 10008,
     "protocol": "tcp",
     "labels": {}    }
 ]}

环境

  • 5 Mesos Slave/3 Mesos Master
  • CentOS 64bit
  • Marathon 1.0
  • Mesos 0.28.1

排错过程

查看Marathon log
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker logs marathon_container
...
run_jar --task_launch_timeout 900000 --zk zk://10.140.0.14:2181/marathon --event_subscriber http_callback --https_address 10.140.0.14 --http_address 10.140.0.14 --hostname 10.140.0.14 --master zk://10.140.0.14:2181/mesos --logging_level warn
run_jar --task_launch_timeout 900000 --zk zk://10.140.0.14:2181/marathon --event_subscriber http_callback --https_address 10.140.0.14 --http_address 10.140.0.14 --hostname 10.140.0.14 --master zk://10.140.0.14:2181/mesos --logging_level warn
...

没发现异常。

查看Martathon文档

目前位置笔者一直认为问题处在Marathon这边,所以就尝试去Marathon的Doc看看有没有常见的Troubleshooting

果然有!An app Does Not Leave “Waiting”

This means that Marathon does not receive “Resource Offers” from Mesos that allow it to start tasks of this application. The simplest failure is that there are not sufficient resources available in the cluster or another framework hords all these resources. You can check the Mesos UI for available resources. Note that the required resources (such as CPU, Mem, Disk) have to be all available on a single host. If you do not find the solution yourself and you create a github issue, please append the output of Mesos /state endpoint to the bug report so that we can inspect available cluster resources.

根据提示去找Mesos的/state信息。

根据Mesos state API得到当前Mesos集群的所有状态信息的Json文件:

然后到在线Json编辑器中格式化后查看Agent中的资源分配现状:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 "resources": {
       "cpus": 4,
       "disk": 97267,
       "mem": 14016,
       "ports": "[1025-2180, 2182-3887, 3889-5049, 5052-8079, 8082-8180, 8182-32000]"
     },
     "used_resources": {
       "cpus": 1,
       "disk": 0,
       "mem": 128,
       "ports": "[16957-16957]"
     },
     "offered_resources": {
       "cpus": 0,
       "disk": 0,
       "mem": 0
     },
     "reserved_resources": {
       "foo": {
         "cpus": 3,
         "disk": 0,
         "mem": 10000
       }
     },
     "unreserved_resources": {
       "cpus": 1,
       "disk": 97267,
       "mem": 4016,
       "ports": "[1025-2180, 2182-3887, 3889-5049, 5052-8079, 8082-8180, 8182-32000]"
     }

从中可以发现:虽然只使用了1CPU 128M mem,但是为foo保留了3CPU 10000M mem,这直接导致没有足够的CPU资源。这是Marathon无法部署container到Mesos Agent的根本原因。

解决问题

只需要将这个Agent上的资源疼出来就好了:

  1. 更改Marathon上的Json文件将这个Agent上的App部署到其它Agent上。

总结

  1. 遇到问题先去查看log
  2. 因为是开源项目,log中没发现问题可以去浏览项目的documentation,一般像Marathon/Spark开源项目都会提供Troubleshooting类似的文档说明
  3. Mesos/Marathon集群虽然是开源项目,但是涉及的知识点还是很多的。这里要把大问题化解成小问题或者在笔记本上分析问题,标记出重要的问题都是很好的方法
  4. Mesos /state API是分析集群的好帮手

问题二

问题描述

简言之就是Marathon部署的container一直显示waiting,但是这个可不是资源的问题,这个是docker image的问题。

公司同事开发了开源项目linkerConnector,主要目的就是读取Linux/proc目录,收集进程的信息。为了方便部署,我把这个Golang Project容器化了,容器化的使用方法在这里。但是部署到Mesos Cluster一直失败,Marathon一直显示waiting

环境描述

问题一

排错过程

查看失败的container

登录到Mesos Agent,docker ps -a

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
b13e79caca0a        linkerrepository/linker_connector        "/bin/sh -c '/linkerC"   17 minutes ago      Created                                    mesos-c64aa327-a803-40bb-9239-91fbd

docker inspect container:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"State": {
           "Status": "Created",
           "Running": false,
           "Paused": false,
           "Restarting": false,
           "OOMKilled": false,
           "Dead": false,
           "Pid": 0,
           "ExitCode": 0,
           "Error": "",
           "StartedAt": "2016-08-26T08:22:40.713934966Z",
           "FinishedAt": "0001-01-01T00:00:00Z"
       }

因为之前失败的container都被我删除了,上述输出是根据现有container修改的,但是信息是和之前对应的。

自己分析

随着个项目的更新以及重新构建镜像后,这个问题解决了,但是我分析出了原因:

  1. container需要挂在主机的/proc目录
  2. 我直接-v /proc:/proc
  3. 容器中的服务会写进程信息到容器的/proc目录,主机同时也会写信息到主机的/proc目录,因为容器的/proc和主机的/proc挂载在一起,这就导致读写冲突了,所以容器一直启动失败。

解决方案

将主机的/proc挂在到容器的非/proc目录,同时传餐告诉容器中的服务要到哪读取/proc信息

总结

  1. 容器出问题记得docker ps/docker inspect/docker logs
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与系统 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
​使用Docker Compose一条指令设置Mesos
本文介绍如何使用Docker Compose来设置一个单节点的Mesos集群。首先,介绍了Docker Compose的安装和使用,然后通过一个简单的YAML文件描述了如何设置Mesos集群。使用Docker Compose,可以简化部署和配置过程,提高生产效率。
Techeek
2018/01/02
7940
mesos+marathon的端口占用问题 原
另外在mesos的agent上有一个resources的字段,里面也可以设置端口的范围 原则上应用首先按照marathon的配置进行端口随机划分,但是到了agent会根据具体的host上的情况,再次按照resources的设置分派并上报给marathon和mesos master (上面的结论是我猜的)
domain0
2018/08/01
4600
利用Mesos构建多任务调度系统
背景 公司内部的云平台为各个业务线提供了大量的实体机和虚拟机来运行业务的服务,经过统计发现,这些分配给业务的机器cpu, memory等资源利用并不充分; 如果能够充分利用这些机器上的空闲资源同时又能保证业务服务的正常运行,将会节省不少的机器资源; 选型 一提到多任务运行和调度,大部分人可能首先都会想到Kubernetes(k8s) + Docker, 跑起来如清风拂面, 顺畅无比。然而我们的业务机器大部分为centos 6.2, linux kernel 2.6的环境,而docker的运行需要Linux
扫帚的影子
2018/09/26
1.3K0
利用Mesos构建多任务调度系统
docker Mesos 安装与使用[docker中文手册]
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说docker Mesos 安装与使用[docker中文手册],希望能够帮助大家进步!!!
Java架构师必看
2022/01/17
7290
docker Mesos 安装与使用[docker中文手册]
『高级篇』docker之Mesos集群环境搭建(24)
PS: 所有的服务已经搭建,完毕,下一步就把之前写的6个微服务部署到我们的Mesos集群里面哈哈!
IT架构圈
2018/11/30
5730
『高级篇』docker之Mesos集群环境搭建(24)
Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)
随着"互联网+"时代的业务增长、变化速度及大规模计算的需求,廉价的、高可扩展的分布式x86集群已成为标准解决方案,如Google已经在几千万台服务器上部署分布式系统。Docker及其相关技术的出现和发展,又给大规模集群管理带来了新的想象空间。如何将二者进行有效地结合?下面将记录使用Mesos+Zookeeper+Marathon+Docker分布式部署Paas云平台环境,其中: 1)Mesos:Mesos采用与Linux kernerl相同的机制,只是运行在不同的抽象层次上。Mesos kernel利用资源
洗尽了浮华
2018/01/22
2.7K0
Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)
Mesos+Marathon+Docker构建docker集群化管理
由Docker引领的容器技术最近一年在生产环境叫嚣的比较厉害,由于Docker本身拥有的一些特性,使得越来越多的人愿意并且想尝试在生产环境构建Docker,有关docker相关的介绍可以看我去年发布的文章(http://my.oschina.net/xxbAndy/blog/493184 )。然而随着业务的规模不断扩大,对docker的管理和维护也对运维人员有一些挑战,使用一些开源的框架和服务满足互联网公司的基本需求是一种常见而高效的方式,本篇文章就简单介绍一下使用Mesos+Marathon来对docke
BGBiao
2018/02/26
1.9K0
Mesos+Marathon+Docker构建docker集群化管理
7条命令在Docker中部署Mesos集群
所有使用的Docker容器构建文件是有也。您可以在本地构建每个容器或只使用位于Docker Hub预构建的容器。下面的命令会自动下载所需的预建的容器为您服务。
星哥玩云
2022/07/04
3700
DCOS之Marathon应用管理篇
最近推出DCOS之Marathon相关文章,主要介绍DCOS系统选用Marathon作为应用管理工具使用情况,请阅读第三遍文章:DCOS之Marathon应用管理篇
zouyee
2021/02/01
8580
DCOS之Marathon应用管理篇
『高级篇』docker之Mesos微服务部署(26)
PS:基本的mesos和marathon讲述完成了,因为主机内存后面的结果没有演示但是基本的命令和镜像有了后面基本是,基本操作啦!下次一起学学docker swarm!
IT架构圈
2018/12/05
6190
DCOS之Marathon应用拓展篇
最近推出DCOS之Marathon相关文章,主要介绍DCOS系统选用Marathon作为应用管理工具使用情况,上周我们介绍了应用相关基础知识,接下来请阅读第四遍文章:DCOS之Marathon应用拓展篇
zouyee
2021/02/01
6390
如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台
(2)添加apache-maven源 为Mesos提供项目管理和构建自动化工具的支持
星哥玩云
2022/07/25
6560
如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台
跟我一起学docker(17)--多节点mesos集群
多节点mesos集群 1.配置master 配置文件:/etc/default/mesos 增加配置:IP=192.168.30.3(当前节点IP) 2.配置slave节点 配置文件:/etc/def
IT架构圈
2018/05/31
6900
用一个命令使用 Docker Compose 安装Mesos
如果你还没有尝试 Docker,你应该现在试试了。它能提供的功能和简单的用户体验只会令你惊叹。在这篇文章中,我将向您展示如何使用 Docker Compose 构建单节点的 Mesos 系统。
Xiaoxing Ye
2018/01/15
8290
用一个命令使用 Docker Compose 安装Mesos
使用Docker Compose一键安装安装Mesos
该文章介绍如何使用Docker Compose一键安装Mesos。文章首先介绍了Docker Compose的发布,然后演示了如何使用Compose文件在单节点上部署Mesos。最后,文章提供了一个YAML文件示例,用于部署包括Mesos、Zookeeper和Marathon在内的整个Mesos集群。
Coder9527
2018/01/05
1.2K0
Mesos+Zookeeper+Marathon的Docker管理平台部署记录(2)--负载均衡marathon-lb
之前介绍了Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)的操作,多余的废话不说了,下面接着说下在该集群环境下的负载均衡marathon-lb的部署过程: 默认情况下,mesos marathon会把app发布到随机节点的随机端口上,当mesos slaves和app越来越多的时候,想查找某组app就变得困难。 mesos提供了两个工具:mesos-dns和marathon-lb,他们俩是mesosphere 官网提供的两种服务发现和负载均衡工具,其中: mesos-dn
洗尽了浮华
2018/01/22
1.5K0
Mesos+Zookeeper+Marathon的Docker管理平台部署记录(2)--负载均衡marathon-lb
通过Shodan发现目标应用Marathon服务的RCE漏洞
大家好,今天要和大家分享的是,作者在Shodan搜索中发现某应用系统Marathon服务的无需密码验证bug,进一步提权形成RCE漏洞。作为一名开发工程师,作者通过发现该漏洞得到的经验是:在做漏洞众测时,具备一定的开发背景经验非常重要,if you know how something works, you might be able to break it,只有了解目标应用的工作机制,才能有效地发现它存在的问题。最终作者凭借该漏洞获得厂商上万美金的奖励。
FB客服
2019/10/10
1K0
通过Shodan发现目标应用Marathon服务的RCE漏洞
CentOS7下安装Mesos教程
Mesos是根据Linux内核相同原则而创建的,而不同点仅是在于抽象的层面。Mesos内核运行在每一个机器上,同时通过 API 为各种应用提供跨数据中心和云的资源管理调度能力(如:Hadoop、Spark、Kafka、Elastic Search)。
格子Lin
2018/08/27
1.3K0
CentOS7下安装Mesos教程
Mesos+Zookeeper+Marathon管理Docker(1)
.服务器信息:物理机10.1.44.35上的KVM虚拟机 名称IP服务单点10.1.44.69Mesos\Marathon\Deimos\Zookeeper\DockerMesos Master Node110.1.44.32Mesos\Marathon\Deimos\ZookeeperMesos Master Node210.1.44.50Mesos\Marathon\Deimos\ZookeeperMesos Master Node310.1.44.55Mesos\Marathon\Deimos\
早起的鸟儿有虫吃
2018/04/12
7370
用Mesos分布式架构进行工作
小编说:2010年,一个旨在解决扩容问题的项目诞生——Apache Mesos,它在某种程度上对CPU、内存、磁盘资源进行抽象,从而允许整个数据中心如同单台大服务器般运转。无需虚拟机和操作系统,Mesos创造了一个单独底层的集群为应用提供所需资源。本文将向您简单介绍Mesos分布式架构,详细讨论请见《Mesos 实战》一书。
博文视点Broadview
2020/06/11
6970
用Mesos分布式架构进行工作
相关推荐
​使用Docker Compose一条指令设置Mesos
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验