Apache Ignite on DC/OS 马拉松(或任何其他 java 应用程序)

Apache Ignite on on DC/OS marathon (or any other java app)

我一直在尝试使用 http://apacheignite.gridgain.org/docs/mesos-deployment 的官方文档在 DC/OS (1.8.7) marathon 上配置 Apache Ignite,但由于缺少一些 hack,我无法获得它按照文档工作。核心原因之一似乎是 cmd

"cmd": "java -jar ignite-mesos-1.8.0.jar"

将通过错误 "sh: java: command not found"。这将表明 java 不在路径中,但在马拉松主机上我已经验证 java 实际上至少对于我的普通用户来说实际上可以在路径上访问。

我怀疑需要以某种方式将 java 添加到试图 运行 cmd 的 mesos-container 的路径中,但我一直无法找到有关如何设置的任何文档创建的容器中的路径或默认环境变量(ignite-mesos 生成的任务也需要 JAVA_HOME 设置,任务中也缺少该变量)。作为参考,我的 marathon.json 文件如下...

{
  "id": "/ignition",
  "cmd": "java -jar ignite-mesos-1.8.0.jar",
  "args": null,
  "user": null,
  "env": {
    "IGNITE_MEMORY_PER_NODE": "2048",
    "IGNITE_NODE_COUNT": "3",
    "IGNITE_VERSION": "1.8.0",
    "MESOS_MASTER_URL": "zk://master.mesos:2181/mesos",
    "IGNITE_RUN_CPU_PER_NODE": "0.1"
  },
  "instances": 0,
  "cpus": 0.25,
  "mem": 2048,
  "disk": 0,
  "gpus": 0,
  "executor": null,
  "constraints": null,
  "fetch": [
    {
      "uri": "http://SERVER_HERE/ignite-mesos-1.8.0.jar"
    }
  ],
  "storeUrls": null,
  "backoffSeconds": 1,
  "backoffFactor": 1.15,
  "maxLaunchDelaySeconds": 3600,
  "container": null,
  "healthChecks": null,
  "readinessChecks": null,
  "dependencies": null,
  "upgradeStrategy": {
    "minimumHealthCapacity": 1,
    "maximumOverCapacity": 1
  },
  "labels": {
    "HAPROXY_GROUP": "external"
  },
  "acceptedResourceRoles": null,
  "ipAddress": null,
  "residency": null,
  "secrets": null,
  "taskKillGracePeriodSeconds": null,
  "portDefinitions": [
    {
      "protocol": "tcp",
      "port": 10108
    }
  ],
  "requirePorts": false
}

Ignite 似乎期望在每个代理节点上安装 JDK 1.7/1.8,并相应地设置 JAVA_HOME 环境变量。

不幸的是,Mesos 框架似乎没有得到很好的维护,因为它仍然使用 Mesos 0.22 库。