【问题标题】:New to mesos/marathon. How to deploy a new self defined docker?mesos/马拉松的新手。如何部署一个新的自定义 docker?
【发布时间】:2015-08-12 00:06:51
【问题描述】:

我是 mesos 和马拉松的新手。

我有一个设置,其中一个 docker 是自定义的,另一个是 mysql 服务器实例。这两者是链接并传递信息的。我如何在 mesos 上部署它?我目前使用的是单节点主从设置。

【问题讨论】:

    标签: docker mesos marathon


    【解决方案1】:

    official Marathon documentation 表示参数对象(文档页面底部)中允许使用任意 docker 命令,因此您可以使用它来连接它们。

    或者Mesos-DNS 似乎是一个解决方案。当您从单个主机移动到多个主机并且您的单个容器被安排到不同的主机时,第一个解决方案应该会失败。

    注意:我对 docker 也不是很有经验,但这些似乎是我能找到的唯一选择。然而,将 Docker 集成到 Mesos 是一个持续的过程,并且将 Docker Swarm 集成到 Mesos 目前正在进行中,所以这些问题可能会在(希望不久的)将来得到解决。

    【讨论】:

      【解决方案2】:

      要链接您的 Docker 容器,请使用 Mesos-DNS。我在下面使用Playa Mesos 来解释设置。

      在 Playa 上设置 Mesos-DNS 非常简单:使用 mesosphere/mesos-dns 映像并使用以下应用规范将其部署到 Marathon:

      {
      "id": "mesos-dns",
      "instances": 1,
      "cpus": 1,
      "mem": 512,
      "cmd": "/mesos-dns -config=/config.json",
      "container": {
        "type": "DOCKER",
        "docker": {
          "image": "mesosphere/mesos-dns:latest",
          "network": "HOST"
       },
       "volumes": [
            {
              "containerPath": "/config.json",
              "hostPath": "/etc/mesos-dns/config.js",
              "mode": "RW"
            }
          ]
        }
      }
      

      以下config.js

      {
       "zk": "zk://127.0.0.1:2181/mesos",
       "refreshSeconds": 60,
       "ttl": 60,
       "domain": "mesos",
       "port": 53,
       "resolvers": ["10.0.2.3"],
       "timeout": 5,
       "email": "root.mesos-dns.mesos"
      }
      

      另外,请确保resolv.conf 在第一个位置有正确的条目:

      $ cat /etc/resolv.conf
      # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
      #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
      nameserver 127.0.0.1
      nameserver 10.0.2.3
      search net
      

      然后您可以像这样动态地discover 您的服务(在 Vagrant 框中):

      dig _$APPID._tcp.marathon.mesos SRV
      

      其中$APPID 是您用于部署自定义 Docker 映像的标识符。上面的命令会告诉你 IP 和 Marathon 分配给你的应用程序的端口。您也可以使用 Mesos-DNS HTTP API 进行服务发现。

      注意 1:DCOS 预装了 Mesos-DNS,因此您可以直接使用它进行服务发现。

      注意 2:如果您遇到应用无法理解 SRV 记录的问题,您可以尝试以下解决方法:https://github.com/the-tetanus-clinic/srv-shim

      【讨论】:

      • 谢谢。探索了 Mesos-DNS 和 Consul。显然,暴露的端口只能通过 SRV 查找访问,但这不能在 json 脚本中使用。无论如何,暂时完成了。如果我进一步探索,将保持更新。
      • 很高兴听到这个@208rishabh,然后请把答案标记为正确。此外,使用带有 SRV 记录的现有应用程序的解决方法是 github.com/the-tetanus-clinic/srv-shim
      • @MichaelHausenblas:我在您的 m-shop 教程中遵循了这些确切的步骤。不过,在运行 dig 命令时,我没有从 mesos-dns 得到任何答复。将名称服务器 127.0.0.1 添加到 /etc/resolv.conf(或 10.141.141.10 )不会改变任何东西。
      猜你喜欢
      • 1970-01-01
      • 2015-09-04
      • 2015-10-07
      • 2016-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-21
      相关资源
      最近更新 更多