问题标签 [marathon]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - 使用 Marathon 在 Mesos 上部署 Mysql
我有一个带有马拉松的 mesos 集群,一切都在 docker 中运行。我想部署生产 mysql 和 mongodb 服务器,并试图找出进行服务发现的最佳方法。
选项 1 是使用现有设置,该设置通过位于其中一个主服务器上的 haproxy 服务器代理所有内容。我的问题是每个查询都必须进行两次跳跃,从应用程序机器到主机器再到数据库机器,即使查询起源于数据库所在的机器。这真的很重要还是我很迂腐?
选项 2 是使用我已经设置但从未使用过的 mesos dns。这将需要在主机网络模式下运行 mysql docker 映像,或者将 3306 添加到 mesos 从站可以提供的端口,然后立即声明 3306。然后我将能够使用 mysql.marathon.mesos 作为任何连接的主机。
选项 3 是在每台机器上部署相同的 haproxy 服务器,并使用应用程序的本地 haproxy 将查询发送到正确的位置。这似乎比选项 1 好一点,因为第一跳总是在同一台机器上,但需要更多的工作来设置。
有没有人这样做过?这些类型的服务的正确模式是什么?
logging - 0.8.2 中的日志级别配置不正确?
我正在使用 marathon 0.8.2 和 mesosphere docker 映像(标签 v0.8.2)。我正在将--logging_level warn
标志传递给守护程序,但我仍然看到所有运行状况检查都通过了(日志级别 INFO)。
来自 docker inspect 的片段:
参数通过ps
:
但是,当我查看时docker logs mesos_marathon
,我看到了很多信息:
[INFO] [06/16/2015 15:49:25.302] [marathon-akka.actor.default-dispatcher-7] [akka://marathon/user/$f] 收到的健康结果 [Healthy(microbot.edb72ab0- 143e-11e5-8fb0-56847afe9799,2015-06-16T15:46:24.346Z,2015-06-16T15:49:25.206Z)]
[INFO] [06/16/2015 15:49:25.302] [marathon-akka.actor.default-dispatcher-7] [akka://marathon/user/$f] 收到的健康结果:[Healthy(microbot.e6946214 -143e-11e5-8fb0-56847afe9799,2015-06-16T15:46:24.346Z,2015-06-16T15:49:25.206Z)]
[INFO] [06/16/2015 15:49:25.302] [marathon-akka.actor.default-dispatcher-7] [akka://marathon/user/$f] 收到的健康结果:[Healthy(microbot.ea257847 -143e-11e5-8fb0-56847afe9799,2015-06-16T15:46:24.346Z,2015-06-16T15:49:25.206Z)]
[INFO] [06/16/2015 15:49:25.302] [marathon-akka.actor.default-dispatcher-7] [akka://marathon/user/$f] 收到的健康结果:[Healthy(microbot.ff9ac8c5 -143e-11e5-8fb0-56847afe9799,2015-06-16T15:46:24.346Z,2015-06-16T15:49:25.207Z)]
[INFO] [06/16/2015 15:49:25.302] [marathon-akka.actor.default-dispatcher-7] [akka://marathon/user/$f] 收到的健康结果:[Healthy(microbot.edbf8e46 -143e-11e5-8fb0-56847afe9799,2015-06-16T15:46:24.346Z,2015-06-16T15:49:25.207Z)]
[INFO] [06/16/2015 15:49:25.303] [marathon-akka.actor.default-dispatcher-7] [akka://marathon/user/$f] 收到的健康结果:[Healthy(microbot.f888a2eb -143e-11e5-8fb0-56847afe9799,2015-06-16T15:46:24.346Z,2015-06-16T15:49:25.208Z)]
[INFO] [06/16/2015 15:49:25.303] [marathon-akka.actor.default-dispatcher-7] [akka://marathon/user/$f] 收到的健康结果:[Healthy(microbot.edbc80f0 -143e-11e5-8fb0-56847afe9799,2015-06-16T15:46:24.346Z,2015-06-16T15:49:25.208Z)]
我当然错过了一些东西。
dns - mesos-dns,使用端口的最佳实践
我对服务发现和集群系统很陌生。我开始尝试使用 Mesos 和 Marathon 来部署 Docker 容器,Marathon REST API 和 UI 似乎做得很好。
我的问题是部署服务的实际发现。出于测试目的,我部署了一个通过 Marathon 扩展到 3 个实例的 Kafka 集群,就像我对 MongoDB 测试集群所做的那样。Mesos-DNS 客户端给了我一个类似的记录kafka.marathon.mesos
,mongo.marathon.mesos
这意味着从主机到容器的动态映射端口。问题是,我的客户明确需要有关目标端口的信息。有没有一种通用的方法可以自动和动态地从服务中获取这些端口信息?暴露多个端口的应用程序呢?
到目前为止我的想法: - 进行 REST 调用以获取有关已部署应用程序的状态并以某种方式提取相关数据 - 进行 DNS SRV 查找并以某种方式提取相关数据 - 拥有某种“主”,静态绑定到端口,具有动态的“客户”。
我搜索了很多这些信息,但最后大多数教程都以手动查找结束,这不是我的目标。
docker - Docker在马拉松上部署时不断失败
我对这些技术很陌生,并试图弄清楚。因此,我遵循了 Mesosphere 提供的基本教程,并且能够在本地创建一个集群(两个 VM)现在我想部署一个 nodejs 应用程序,所以我创建了一个 docker 映像,其中包含 nodejs express 框架和一个启动服务器的脚本。您可以在 docker 注册表中找到 docker 镜像,名为 pujariamol/nodejs-express,它在根级别有一个名为 runScript.sh 的脚本。
我尝试部署它的 JSON 如下:
我认为这会拉出我的 docker 容器并启动它。另外,我想运行 runScript.sh,所以我在 cmd 中尝试了 './runScript.sh' 但它不起作用,所以我尝试在 out.txt 中写入一些文本以进行测试,但似乎没有任何效果。部署应用程序的那一刻,mesos 显示此应用程序的失败状态。我正在使用 chrome 扩展邮递员在马拉松上部署它。我不知道出了什么问题。请帮助我在 Marathon 上部署此应用程序,如果您需要更多信息,请告诉我。
提前致谢。
jenkins - 詹金斯奴隶不在 mesos 上工作
我正在为 CI 使用 jenkins mesos 插件。最初,我遵循以下教程:http ://www.ebaytechblog.com/2014/05/12/delivering-ebays-ci-solution-with-apache-mesos-part-ii/
但是詹金斯本身并没有通过这个设置。(我得到错误无法加载 config.xml 文件,即使有一个)
然后我跟着https://rogerignazio.com/blog/scaling-jenkins-mesos-marathon/ ,我能够运行 jenkins master (jenkins framework/scheduler),但是当我定义要运行的脚本时,jenkins-slaves没有被创建。我想我缺少一些关于奴隶的配置。你能告诉我,没有创建奴隶来运行工作的原因是什么。
在詹金斯构建页面上,我得到:
在詹金斯日志中,我收到以下错误:
编辑:我想我遇到了错误,因为我没有定义任何容器端口映射。谁能告诉我该怎么做?
更新:实际上 0.7 版本的 mesos 插件存在很多问题。所以,我干脆降级到0.6版本。
jenkins - Mesos Marathon 如何处理应用程序数据持久性?
我一直在探索 Mesos、Marathon 框架来部署应用程序。我怀疑 Marathon 在应用程序被杀死时如何处理应用程序文件。
例如,我们正在使用通过 Marathon 运行的 Jenkins,如果 Jenkins 服务器出现故障,它将由 Marathon 再次重新启动,但这次定义的旧作业将丢失。
现在我的问题是如何确保如果应用程序重新启动,那些旧的应用程序作业应该可用?
谢谢。
dns - 如何在 Marathon Docker 参数中使用变量
我正在使用 Marathon 运行 Docker 容器,并尝试将该容器的 DNS 服务器设置为指向本地主机上的 Consul 代理。在容器内部,Marathon/Mesos 正在设置环境变量(可以在“args”中使用),但我需要从站的 IP 地址传递--dns
给docker run
. 例如,这不起作用,因为无法解析 HOST 变量:
我尝试使用 Mesos 从站可以访问的环境变量,但这似乎也不起作用。有什么建议么?
docker - Mesos 无法从私有 Docker 注册表部署容器
我有一个私有 Docker 注册表,可通过https://docker.somedomain.com访问(通过标准端口 443 而不是 5000)。我的基础设施包括一套 Mesosphere,它启用了 docker containerizer。我正在尝试通过 Marathon 将特定容器部署到 Mesos 从站;但是,这总是失败,因为 Mesos 几乎立即失败了任务,并且该沙箱的 stderr 和 stdout 中没有数据。
我尝试从标准 Docker Registry 中的映像进行部署,它似乎工作正常。我很难弄清楚出了什么问题。我的私有 Docker 注册表不需要密码身份验证(为调试而关闭),如果我进入 Meso 的从属实例,并以 root 身份使用 sudo su,我可以运行“docker pull docker.somedomain.com/services/myapp”每次都成功。
这是我开始任务的马拉松帖子数据:
我已经坚持了将近一天,我尝试过的一切似乎都产生了相同的结果。对此的任何见解将不胜感激。
我的版本: Mesos:0.22.1 Marathon:0.8.2 Docker:1.6.2
constraints - 使用 Marathon 约束的问题
我正在运行一个 mesos + marathon 集群,到目前为止一切正常。但我不知道如何在马拉松比赛中使用约束。
我已经用属性标记了我的 mesos 奴隶
在我的容器的马拉松描述中,我添加了
但是当我部署我的容器时,我只得到“INFO No matching offer for”,我不知道我做错了什么。
有什么我想念的吗?
docker - 如何干净地关闭 mesos-slave?
我有一个用例,我需要彻底关闭 mesos-slave 并停止在节点上执行的所有框架。使用 Marathon 和 Spark 以及 docker 作为容器化程序,因此节点上还有几个其他 docker 容器正在为框架任务运行,我想在(干净地)停止从站时停止这些容器。
令人惊讶的是,我找不到任何涉及此内容的文档。有没有办法做到这一点?