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
{
"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-mtime.com",
"SOARname": "root.docker-mtime.com",
"SOARefresh": 10,
"SOARetry": 3,
"SOAExpire": 86400,
"SOAMinttl": 10,
"IPSources": ["netinfo", "mesos", "host"]
}
启动 mesos-dns
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