awf*_*fm9 9 cloud puppet foreman coreos apache-mesos
我们目前正在设计我们新的 Apache Mesos 云设置的架构。目标是通过将不同的堆栈移动到同一架构上来统一我们的系统。主要工作负载是使用 Apache Spark 和我们的企业基础设施(包括 Web 服务器、邮件服务器等)进行大数据分析。
这个想法是在 Docker 容器中运行我们的 Web 服务,该容器运行在 Mesos 的可用调度程序之一(Marathon/Chronos、Aurora 或 Singularity)之上。因此,这将是第一个 Mesos 框架组。在它旁边,我们会有 Apache Spark 框架和几个用于数据存储的数据库框架。这将是第二组 Mesos 框架。我们将在并行运行它们进行测试后选择细节。
然而,我们很难决定在哪个基础上运行 Mesos 本身。理想情况下,我们希望尽可能靠近金属运行它。我们还希望使用编排解决方案来确保 Mesos 和框架守护进程在失败时始终运行/重新启动。我们正在考虑的选项如下:
1) 在最小的操作系统中将 Mesos 和框架作为 docker 容器运行。在这方面,我们目前倾向于 CoreOS 和 Fleet。
2) 直接在 Ubuntu/Debian 服务器上运行 Mesos 和框架。对于这个选项,我们倾向于 Foreman 和 Puppet。
至于这个问题,我们正在寻找解决方案,按重要性排序:
我们之前没有使用过 CoreOS,但它似乎是我们正在走向的选项。我对此的一个大(主观)问题是我们在 Docker 容器上运行 Mesos,然后在 Mesos 上运行 Docker 容器。这对我来说似乎是“不洁”和错误的。这种考虑是没有道理的?
类似的想法涉及层之间的冗余。为了解释我从哪里来,我更希望 Mesos 是一个真正的操作系统,它只是在金属之上运行。似乎无论您使用什么基础,最终都会在架构的不止一层(即 CoreOS&Fleet&SystemD == Mesos&Marathon&Chronos)上获得相同的预期功能。这是不可避免的吗?
有没有其他好的选择来运行我们没有考虑的 Mesos 下的层,记住我们的标准?
在 Mesos 下配置和运行服务可以是一项复杂的操作,也可以是一项简单的操作,您应该首先根据您的需求和目标定义要在其下运行的服务模式,以获得您想要的灵魂。
我在 HAProxy 下运行超过 70 台机器和各种不同服务的设置,以通过 Mesos-DNS 和 Marathon、Api 网关、Chronos、Jenkins、Docker、Collectd 和 Graphite 等实现动态负载平衡。
现在回答您的直接问题:
因此,我对您的最佳答案是使用您最喜欢的 Linux 发行版并安装 Mesos,或者如果您想学习新的东西并且可能快速且轻松地学习一些新东西,请使用(开源)DCOS和CoreOS。