我们目前正在设计我们新的 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 下的层,记住我们的标准?
我一直在检查 CoreOS,我印象深刻。在我发现 CoreOS 之前,我将Mesos/Marathon/Chronos堆栈视为“集群内核”。
鉴于以下比较:
init.d == Mesos+Marathon == CoreOS+Fleet
cron == Mesos+Chronos == CoreOS+?????
Run Code Online (Sandbox Code Playgroud)
我很好奇 CoreOS 是否有分布式作业调度程序?还是大多数人只是使用 Fleet 来运行其他东西?
我正在尝试使服务器上的 docker 更安全。主要问题是大多数人说“如果一个人可以访问 docker,他们也可以是 root”,对于少数管理员来说,这不是您想要的。
详细地说,他们可以使用-v并挂载/etc到/mnt容器中并更改影子文件并获得对主机的访问权限。他们也可以使用-d, 或特权选项来做更多的事情。
所以基本上,我想“尝试”和限制一些事情。
--add-cap-d (某些项目?)到目前为止我的想法:
可选项目是在提交到 git 代码时制作容器,并让“检查器”验证内容Dockerfile并为它们创建图像。然后对该映像进行签名并自动部署它。(但这不会再给他们太多自由)
此外,删除绑定卷并不是最好的。如果我们有一个 docker 插件,上面写着“你只能/data以用户 X 的身份挂载”,其中USERinDockerfile是那个用户 X,那就简单多了。
像docker-novolume-plugin这样的东西对于卷来说已经是一个不错的开始,虽然不限制绑定卷。
最后的问题是,我如何让用户以他们自己的用户/docker 身份构建/拉取/运行 docker 映像,而无法根系统。只要它有效,就不必完美。
Apache Mesos、Apache CloudStack 和 OpenStack 解决了大规模和轻松管理基础设施(私有云或公共云)的问题。
Mesos 和 CloudStack/OpenStack 之间的主要区别是什么?
(PS:请原谅我没有为这个问题添加标签apache-mesos。该标签不存在,由于我的分数较低,我无法创建一个)
Docker、Mesos、Kubernetes 等新技术可以在组织中更好地利用服务器。但是,考虑到整个数据中心的故障,我想知道如何最大限度地提高两个数据中心的利用率。
鉴于这种情况:
两个数据中心(DC-A 和 DC-B)具有等量的计算资源。两个数据中心都以负载平衡/循环方式运行和处理请求。两个数据中心的服务器利用率均为 80%。
假设 DC-B 出现故障(物理或网络)并且无法访问。DC-A 将无法再增加 80% 的利用率,因为它本身已经达到了 80%。使组织处于 DC-A 可能无法处理额外需求并导致中断的状态……
这是否意味着两个数据中心(DC-A 和 DC-B)的组织每个数据中心的最大利用率只能达到 50%?即任何一个 DC 失败,另一个 DC 将能够弥补另一个 DC 的松弛(50% + 50%)。
这种想法正确吗?其他人如何处理这个问题或者我错过了什么?
datacenter utilization distributed-computing kubernetes apache-mesos
apache-mesos ×5
coreos ×2
kubernetes ×2
cloud ×1
cloudstack ×1
cluster ×1
datacenter ×1
docker ×1
foreman ×1
openstack ×1
puppet ×1
scheduler ×1
security ×1
utilization ×1