今天部署marathon还按照之前的方式配置,结果启动时报错

Dec 03 23:51:36 bigdata01.zetyun.com marathon[12311]: No start hook file found ($HOOK_MARATHON_START). Proceeding with the start script.
Dec 03 23:51:41 bigdata01.zetyun.com marathon[12311]: [scallop] Error: Required option ‘master’ not found

解决方案如下:

修改/etc/default/marathon配置文件:

添加:

MARATHON_MASTER=”zk://10.20.31.100:2181,10.20.31.210:2181,10.20.31.221:2181/mesos”
MARATHON_ZK=”zk://10.20.31.100:2181,10.20.31.210:2181,10.20.31.221:2181/marathon”

参考文章https://my.oschina.net/u/1013857/blog/1621941

官方提供了两种安装方式(http://mesosphere.github.io/marathon/docs/),一种是下载压缩包解压,一种是使用yum(https://mesosphere.com/blog/mesosphere-package-repositories/)。

第一种没有问题,解压后,执行脚本加上参数启动即可:

./bin/start --master zk://127.0.0.1:2181/mesos --zk zk://127.0.0.1:2181/marathon

第二种只需要执行指令即可:

sudo rpm -Uvh http://repos.mesosphere.com/el/6/noarch/RPMS/mesosphere-el-repo-6-2.noarch.rpm
sudo yum -y install marathon

安装完成之后,执行systemctl start marahon后,浏览器打开http://ip:8080,发现打不开。

执行systemctl status marahon或者查看/var/logs/messages,发现报错“Required option ‘master’ not found”。

显然marathon启动需要执行master参数,尝试用命令直接启动,是没问题的,说明yum安装的没有问题。官网页没有告知如何配置相关参数,百度到一种说法,类似于mesos的配置方式,即:

echo zk://127.0.0.1:2181/mesos > /etc/marathon/conf/master
echo zk://127.0.0.1:2181/marathon > /etc/marathon/conf/zk

再次尝试启动发现问题依旧,于是查看/usr/lib/systemd/system/marathon.service文件,发现服务启动时指定了一个环境变量文件,调用了脚本/usr/share/marathon/bin/marathon启动,没有与入参相关的地方。查看这个脚本,也发现并没有类似mesos那种读取配置文件的地方。

猜测marahon新版本可能不支持这种用法了,与是google了一下,终于找到了官方jira的一个issue(https://jira.mesosphere.com/browse/MARATHON-7932),原来在1.5(https://github.com/mesosphere/marathon/blob/master/changelog.md)之后,已经改为通过环境变量配置相关参数。

于是修改/etc/default/marathon文件,添加

MARATHON_MASTER="zk://127.0.0.1:2181/mesos"
MARATHON_ZK="zk://127.0.0.1:2181/marathon"

再次尝试启动服务后成功。

(MARATHON_MESOS_USER=”root”)