`
m635674608
  • 浏览: 4933113 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Mesos-DNS

 
阅读更多

Mesos-DNS用来支持Mesos集群上的服务发现,使运行在Mesos上的应用和服务可以通过域名服务器来发现彼此。你只要知道一个Mesos数据中心上运行的应用的名字,就可以通过Mesos-DNS查询到该应用的IP和端口号。

工作原理

了解一个东西的原理,对实际运用是有帮助的。这里简单的看看Mesos-DNS的工作原理。下图是官网上的Mesos-DNS架构图。
官网提供的Mesos-DNS架构图
Mesos-DNS定期去查询Mesos master,监测所有framework上运行的所有任务,并生成这些任务的DNS记录(包括A记录和SRV记录)。当Mesos集群上的任务发生启动、结束、重启等状态变化时,Mesos-DNS都会更新DNS记录,以保持最新的状态。

Mesos-DNS不需要与framework交互,只需要在启动的时候指向Mesos master即可。运行在Master Slave上的应用和服务,可以通过查询Mesos-DNS来发现它们依赖的应用和服务的IP和端口号。

对于那些非Mesos任务的DNS解析请求,Mesos-DNS自己解析不了,通常使用一个扩展DNS服务器,将这些请求转发到扩展DNS服务来解析即可。

配置Mesos-DNS

Mesos-DNS不需要编译安装,从https://github.com/mesosphere/mesos-dns/releases直接获取二进制文件即可。下面以我在测试环境配置的过程为例,来简单的看看Mesos-DNS的配置和运行方法。

1 获取mesos-dns的二进制文件

mkdir /usr/local/mesos-dns
cd /usr/local/mesos-dns
curl -o mesos-dns https://github.com/mesosphere/mesos-dns/releases/download/v0.5.2/mesos-dns-v0.5.2-linux-amd64
chmod +x mesos-dns
  • 1
  • 2
  • 3
  • 4

2 编写json配置文件
mesos-dns启动时需要指定一个json的配置文件,这个配置文件里指定了Mesos master、域名等所需要的参数。上一篇文章中讲了Mesos和Marathon的安装,这里就直接使用上次搭建的那个环境来配置Mesos-DNS。config.json配置文件的内容如下:

{
  "zk": "zk://192.168.0.101:2181,192.168.0.102:2181,192.168.0.103:2181/mesos",
  "masters": ["192.168.0.101:5050", "192.168.0.102:5050", "192.168.0.103:5050"],
  "refreshSeconds": 60,
  "ttl": 60,
  "domain": "mesos",
  "port": 53,
  "resolvers": ["8.8.8.8"],
  "timeout": 5, 
  "httpon": true,
  "dnson": true,
  "httpport": 8123,
  "externalon": true,
  "listener": "192.168.0.106",
  "SOAMname": "felix.mesos",
  "SOARname": "admin.felix.mesos",
  "SOARefresh": 60,
  "SOARetry":   600,
  "SOAExpire":  86400,
  "SOAMinttl": 60,
  "IPSources": ["netinfo", "mesos", "host"]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

3 运行mesos-dns
(1) 使用命令行直接运行mesos-dns

/usr/local/mesos-dns/mesos-dns -config=/usr/local/mesos-dns/config.json
  • 1

(2) 使用marathon来运行mesos-dns
使用marathon来运行mesos-dns的好处是,即使在mesos-dns挂了之后也会立刻被重新运行。因为DNS服务器需要一个稳定的IP地址,所以通常将其指定在一个Mesos slave节点上运行。这里通过constraints字段来指定运行的slave的IP为192.168.0.106。在marathon上运行mesos-dns的json配置如下:

{
  "id": "/mesos-dns",
  "cmd": "/usr/local/mesos-dns/mesos-dns -config=/usr/local/mesos-dns/config.json",
  "cpus": 0.2,
  "mem": 128,
  "disk": 0,
  "instances": 1,
  "constraints": [
    [
      "hostname",
      "CLUSTER",
      "192.168.0.106"
    ]
  ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

4 指定mesos-dns为域名服务器
为了让Mesos上运行的任务都使用mesos-dns作为主DNS服务器来解析,需要在Mesos slave节点的/etc/resolv.conf配置文件的第一行指定mesos-dns服务器为域名服务器。

sed -i '1s/^/nameserver 192.168.0.106\n/' /etc/resolv.conf
  • 1

5 mesos-dns能解析的域名的格式
mesos-dns解析的域名格式为:应用名.框架名.mesos域

构成项 说明
应用名 marathon上运行的应用或任务的名字,如果该应用在分组里面,需要在应用名后面接上”-组名”;另外,应用名字里面有点号的,需要替换成减号”-“
框架名 我们采用的是marathon,这里的名字就为marathon
mesos域 这个是在mesos-dns的json配置文件里,domain字段定义的;默认为mesos

例如,Mesos用的框架为marathon,在test分组里运行着名为centos7.2的应用,则该应用将对应名为centos7-2-test.marathon.mesos的域名

6 通过dig命令验证mesos-dns是否能正常解析
dig 应用名.框架名.mesos域 @mesos-dns所在节点IP
例:dig centos7-2-test.marathon.mesos @192.168.0.106

HTTP API

Mesos-DNS提供了几个简单的REST API以供通过http方式来发现服务。
以上面mesos-dns在192.168.0.106为例,则有:

URL 说明
http://192.168.0.106:8123/v1/version mesos-dns版本信息
http://192.168.0.106:8123/v1/config mesos-dns配置信息
http://192.168.0.106:8123/v1/hosts/{host} 该host的IP地址信息
http://192.168.0.106:8123/v1/services/{service} 该service的host、IP、端口信息

注意:
host为mesos-dns能解析的域名,如:centos7-2-test.marathon.mesos
service为DNS SRV记录名,如:_centos7-2-test._tcp.marathon.mesos

 

http://blog.csdn.net/felix_yujing/article/details/51891998

分享到:
评论

相关推荐

    mesos-dns:Mesos的基于DNS的服务发现

    Mesos的DNS Mesos-DNS在群集中启用基于的服务发现。 兼容性 mesos-N标签标志着对特定Mesos版本的支持开始,同时保持了与先前主要版本的向后兼容性。 正在安装 官方发行的二进制文件在中可用。 建造 从源代码构建...

    mc:一个简单的Mesos-DNS客户端

    mc —一个简单的Mesos-DNS客户端 这是一个用Python编写的简单的客户端。 将其用作CLI工具,如下所示: $ ./mc.py localhost redis.marathon.mesos $ Discovered redis.marathon.mesos running on 10.141.141.10:...

    coreos-setup:不推荐使用。 有关当前如何在CoreOS上部署Mesos的信息,请参阅DCOS Community Edition。

    它可以自动处理围绕DCOS的许多操作需求(设置参展商群集,设置Mesos-DNS,将DNS分辨率设置为仅在Mesos Masters出现并且开始正确解析递归DNS查询之后才使用Mesos-DNS)。 它还根据处理将Mesos二进制文件运送到...

    Docker-Mesos-Marathon:MesosMarathon 上的 Docker 框架

    描述 使用 Mesos/Marathon/Demios 编排 Docker 介绍 关于 Mesos 云时代的应用 从静态分区到弹性共享 经过测试的物理环境 操作系统:Ubuntu 12.04.4 LTS amd64(3.11.0-15-generic ... use_mesos_dns :默认为“真” us

    cm_mesos_ext

    这是一个包含开源项目Apache Mesos,Marathon和Mesos-DNS的软件包,并提供了这些服务作为Cloudera Manager Parcel,可以在Cloudera Hadoop集群上部署和运行。 该包负责在同一群集中运行的资源管理和不同分布式应用...

    Docker基础平台环境安装

    docker ,mesos,marathon, flannel ,etcd, mesos-dns

    m-shop:Marathon在Web应用程序中的Docker部署,包括使用ELK堆栈进行分析

    设置流浪汉/普拉亚准备(Mesos-DNS) 部署方式相互作用演示版来自主持人: http PUT http://10.141.141.10:8080/v2/groups < mesos-dns/system.jsonhttp POST http://10.141.141.10:8080/v2/groups < m-shop....

    dcos-net:DCOS的网络层

    dcos网 ... 特征 ... 具有多播和故障检测器功能的分布式CRDT DNS和 使用编排虚拟覆盖网络 分布式虚拟IP负载平衡 ... 要运行dcos-net ,还需要Exhibitor,Apache ZooKeeper,Apache Mesos和Mesos-DNS。 发展 您可以分别使用ma

    incubator-myriad:Apache Myriad的镜像(正在孵化)

    无数 Myriad是一个Mesos框架,旨在在Mesos上扩展... NodeManager配置文件 通过REST API / Web UI扩展/缩小节点管理器 框架对帐与HA 使用Marathon / Mesos-DNS的ResourceManager故障转移/发现 细粒度缩放 远程分发NodeM

    mesosphere-kit

    中间层套件Mesosphere Kit 旨在提供一种简单的方法来在 VirtualBox 环境中快速...服务发现Mesos-DNS 默认安装并运行在主节点上。 默认情况下,Haproxy 在主节点上安装、配置和运行。 注意:它仅配置为支持已部署的 Mara

    mesos-ceph:AWS VPC 中 Mesos + Ceph 集群的 Terraform 模块和 AMI 的 Packer 模板

    AWS VPC 中 Mesos + Ceph 集群的 Terraform 模块和 AMI 的 Packer 模板。 概括 默认情况下,此 Terraform 模块将启动如下所示的实例: 行政 t2.micro ssh 网关 运行 ceph-deploy 大师1、大师2、大师3 t2.micro ...

    Mesos调度器Swan-Mesos.zip

    Swan 是一个基于 mesos 的新 HTTP API,使用 golang 开发。...特点应用程序开发应用程序缩放滚动升级版本回滚运行状况检查自动故障转移高可用性构建 HTTP 代理,负载平衡内置 DNS 标签:SwanMesos

    framestream:重写github.comfarsightsecgolang-framestream,其中包括对双向流,alpha质量的支持

    关于重写了支持双向流的github.com/farsightsec/golang-framestream,由github.com/farsightsec/fstrm实现。... 开发此协议的主要动机是探索dnstap协议对监控Mesosphere的mesos-dns服务器的有用性。

    dns:通过Marathon在Route53 DNS中为Mesos注册服务

    Misakai.Dns是一个服务发现项目,它利用AWS Route53 DNS服务和Mesos Marathon自动将与Marathon一起部署的应用程序注册到Route53 DNS。 这个构建创建了一个微小的Docker映像,您可以将其简单地部署到您的基础架构中,...

    ansible-mesos:Ansible剧本,用于设置和维护功能齐全的Mesos集群

    包括: 动物园管理员Mesos大师Mesos奴隶Mesos DNS 马拉松码头工人及其所有依赖项。 您可以在一个盒子中运行所有内容,也可以使用高度可用的设置,使每个组件都在具有多个主/管理员的自己服务器上运行(只需编辑...

    Docker+k8s的微服务实战课程

    8 kube-proxy和kube-dns 9 理解认证、授权 10 为集群添加认证授权(上) 11 为集群添加认证授权(下) 12 再试牛刀 13 部署我们的微服务 八、CICD和DevOps 1 了解CICD和DevOps 2 准备GitLab和Jenkins 3 CICD实践(上...

    dcos:DCOS-数据中心操作系统

    DC / OS-数据中心操作系统在生产中运行微服务,大数据和容器的最简单方法。什么是DC / OS? 与传统操作系统一样,DC / OS是管理计算机硬件和软件资源并为计算机程序提供通用服务的系统软件。 与传统的操作系统不同,...

    Apollo:一个基于Apache Mesos和Docker的云原生应用程序开源平台

    DNS服务发现的 用于应用程序容器运行时的 Docker容器网络 用于应用程序容器负载平衡 阿波罗是: 高可用性:多数据中心 容错:具有数据复制的Mesos / Consul主仲裁 便携式:公共,私有,混合,多云 阿波罗用例: ...

    dcos之marathon技术文档

    Marathon 是一个mesos 框架,能够支持运行长服务,比如web 应用 等。是集群的分布式Init.d,能够原样运行任何Linux 二进制发布版本, 如 Tomcat Play 等等,可以集群的多进程管理,实现服务的发现,为部 署提供提供...

    Go:使用golang的leetcode && go练习:rocket:

    命令行下的dns信息工具(golang简单实现类似dig的功能) 实现socks5代理来访问看起来不能访问的资源(网络边界突破,实现类似lcx,ngrok的功能……) 服务编排&&容器调度,k8s与mesos在实际项目中的应用(系统架构)...

Global site tag (gtag.js) - Google Analytics