mesos-dns 搭建
Mesos-DNS用来支持Mesos集群上的服务发现,使运行在Mesos上的应用和服务可以通过域名服务器来发现彼此。你只要知道一个Mesos数据中心上运行的应用的名字,就可以通过Mesos-DNS查询到该应用的IP和端口号。
安装
官方下载mesos-dns镜像没有提供mesos-dns的HTTP接口出来,所以先用二进制搭建,在自己build镜像。
mesos-dns文件下载:!https://github.com/mesosphere/mesos-dns/releases
下载 mesos-dns-v0.6.0-linux-amd64 一个二进制文件。
准备配置文件:config.json
1 | { |
启动 mesos-dns
1 | mv mesos-dns-v0.6.0-linux-amd64 mesos-dns |
mesos-dns 会启动 53 和 8123 两个端口, 53 为dns端口,8123 为http api端口。
HTTP API 接口
URL | 说明 |
---|---|
http://10.0.0.49:8123/v1/version | mesos-dns版本信息 |
http://10.0.0.49:8123/v1/config | mesos-dns配置信息 |
http://10.0.0.49:8123/v1/hosts/{host} | 该host的IP地址信息 |
http://10.0.0.49:8123/v1/services/{service} | 该service的host、IP、端口信息 |
例子:
http://10.0.0.49:8123/v1/hosts/nginxqq-nginx.marathon.slave.mesos
分析:marathon.slave.mesos 是固定的,mesos是condig.json中domain定义的,在往前是从节点,marathon是框架,nginx是组,nginxqq是appid
http://10.0.0.49:8123/v1/services/_nginxqq-nginx._tcp.marathon.slave.mesos
分析: _nginxqq-nginx._tcp.marathon.slave.mesos , nginxqq容器的ID名,nginx为组名,_tcp.marathon.slave.mesos 为固定的。
dig 获取mesos-dns信息
查找app所在节点的IP
dig nginxqq-nginx.marathon.slave.mesos +short
查找app服务端口号
dig SRV _nginxqq-nginx._tcp.marathon.slave.mesos +short
- 其中 过得到的主机名 mesos-dns 是可以解析的,就是app所在的物理机。
docker images
创建 docker file 目录,放入所用的文件
mkdir dockerfile-mesos-dns
cd dockerfile-mesos-dns
cp ~/mesos-dns .
cp ~/config.json .
编辑 Dockerfile 文件
vim Dockerfile
FROM centos:6
WORKDIR /root/
ADD mesos-dns /root/
ADD config.json /root/
EXPOSE 53 8123
CMD ["/root/mesos-dns", "-config=/root/config.json", "-v=2"]
生成镜像
docker build -t stg-mesos-dns:0.6.0 .
运行镜像
docker run -d --name=stg-mesos-dns --net=host stg-mesos-dns:0.6.0
感觉文章还可以的话,帮忙点点下面的广告哦! 谢谢支持!