marathon小知识点分享之如何远程调试marathon

简介:

目的,在centos服务器上启动marathon服务后,可以在window上使用intellij idea进行远程调试;

主要环境:

1、本人是参考https://mesosphere.github.io/marathon/docs/提供的方式,部署的marathon服务;

2、https://github.com/mesosphere/marathondown下的marathon源码

  1. 如果不想修改源码的话,将marathon的源码down下来后,直接导入到intellijidea里,就可以

  2. 如果想修改源码后,再进行远程调试的话,那么需要对marathon源码进行重新编译,打包成jar包后,替换服务器上的/marathon根目录/target/scala-2.11下的源码包;这样的话,保证本地调试的源码与服务器上运行的源码是一致。

 

  • marathon的远程调试与spark的远程调试有什么区别?

    个人感觉,主要一方面的区别:

    在去年年底研究过spark的远程调试,需要在spark-class脚本里添加jvm参数,如:

声明JAVA_OPTS

wKioL1mVlTryjuqpAAH93VV4wwY154.png-wh_50

Marathon这一点做的比较好,不需要添加,

无论你是从git上直接down的源码,还是通过https://mesosphere.github.io/marathon/下载部署包

在启动脚本bin/start里都提供了调试参数,如下图所示:

wKioL1mVk9iwHjxtAABou7WmmIM708.png-wh_50

不过,如果要实现远程调试的话,需要将上面参数suspend=n的值,由n改成y, 不然的话,远程调试不起作用。

具体步骤:

1、修改启动脚本start

wKioL1mVlGWRQ-jAAADHsrgHmEQ698.png-wh_50

2、更新启动marathon服务的命令,改成调试模式

启动脚本start

wKioL1mVklyg7t9gAAChADXVOLQ286.png-wh_50

因此,将marathon的启动服务的命令,改成下面的形式

/usr/local/marathon/bin/start --jvm-debug 9999 --master zk://master001:2181,master002:2181,master003:2181/mesos--zk zk://master001:2181,master002:2181,master003:2181/marathon--framework_name marathon --mesos_user root --mesos_role marathon_role--mesos_authentication_principal marathon_user

 

3、intellij idea 中,将启动marathon的方式,改成远程调试模式

wKiom1mVkl-zo4A-AAIiBX5GTV8808.png-wh_50

 

4、在服务器上,启动marathon服务,

wKioL1mVkmCTgLgAAAJ3zGoN_tU999.png-wh_50

5、window上,打断点,并启动debug

wKiom1mVkmaxWvV3AACdJq-Kn6M807.png-wh_50

 wKiom1mVkmmztuC3AAOdu2oaId0539.png-wh_50

6、开始debug远程调试

wKioL1mVkmmi1fWcAAHov9bTa8I157.png-wh_50


查看服务器上,是否打印出了日志

 wKioL1mVkmyzbf05AAJv0iEvRnk504.png-wh_50


 OK!

 












本文转自故新51CTO博客,原文链接:http://blog.51cto.com/xingej/1957177 ,如需转载请自行联系原作者

相关文章
|
存储 Kubernetes 安全
Kubernetes必备知识: PersistentVolumeClaim
PersistentVolumeClaim(简称PVC)是用户存储的请求,PVC消耗PV的资源,可以请求特定的大小和访问模式,需要指定归属于某个Namespace,在同一个Namespace的Pod才可以指定对应的PVC。 当需要不同性质的PV来满足存储需求时,可以使用StorageClass来实现。 每个 PVC 中都包含一个 spec 规格字段和一个 status 声明状态字段。
3729 0
Kubernetes必备知识: PersistentVolumeClaim
|
Kubernetes 安全 Linux
Pod必备知识: SecurityContexts
Security Context主要用于限制容器的行为,从而保障系统和其他容器的安全。这一块的能力不是 Kubernetes 或者容器 runtime 本身的能力,而是 Kubernetes 和 runtime 通过用户的配置,最后下传到内核里,再通过内核的机制让 SecurityContext 来生效。所以这里介绍的内容,会比较简单或者说比较抽象一点。 1.容器级别的Security Context:仅对指定容器生效 2.Pod级别的Security Context:对指定Pod中的所有容器生效 3.Pod Security Policies(PSP):对集群内所有Pod生效
1620 0
Pod必备知识: SecurityContexts
|
NoSQL 调度 数据中心
|
5月前
|
Prometheus 监控 Kubernetes
一篇文章讲明白Kubernetes(k8s)部署Promehteus监控
一篇文章讲明白Kubernetes(k8s)部署Promehteus监控
221 0
|
6月前
|
关系型数据库 MySQL Nacos
【深入浅出Nacos原理及调优】「实战开发专题」采用Docker容器进行部署和搭建Nacos服务以及“坑点”
【深入浅出Nacos原理及调优】「实战开发专题」采用Docker容器进行部署和搭建Nacos服务以及“坑点”
296 1
|
存储 Kubernetes Docker
kubenetes学习 1
kubenetes学习
|
11月前
|
Kubernetes Linux Go
基于Goland和dlv远程调试Kubernetes组件
基于Goland和dlv远程调试Kubernetes组件
404 0
|
运维 Kubernetes Cloud Native
Kubernetes(K8s)常用命令大全:熟练编排更完美
Kubernetes(K8s)常用命令大全:熟练编排更完美
1427 0
|
Kubernetes 容器
kubenetes学习 2
kubenetes学习
|
Kubernetes 容器 Perl
kubenetes学习 4
kubenetes学习
106 0