Mesos-DNS用来支持Mesos集群上的服务发现,使运行在Mesos上的应用和服务可以通过域名服务器来发现彼此。你只要知道一个Mesos数据中心上运行的应用的名字,就可以通过Mesos-DNS查询到该应用的IP和端口号。
工作原理
了解一个东西的原理,对实际运用是有帮助的。这里简单的看看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为例,则有:
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-N标签标志着对特定Mesos版本的支持开始,同时保持了与先前主要版本的向后兼容性。 正在安装 官方发行的二进制文件在中可用。 建造 从源代码构建...
mc —一个简单的Mesos-DNS客户端 这是一个用Python编写的简单的客户端。 将其用作CLI工具,如下所示: $ ./mc.py localhost redis.marathon.mesos $ Discovered redis.marathon.mesos running on 10.141.141.10:...
在Mesos中,你可以通过Mesos-DNS或 Marathon(Mesos上的应用编排层)来调度Flocker的数据卷容器。通过Flocker的Mesos驱动程序,可以将Flocker的数据卷与Mesos任务关联起来,这样当Mesos调度器重新分配任务时,相关联...
6. **运维工具**:Mesos自带了一些管理工具,如Mesos-DNS用于服务发现,以及Mesos UI用于监控集群状态。用户可能还需要了解如何使用这些工具进行日常运维。 7. **安全性**:在生产环境中,需要考虑安全问题,如证书...
它可以自动处理围绕DCOS的许多操作需求(设置参展商群集,设置Mesos-DNS,将DNS分辨率设置为仅在Mesos Masters出现并且开始正确解析递归DNS查询之后才使用Mesos-DNS)。 它还根据处理将Mesos二进制文件运送到...
描述 使用 Mesos/Marathon/Demios 编排 Docker 介绍 关于 Mesos 云时代的应用 从静态分区到弹性共享 经过测试的物理环境 操作系统:Ubuntu 12.04.4 LTS amd64(3.11.0-15-generic ... use_mesos_dns :默认为“真” us
Marathon之服务发现篇介绍了如何通过Mesos-DNS实现服务发现,包括Mesos-DNS的介绍、安装与配置以及运行。 在Marathon之负载均衡篇中,文档详细描述了如何通过Marathon-Bridge、HAProxy、Bamboo等工具来实现负载均衡...
这是一个包含开源项目Apache Mesos,Marathon和Mesos-DNS的软件包,并提供了这些服务作为Cloudera Manager Parcel,可以在Cloudera Hadoop集群上部署和运行。 该包负责在同一群集中运行的资源管理和不同分布式应用...
- `mesos-DNS` 用于提供 DNS 解析服务,支持服务发现。 2. **Slave 节点**:包含一组 Slave 组件,如 `mesos-slave`。这些节点负责执行 Master 分配的任务。 - `mesos-slave` 负责执行来自 `mesos-master` 的任务...
- **Mesos-DNS**:通过DNS实现服务发现,简化了服务间的调用流程。 #### 结论 通过采用Mesos容器技术,360广告系统不仅解决了原有的服务痛点,还大大提升了系统的整体性能和稳定性。Mesos的高灵活性和扩展性使得...
设置流浪汉/普拉亚准备(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....
服务发现是Ocean中的另一重要组件,它利用Mesos-DNS、MySQL Proxy、Redis Cluster、RPC框架和Zookeeper等技术,确保服务间的通信稳定可靠。动态安全策略通过IP和JOBNAME双重验证,增强了系统的健壮性,防御潜在的...
dcos网 ... 特征 ... 具有多播和故障检测器功能的分布式CRDT DNS和 使用编排虚拟覆盖网络 分布式虚拟IP负载平衡 ... 要运行dcos-net ,还需要Exhibitor,Apache ZooKeeper,Apache Mesos和Mesos-DNS。 发展 您可以分别使用ma
2. **ExternalDNS**:这是一个开源项目,旨在将Kubernetes或Mesos的服务自动发布到公共DNS提供商,如AWS Route53、Google Cloud DNS等。通过ExternalDNS,我们可以将内部服务的DNS记录映射到外部可访问的域名,使得...
可能引入了更智能的服务发现机制,如使用Mesos-DNS或Consul,使得服务之间的通信更加稳定和高效。网络模型的改进可能包括更灵活的网络策略,支持多租户和网络隔离,以及对容器网络接口(CNI)的进一步集成。 在安全性...
无数 Myriad是一个Mesos框架,旨在在Mesos上扩展... NodeManager配置文件 通过REST API / Web UI扩展/缩小节点管理器 框架对帐与HA 使用Marathon / Mesos-DNS的ResourceManager故障转移/发现 细粒度缩放 远程分发NodeM
中间层套件Mesosphere Kit 旨在提供一种简单的方法来在 VirtualBox 环境中快速...服务发现Mesos-DNS 默认安装并运行在主节点上。 默认情况下,Haproxy 在主节点上安装、配置和运行。 注意:它仅配置为支持已部署的 Mara
AWS VPC 中 Mesos + Ceph 集群的 Terraform 模块和 AMI 的 Packer 模板。 概括 默认情况下,此 Terraform 模块将启动如下所示的实例: 行政 t2.micro ssh 网关 运行 ceph-deploy 大师1、大师2、大师3 t2.micro ...
10. **集成 Mesos-DNS**:与 Mesos-DNS 集成,Marathon 可以提供基于 DNS 的服务发现,使得应用实例可以通过域名进行通信,简化微服务架构中的通信问题。 总结来说,"marathon-3.0" 版本是针对 HTML 应用和其他类型...