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

{
  "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

你可能感兴趣的:(mesos-dns 搭建)