当前位置: 首页 > 文档资料 > Mesos 中文文档 >

1.1.9.2 构建运行 Mesos-DNS

优质
小牛编辑
133浏览
2023-12-01

构建运行Mesos-DNS

什么是 Mesos-DNS

Mesosphere 发布了 Ahpha 版本的 Mesos-DNS,Mesos-DNS 是一个适用于 Mesos 集群的开源的服务发现组件,Mesos 上的应用和服务可以通过 DNS 的方式来发现对方。Mesos-DNS 的特点是轻量、无状态,易于部署和维护。

构建 Mesos-DNS

要构建Mesos-DNS,你必须在你的电脑上安装go和godep。必须设置GOPATH环境变量指向go安装包的目录,必须添加$GOPATH/bin到PATH环境变量。如果你安装go到自定义目录,需要设置GOROOT环境变量,并且把$GOROOT/bin添加到PATH环境变量中去。例如,执行以下操作:

export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
export GOROOT=/usr/local/go      # 假设 go 装在了 /usr/local/go 目录下
export PATH=$PATH:$GOROOT/bin

用godep构建Mesos-DNS:

go get github.com/mesosphere/mesos-dns
cd $GOPATH/src/github.com/mesosphere/mesos-dns
make all

这将生成一个静态的二进制Mesos-DNS文件,可以装在任意地方。在同一目录下你可以找到配置文件config.json。

运行   Mesos-DNS

若要运行Mesos-DNS,必须在所选的服务器上安装mesos-dns二进制文件。服务可以装在Mesos的任意一台机器上,或者是在同一网络的一台专用机器上。接下来,按照链接http://mesosphere.github.io/mesos-dns/docs/configuration-parameters.html说明为你的集群创建一个配置文件。可以这样启动Mesos-DNS

sudo mesos-dns -config=config.json &

为了加强容错能力,建议通过Marathon把Mesos-DNS服务发布到任意一台Mesos从节点上。如果Mesos-DNS失败,Marathon将重新启动它,确保几乎不间断的服务。可以通过Marathon约束从节点的主机名或者任何从节点的属性来选择把Mesos-DNS发布到哪一个从节点上面。例如下面的json描述了Marathon通过从节点的主机名发布Mesos-DNS    10.181.64.13:

{
"cmd": "sudo  /usr/local/mesos-dns/mesos-dns -config=/usr/local/mesos-dns/config.json",
"cpus": 1.0, 
"mem": 1024,
"id": "mesos-dns",
"instances": 1,
"constraints": [["hostname", "CLUSTER", "10.181.64.13"]]
}

注意这个主机名字段是指从节点向Mesos注册时使用的主机名。它可能不是一个IP地址,或者是任何形式有效的主机名。可以通过Mesos的WEB页面来检查从节点的主机名属性。可以通过REST访问状态:

curl http://master_hostname:5050/master/state.json | python -mjson.tool

设置从节点

允许Mesos任务使用Mesos-DNS作为主DNS服务,你必须在每个从节点上修改文件 /etc/resolv.conf增加新的nameserver。例如,如果mesos-dns运行的服务器地址是10.181.64.13,你应该在每个从节点/etc/resolv.conf开始加上一行nameserver 10.181.64.13。可以通过运行下面的命令实现:

sudo sed -i '1s/^/nameserver 10.181.64.13\n /' /etc/resolv.conf

如果启动多个Mesos-DNS,需要在/etc/resolv.conf的开始为每一个服务添加nameserver。这些条目的顺序将确定从节点连接Mesos-DNS实例的顺序。你可以通过设置options rotate在nameserver之间选择负载均衡的轮循机制。

/etc/resolv.conf中其他的nameserver设置保持不变。/etc/resolv.conf文件在主节点中,只需要修改同时做为从节点的机器。