DCOS的Mesos-DNS它主要提供域名解析服务,Mesos-DNS 在DCOS框架中支持服务发现,同意应用程序和服务通过域名系统(DNS)来相互定位。DCOS中的 Mesos-DNS充当的角色和在互联网中DNS 的作用几乎相同。Mesos-DNS 的特点是轻量、无状态,易于部署和维护。

由DCOS架构中的Marathon或者Aurora框架启动的应用程序或者常驻服务被赋予名字,如earch.marathon.mesos或者log-aggregator.aurora.mesos,Mesos-DNS将每一个集群中正在执行的应用程序的域名转换成IP地址和端口号。这使得不论什么链接到集群中执行的服务都能够通过DNS进行查找。

Mesos-DNS被设计成简单而且无状态的,它不须要共识机制,永久储存以及日志。

这是能够的,由于Mesos-DNS 没有实现心跳,状态监測,或者管理应用方程序的生命周期。这些功能在 Mesos master, slaves,和 frameworks中实现。

图6.1 Mesos-DNS架构

Frameworks执行在 Mesos中,不须要直接与 Mesos-DNS通信。

Mesos-DNS 定期查询Mesos master(s),检索全部执行的框架中正在执行的任务的状态,并为这些任务生成DNS记录,包含A记录与SRV记录。当Mesos 集群中的任务開始,结束,或重新启动, Mesos-DNS都须要更新 DNS 记录以保证为最新状态。

Mesos-DNS通过Mesos master(s) 制定的配置来执行,能够容错,而且能够通过一个框架,如Marathon来监视应用程序的健康状况。从故障中重新启动后,Mesos-DNS检索Mesos master(s)和serves 的最新状态,并提供DNS请求。

Mesos-DNS,不是像其它的DNS系统,如SkyDNS 或者 Consul。首先,我们须要一个DNS系统来密切配合Mesos, 而不是让每一个用户或者框架描写叙述两次任务(一次Mesos执行,一次到 DNS系统),它更easy和简洁的从Mesos传递信息到DNS。其次,我们须要一个解决方法。Mesos及其框架已经实现了容错性和生命周期的管理。我们不想强迫Mesos用户再为DNS 部署还有一套同步机制,永久储存或日志。

Mesos-DNS也将延伸到 Mesos引入的安全和网络方面,并集成到到来的Datacenter Operating System (DCOS)中,以支持在公有云,私有数据中心以及混合部署中的服务发现。

命名规则

A(adress)即为记录,将hostname与ip进行关联(即上文所述的概念),在某一DNS域A中,当某一框架B启动某一任务C。
Mesos-DNS就会为hostname为C.B.A生成一条记录(A)。相应的ip有下述两中情况:
1、任务执行的容器所提供的网络ip(这个网络是mesos容器提供的)
2、任务在某一slave节点执行的ip
须要解释的A.B.C即为taks.framework.domain这种命名规则,比如。当mesos使用marathon 框架执行jenkins任务,这样就能够知道其域名。即为:jenkins.marathon.mesos

   SOA记录

 

dig jenkins.marathon.mesos

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.1 <<>> jenkins.marathon.mesos;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40120;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION:;jenkins.marathon.mesos.        IN  A;; ANSWER SECTION:jenkins.marathon.mesos. 60  IN  A   10.133.19.22jenkins.marathon.mesos. 60  IN  A   10.133.19.23;; Query time: 0 msec;; SERVER: 10.133.19.21#53(10.133.19.21);; WHEN: 三 1月 13 13:58:02 EST 2016;; MSG SIZE  rcvd: 72

结果表明我们通过scale,扩展到2个task。位于不同的slave 节点上
当你将一个节点down掉,我们能够继续查下SOA记录:

dig jenkins.marathon.mesos

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.1 <<>> jenkins.marathon.mesos;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27520;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION:;jenkins.marathon.mesos.        IN  A;; ANSWER SECTION:jenkins.marathon.mesos. 60  IN  A   10.133.19.22;; Query time: 0 msec;; SERVER: 10.133.19.21#53(10.133.19.21);; WHEN: 三 1月 13 11:49:34 EST 2016;; MSG SIZE  rcvd: 56

除了task.framework.domain记录,Mesos-DNS通常还会产生一个A记录 task.framework.slave.domain,即为task执行的slave节点的ip。例 如,jenkins.marathon.slave.mesos的A记录将执行marathon框架的jenkins应用的slave节点的ip。

在下述task 状态labels中。task的执行器必须提供容器ip

  • NetworkSettings.IPAddress
  • NetworkSettings.IPAddress

SRV记录
服务器资源记录为某一服务分配一个hostname和一个ip port。对于在域A中,当框架B启动任务C,
这样Mesos-DNS将产生一个SRV记录名为_C._tcp.B.A,命名规则为_taskname._protocol.framework.domain,
当中protocol能够为udp或者tcp。比如mesos使用marathon启动的任务jenkins。

dig _jenkins._tcp.marathon.mesos SRV

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.1 <<>> _jenkins._tcp.marathon.mesos SRV

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34329

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2

;; QUESTION SECTION:;_jenkins._tcp.marathon.mesos.  IN  SRV

;; ANSWER SECTION:_jenkins._tcp.marathon.mesos. 60 IN SRV 0 0 31383 jenkins-hfa6x-s5.marathon.slave.mesos._jenkins._tcp.marathon.mesos. 60 IN SRV 0 0 31006 jenkins-z8kkj-s7.marathon.slave.mesos.

;; ADDITIONAL SECTION:jenkins-hfa6x-s5.marathon.slave.mesos. 60 IN A  10.133.19.23jenkins-z8kkj-s7.marathon.slave.mesos. 60 IN A  10.133.19.22

;; Query time: 0 msec;; SERVER: 10.133.19.21#53(10.133.19.21)

;; WHEN: 三 1月 13 17:14:05 EST 2016

;; MSG SIZE  rcvd: 241

能够看到上述的查询结果,对于查询内容就不一一解释了

Service CT-IP Avai DI Avail Target Host Target Port A (Target Resolution)
{task}.{proto}.framework.domain no no {task}.framework.slave.domain host-port slave-ip
  yes no {task}.framework.domain di-port slave-ip
  no yes {task}.framework.domain di-port slave-ip
        di-port container-ip
{task}.{proto}.framework.slave.domain n/a n/a {task}.framework.slave.domain host-port slave-ip

下述图标简述了SRV产生的规则:

    其它记录

Mesos-DNS产生一些特殊的记录:

  • 对于leading master
    产生:leader.domain 记录和SRV(_leader._tcp.domain、_udp.domain)
  • 对于全部框架调度器
    产生:{framwork}.domain和SRV(_framwork._tcp.{framework}.domain)
  • 对于mesos master
    产生:master.domain记录和SRV(_master._tcp.domain、_udp.domain)
  • 对于mesos slave
    产生: slave.domain记录和SRV(_slave._tcp.domain)

假设须要配置Mesos-DNS去侦測leading master(通过Zookeeper),仅仅有一个master记录,可是对于Mesos-DNS来说,由于leading master须要经过选举过程,所以有时延。除了A记录和SRV记录以外,Mesos-DNS还支持SOA以及NS记录,DNS对于其它类型的请求将返回NXDOMAIN,Mesos-DNS不支持PTR记录来回溯IP。

6.3 Mesos-DNS安装与配置

要构建Mesos-DNS,你必须在你的电脑上安装go和godep。

必须设置GOPATH环境变量指向go

安装包的文件夹,必须加入$GOPATH/bin到PATH环境变量。假设你安装go到自己定义文件夹,须要

设置GOROOT环境变量,而且把$GOROOT/bin加入到PATH环境变量中去。比如,执行以下

操作:

export GOPATH=$HOME/go

export PATH=$PATH:$GOPATH/bin

export GOROOT=/usr/local/go

假设 go装在了/usr/local/go文件夹下

export PATH=$PATH:$GOROOT/bin

用godep构建Mesos-DNS:

go get github.com/mesosphere/mesos-dns

cd $GOPATH/src/github.com/mesosphere/mesos-dns

make all

这将生成一个静态的二进制Mesos-DNS文件,能够装在随意地方。在同一文件夹下你能够找到配置文件config.json。

6.4 Mesos-DNS执行

若要执行Mesos-DNS,必须在所选的服务器上安装mesos-dns二进制文件。服务能够装在Mesos的随意一台机器上,或者是在同一网络的一台专用机器上。接下来,依照链接创建一个配置文件。

能够这样启动Mesos-DNS

sudo mesos-dns -config=config.json &

为了加强容错能力,建议通过Marathon把Mesos-DNS服务公布到随意一台Mesos从节点上。假设Mesos-DNS失败,Marathon将又一次启动它,确保差点儿不间断的服务。能够通过Marathon约束从节点的主机名或者不论什么从节点的属性来选择把Mesos-DNS公布到哪一个从节点上面。

比如以下的json描写叙述了Marathon通过从节点的主机名公布Mesos-DNS 10.134.29.134:

{

“cmd”: “sudo /usr/local/mesos-dns/mesos-dns -config=/usr/local/mesos-dns/config.json”,

“cpus”: 1.0,

“mem”: 1024,

“id”: “mesos-dns”,

“instances”: 1,

“constraints”: [[“hostname”, “CLUSTER”, “10.134.29.134”]]

}

注意这个主机名字段是指从节点向Mesos注冊时使用的主机名。它可能不是一个IP地址,或者是不论什么形式有效的主机名。能够通过Mesos的WEB页面来检查从节点的主机名属性。能够通过REST訪问状态:

curl http://10.134.29.134:5050/master/state.json|python -mjson.tool

同意Mesos任务使用Mesos-DNS作为主DNS服务,你必须在每一个从节点上改动文件/etc/resolv.conf添加新的nameserver。10.134.29.134是Mesos-DNS安装节点,应该在每一个从节点/etc/resolv.conf開始加上一行nameserver 10.134.29.134。

假设启动多个Mesos-DNS,须要在/etc/resolv.conf的開始为每一个服务加入nameserver。这些条目的顺序将确定从节点连接Mesos-DNS实例的顺序。你能够通过设置options rotate在nameserver之间选择负载均衡的轮循机制。

/etc/resolv.conf中其它的nameserver设置保持不变。/etc/resolv.conf文件在主节点中,仅仅须要改动同一时候做为从节点的机器。

DCOS之Mesos-DNS介绍的更多相关文章

  1. DNS 介绍

    DNS 介绍 DNS 为 Domain Name System (域名系统的缩写),它是一种将ip地址转换为对应的主机名或将主机名转换成与之对应的ip地址的一种服务机制.DNS使用TCP和UDP,端口 ...

  2. DNS介绍

    DNS出现及演化 网络出现的早期 是使用IP地址通讯的,那时就几台主机通讯.但是随着接入网络主机的增多,这种数字标识的地址非常不便于记忆,UNIX上就出现了建立一个叫做hosts的文件(Linux和w ...

  3. DNS介绍与安装使用

    DNS简介 DNS是互联网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.DNS使用TCP和UDP的53号端口. DNS服务的基本概念 在使用DNS前需要了解 ...

  4. Linux服务之DNS介绍

    DNS-------Domain Name System域名系统 介绍:DNS就是把域名和IP地址联系在一起的服务,有了DNS服务器,你就不用输入IP地址来访问一个网站,可以通过输入网址访问.     ...

  5. 31、DNS介绍

    [root@centos6 ~]# dig @8.8.8.8 www.baidu.com +trace ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.3 ...

  6. DCOS实践分享(4):如何基于DC/OS整合SMACK(Spark, Mesos, Akka, Cassandra, Kafka)

    这篇文章入选CSDN极客头条 http://geek.csdn.net/news/detail/71572 当前,要保证业务的市场竞争力,仅靠设计一个可用并且好看的产品,已经完全不能满足要求.全球消费 ...

  7. dcos的问题汇总

    . group 'docker' does not exist 需要手工创建docker组,这一步本来应该是在安装docker的时候来完成的,但是采用yum install的方式不行,需要添加一个do ...

  8. DCOS(centos 7.4/7.6)

    https://dcos.io/releases/ https://downloads.dcos.io/dcos/stable/1.12.0/dcos_generate_config.sh https ...

  9. Domain Name System (DNS)

    1.DNS和WINS的作用 DNS:(Domain Name Server,域名服务)用于实现域名和IP地址的相互转换. WINS:(Windows Internet Name Service) 用来 ...

  10. DNS服务器的搭建

    更详细的dns笔记整理: http://services.linuxpanda.tech/DNS/index.html 1 DNS介绍 DNS(Domain Name System,域名系统),因特网 ...

随机推荐

  1. tensorflow在各种环境下搭建与对比

    tensorflow在各种环境下搭建与对比 由于有些训练是要长时间进行训练(几天),才能看出显著的结果,如果只是通过本地的计算机进行训练是不可能的.因此这周花了一些时间调研如何才能让神经网络长时间的进 ...

  2. 集群高可用之lvs

    集群: 随着互联网的发展,大量的客户端的请求,服务器的负载越来越大,单台服务器的负载有限,会导致服务器响应客户端请求的时间越长,甚至产生拒绝服务的情况.目前网站是24小时不间断提供网络服务,仅采用单点 ...

  3. [BZOJ4506] [Usaco2016 Jan]Fort Moo(DP?)

    传送门 总之可以先预处理出来每个位置最多往上延伸多少 枚举两行,看看夹在这两行中间的列最大能构成多大的矩形 可以看出,必须得在一个两行都没有X的区间才有可能构成最大的答案 那么可以把这些区间处理出来, ...

  4. 洛谷P3759 - [TJOI2017]不勤劳的图书管理员

    Portal Description 给出一个\(1..n(n\leq5\times10^4)\)的排列\(\{a_n\}\)和数列\(\{w_n\}(w_i\leq10^5)\),进行\(m(m\l ...

  5. 算法复习——2—sat(bzoj2199)

    题目: Description 由于对Farmer John的领导感到极其不悦,奶牛们退出了农场,组建了奶牛议会.议会以“每头牛 都可以获得自己想要的”为原则,建立了下面的投票系统: M只到场的奶牛 ...

  6. 【DFS序+树状数组】BNUOJ 52733 Random Numbers

    http://acm.bnu.edu.cn/v3/problem_show.php?pid=52733 [题意] 给定一棵树,这棵树每个点都有一个点权,标号从0开始,0是根结点 修改操作: SEED ...

  7. LA 3644 简单并查集

    题目大意:有一些简单的化合物,每个化合物由两种元素组成,把这些化合物按顺序装车,若k个化合物正好包含k种元素,那么就会爆炸.避免爆炸,有些化合物就不能装车.求有多少个不能装车. 题目分析:若k个化合物 ...

  8. 【Tyvj1982】武器分配(费用流)

    题意:有N个人要从A个物品中各取一个,B个物品中各取一个,选取第i个A类物品和第j个B类物品的费用是(a[i]-b[j])^2 求最小总花费 n<=a,b<=80 a[i],b[i]< ...

  9. POJ 3104 Drying [二分 有坑点 好题]

    传送门 表示又是神题一道 Drying Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9327   Accepted: 23 ...

  10. 安卓解析XML文件

    安卓解析XML文件 主要有三种方式:DOM解析.SAX解析.PULL解析 其中: DOM解析为等XMl文件全部加载后,然后根据需要解析的内容解析出所需的内容数据. SAX解析为从XML文件中执行一行, ...