Mesos-DNS小解

Mesos-DNS小解

-中移zouyee


Mesos-DNS的功能主要是提供A记录,SRV服务,不提供PTR服务,关于Mesos-DNS主要分为下面几项内容:

  • Mesos-DNS简介
  • Mesos-DNS安装与配置
  • Meoso-DNS运行

这里主要描述的Mesos-DNs所提供的DNS服务

1.DNS相关概念:

①A记录(Address): 是用来指定主机名(或者域名)对应的IP地址的记录,简单的说,A记录是指定域名对应的IP地址。
②NS记录(Name Server): 是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析,简单来说,NS记录是指定哪个DNS服务器来解析你的域名。
③MX记录(Mail Exchanger): 是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器,例如,当网上的用户要发一封信给 user@mydomain.com时,该用户的邮件系统通过DNS查找mydomain.com这个域名的MX记录,如果MX记录存在,用户的计算机就 将邮件发送到MX记录所指定的邮件服务器上。
④TXT记录:一般指某个主机名或者域名的说明,如:admin IN TXT “管理员,电话:XXX”
SOA 指定了域名服务器的FQDN和管理员的email。
⑤PTR值是pointer的简写,用于将一个IP地址映射到对应的域名,也可以视作A记录的反向,它提供对IP地址的反向解析,PTR主要应用于邮件服务器.
⑥SRV记录: 是服务器资源记录的缩写,SRV记录的作用是用于描述一个服务器能够提供什么样的服务。

结论:

DNS是一个分布式的系统,从根域名开始将次级域名的管理员独立管理,域名信息由一个称为域文件(zone file)的文件来描述,域文件又由各项资料记录(RR, Resource Records)组成,其中称为起始授权机构(SOA, start of authority)的资源记录,描述了域名的管理员、电子邮件地址,和一些时间参数。

比如通过dig命令来查询oschina的SOA记录

dig工具的安装:
redhat系列: yum install bind-utils
deb系列: apt-get install dnsutils

查看SOA记录

dig @114.114.114.114 oschina.net +nssearch
得到的其中一条结果为:
SOA ns1.dnsv2.com. level3dnsadmin.dnspod.com. 1408847720 3600 180 1209600 180 from server 221.204.186.8 in 12 ms.
依次各项的意思为:
1、SOA SOA记录
2、ns1.dnsv2.com. Nameserver,该域名解析使用的服务器
3、level3dnsadmin.dnspod.com. Email address,该域名管理者的电子邮件地址,第一个’.’代表电子邮件中的’@’,所以对应的邮件地址为:level3dnsadmin@dnspod.com
4、1408847720 Serial number,反映域名信息变化的序列号。每次域名信息变化该项数值需要增大。格式没有要求,但一般习惯使用YYYYMMDDnn的格式,表示在某年(YYYY)、月(MM)、日(DD)进行了第几次(nn)修改。
5、3600 Refresh,备用DNS服务器隔一定时间会查询主DNS服务器中的序列号是否增加,即域文件是否有变化。这项内容就代表这个间隔的时间,单位为秒。
6、180 Retry,这项内容表示如果备用服务器无法连上主服务器,过多久再重试,单位为秒。通常小于刷新时间。
7、1209600 Expiry,当备用DNS服务器无法联系上主DNS服务器时,备用DNS服务器可以在多长时间内认为其缓存是有效的,并供用户查询。单位为秒。1209600秒为2周。
8、180 Minimum,缓存DNS服务器可以缓存记录多长时间,单位为秒。这个时间比较重要,太短会增加主DNS服务器负载。如果太长,在域名信息改变时,需要更长的时间才能各地的缓存DNS服务器才能得到变化信息。

查看SRV服务
其中_jenkins._tcp.marathon.mesos的命名规则: task.framwork.domain

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: 34049
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; QUESTION SECTION:
;_jenkins._tcp.marathon.mesos. IN SRV
;; ANSWER SECTION:
_jenkins._tcp.marathon.mesos. 60 IN SRV 0 0 31006 jenkins-z8kkj-s7.marathon.slave.mesos.
;; ADDITIONAL SECTION:
jenkins-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 11:03:12 EST 2016
;; MSG SIZE rcvd: 151

可以看一下其中的 _jenkins._tcp.marathon.mesos. 60 IN SRV 0 0 31006 jenkins-z8kkj-s7.marathon.slave.mesos.

  • _jenkins中jenkins是一种服务,表明这台服务器有向外提供jenkins服务
  • _tcp中tcp是本服务使用的协议,可以是tcp也可以是udp
  • marathon.mesos此记录所值的域名
  • 60: 此记录默认生存时间(s)
  • IN: 标准DNS Internet类
  • SRV: 将这条记录标识为SRV记录
  • 0: 优先级,如果相同的服务有多条SRV记录,用户会尝试先链接优先级最低的记录
  • 0: 负载平衡机制,多条SRV并且优先级也相同,那么用户会先尝试连接权重高的记录
  • 31006: 此服务使用的服务端口
  • jenkins-z8kkj-s7.marathon.slave.mesos: 提供服务的主机

下一条记录: enkins-z8kkj-s7.marathon.slave.mesos. 60 IN A 10.133.19.22

  • jenkins-z8kkj-s7.marathon.slave.mesos.: 提供服务的主机
  • 60: 此记录的存活时间
  • IN: 标准DNS Internet类
  • A: address(就是上述提及的A)
  • 10.133.19.22: 对应的服务器的ip

二、Mesos-DNS介绍

Mesos-DNS它主要提供域名解析服务,Mesos-DNS为Mesos 任务定义了一个DNS域,即.mesos(默认即为.mesos)

关于Mesos-DNS相关配置下文会做介绍。

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

使用dig去查看其查询结果

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.22
jenkins.marathon.mesos. 60  IN  A   10.133.19.23
;; Query time: 0 msec
;; SERVER: 10.133.19.21#53(10.133.19.21)
;; WHEN: 三 113 13:58:02 EST 2016
;; MSG SIZE  rcvd: 72

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

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: 三 113 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。
PS:Mesos 0.24以上支持上述特性

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

  • Docker.NetworkSettings.IPAddress
  • MesosContainerizer.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.23
jenkins-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

可以看到上述的查询结果,对于查询内容就不一一解释了
下述图标简述了SRV产生的规则:

其他记录

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

  • 对于leading master
    产生:leader.domain 记录和SRV(_leader._tcp.domain、_leader._udp.domain)
  • 对于所有框架调度器
    产生:{framwork}.domain和SRV(_framwork._tcp.{framework}.domain)
  • 对于mesos master
    产生:master.domain记录和SRV(_master._tcp.domain、_master._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,
Meoso-DNS不支持PTR记录来回溯ip

参考资料:

1、DNS条目
2、Service Naming
3、Service Discovery

查看原文:http://www.zoues.com/index.php/2016/01/13/mesos-dns%e5%b0%8f%e8%a7%a3/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值