我只是调查DC/OS,发现DC/OS有三个角色:master、slave、slave_public,我想部署一个集群,可以在一台主机上托管master、slave或slave_public角色,但目前我不能这样做.
我想知道为什么设计时不能将它们放在一台主机上。如果我这样做,我能得到一些建议吗?
我只是有这个想法。如果我做不到,我会退出使用 DCOS,我会使用 mesos 和 marathon。
有人跟我有这个想法吗?我期待着答复。
这是设计使然,实际上正在努力加强机器安装时只有一个角色,因为事情不止一个角色。
如果您尝试演示/试验 DC/OS 并且您只有一台机器,则可以使用虚拟机或 Docker 将一台机器划分为多个可以安装 DC/OS 的机器/部件。dcos-vagrant和dcos-docker可以帮助你。
但是,就安装而言,这三个角色中的每一个的配置都彼此不兼容。“master”角色会导致在主机上启动/安装一大堆软件(Mesos-DNS、Mesos master、marathon、existor、zookeeper、3dt、adminrouter、rexray、spartan、navstar 等)各种端口。“从属”角色使机器在代理上配置并启动了一个 mesos-agent(mesos 将 mesos-slave 重命名为 mesos-agent,因此断开连接)。mesos-agent 配置为控制/大多数大于 1024 的端口到代理上由 mesos 框架启动的任务。其中一些端口被在主服务器上运行的服务使用,导致奇怪的冲突和难以修复的不良行为。
在同一主机上运行“slave”和“slave_public”的情况下,这两者冲突更直接,因为它们都导致mesos-agent在主机上运行,配置略有不同。mesos-agent (配置了“slave”角色的和配置了“slave_public”角色的都配置为侦听端口 5051。但只有其中一个可以使用它,因此您最终会使用其中一个代理没有功能。
DC/OS 仅支持将节点作为主节点或代理(从节点)运行。您是正确的,Mesos 没有此限制。但 DC/OS 不仅仅是 Mesos/Marathon。为了启用 DC/OS 的所有附加功能,围绕 Mesos 和 Marathon 构建了各种组件。有时,这些组件的行为不同,无论它们是在主服务器上还是在代理上运行,而在其他时候,主服务器上存在的组件可能存在也可能不存在于代理上,反之亦然。所以在同一个节点上运行一个主节点和一个代理会导致冲突/问题。
如果您希望在将解决方案扩展到更大的分布式系统之前运行小型开发设置DC/OS Vagrant可能是一个很好的起点。