mesos-dns搭建

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"zk": "zk://10.0.0.52:2181,10.0.0.53:2181,10.0.0.54:2181/mesos",
"masters": ["10.0.0.52:5050", "10.0.0.53:5050", "10.0.0.54:5050"],
"refreshSeconds": 10,
"ttl": 0,
"domain": "mesos",
"port": 53,
"resolvers": ["10.10.130.5"],
"timeout": 5,
"httpon": true,
"dnson": true,
"httpport": 8123,
"externalon": true,
"listener": "0.0.0.0",
"SOAMname": "docker-test.com",
"SOARname": "root.docker-test.com",
"SOARefresh": 10,
"SOARetry": 3,
"SOAExpire": 86400,
"SOAMinttl": 10,
"IPSources": ["netinfo", "mesos", "host"]
}

启动 mesos-dns

1
2
3
mv mesos-dns-v0.6.0-linux-amd64 mesos-dns
chmod +x mesos-dns
./mesos-dns -config=config.json -v=2

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

感觉文章还可以的话,帮忙点点下面的广告哦! 谢谢支持!

感谢您的支持!