【问题标题】:How to setup mesos-dns resolve crossing cluster如何设置 mesos-dns 解析跨集群
【发布时间】:2017-07-26 05:06:37
【问题描述】:

我设置了一个带有 vm 机器的 Mesos 集群,机器 A(master + agent)和机器 B(仅代理),我还在机器 A 上运行 Marathon 和 Mesos-dns,两个代理都支持 docker。

我通过 Marathon 使用 docker 启动了一个 Web 应用程序,docker 容器以桥接网络模式运行。

当我运行一个实例时,容器正常启动并且Mesos-dns使用docker服务内部IP(例如172.17.0.2)正确解析它,但是因为我只运行一个实例并且mesos集群中有两个代理,所以只有一个代理得到容器,另一个什么都没有,如果客户端访问没有运行的mesos代理,就会出现错误。

这意味着,容器在机器 B 上运行,不在机器 A 上运行,我的 docker 应用程序名为 test,并使用端口 5000 进行侦听,一旦我在机器 B 上运行“curl http://test.marathon.mesos:5000/”,我得到了正确的响应,但是当我在机器 A 上运行相同的命令时,出现错误“curl: (7) Failed to connect to test.marathon.mesos port 5000: No route to host”,mesos-dns 将域解析为 docker internal ip 172.17.0.2,但是这个ip没有出现在机器A上,因为机器A上没有运行任何容器。

我也可以在同一个代理节点上运行多个实例而没有任何问题,但据我所知,mesos 集群和马拉松在代理节点上随机运行应用程序,因此如果客户端访问代理,则可以访问负载均衡器后面的所有代理节点通过负载均衡器没有容器的节点,这对客户端来说是个问题。

我的 mesos-dns 配置文件如下:

{
   "zk":"zk://10.11.54.103:2181,10.11.54.103:2182,10.11.54.103:2183/mesos",
  "masters": ["10.11.54.103:5050"],
  "refreshSeconds": 60,
  "ttl": 60,
  "domain": "mesos",
  "port": 53,
  "resolvers": ["10.11.255.1","10.11.255.2","4.2.2.2"],
  "timeout": 5,
  "httpon": true,
  "dnson": true,
  "httpport": 8123,
  "externalon": true,
  "listener": "10.11.54.103",
  "SOAMname": "ns1.mesos",
  "SOARname": "root.ns1.mesos",
  "SOARefresh": 60,
  "SOARetry":   600,
  "SOAExpire":  86400,
  "SOAMinttl": 60,
  "IPSources": ["netinfo", "mesos", "host"]
}

我希望 Mesos-dns 可以跨整个 mesos 集群解析域,有什么想法吗?

【问题讨论】:

    标签: mesos marathon


    【解决方案1】:

    来自the documentation

    带有 Docker 的 Mesos-DNS

    如果您选择在 Docker 中使用 Mesos-DNS,以及 0.25 之后的 Mesos 版本,请注意有一些注意事项。默认情况下,Docker 执行器将 Docker 容器的 IP 发布到 NetworkInfo 字段中。不幸的是,除非您使用 Docker 运行某种 SDN 解决方案、桥接或主机网络,否则这可能会导致容器无法访问。

    Mesos-DNS 在 config.json.sample 中附带的默认配置在源代码中省略了 netinfo。如果您从配置中省略此字段,则默认选项包括 netinfo。如果您在使用 Docker 时遇到问题,请确保选中 IPSources 字段以省略 netinfo。

    IPSources 定义任务记录的 IP 源的后备列表, 按优先级排序。 如果你使用Docker,并且开启netinfoIPSource,可能会导致任务不可达,因为在Mesos 0.25之后,Docker执行器会在NetworkInfo中发布容器的内部IP。

    【讨论】:

      猜你喜欢
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-22
      相关资源
      最近更新 更多