为什么Mesos-DNS不提供SRV答案?

时间:2016-02-18 13:50:26

标签: dns mesos mesosphere

我有一个流浪盒,运行Mesos,Marathon和Chronos(公开打包为playa-mesos)。这是一个理智的环境(我已经定制为192.168。 IP地址虽然)我可以推出不同的应用程序包括。码头工人集装箱化。 我尝试了一个新的演示,其中有DNS要求,并且mesos应用程序启动定义如下:

{
 "id": "mesos-dns",
 "instances": 1,
 "cpus": 0.2,
 "mem": 50,
 "cmd": "/mesos-dns -config=/config.json",
 "container": {
  "type": "DOCKER",
  "docker": {
  "image": "mesosphere/mesos-dns:latest",
  "network": "HOST"
},
"volumes": [
  {
    "containerPath": "/config.json",
    "hostPath": "/etc/mesos-dns/config.json",
    "mode": "RO"
  }
]
}
}

config.json如下:

{
"zk": "zk://127.0.0.1:2181/mesos",
"refreshSeconds": 60,
"ttl": 60,
"domain": "mesos",
"port": 53,
"resolvers": ["10.0.2.3"],
"timeout": 5,
"email": "root.mesos-dns.mesos"
}

/etc/resolv.conf包含nameserver 10.0.2.3

以下是我的DNS查询的dig响应;两者都显示如下: -

dig _webdis-site-m-shop._tcp.marathon.mesos SRV

; <<>> DiG 9.9.5-3ubuntu0.1-Ubuntu <<>> _webdis-site-m-shop._tcp.marathon.mesos SRV
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 4759
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 8192
;; QUESTION SECTION:
;_webdis-site-m-shop._tcp.marathon.mesos. IN SRV

;; AUTHORITY SECTION:
.                       56521   IN      SOA     a.root-servers.net. nstld.verisign-grs.com. 2016021800 1
800 900 604800 86400

;; Query time: 155 msec
;; SERVER: 10.0.2.3#53(10.0.2.3)
;; WHEN: Thu Feb 18 13:38:21 UTC 2016
;; MSG SIZE  rcvd: 143`

正如您所看到的,没有 ANSWER,状态NXDOMAIN表示此查询导致了一个不存在的域。

有人可以帮我解决这个问题吗?

TIA。

1 个答案:

答案 0 :(得分:1)

现在已修复。我从SO的其他帖子中得到了一些想法。我已经改变了IP地址等的OOTB设置...... 我广泛地添加了127.0.0.1 loopback ip addr,virtualbox generated ip addr(在我的例子中是192.168.x.y)并保留了现有的nameserver条目。 dig命令的结果现在是: -

public void onPause() {
        super.onPause();

        Log.e(tag, "In the onPause() event");
        // If the screen is off then the device has been locked
        PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
        boolean isScreenOn = powerManager.isScreenOn(); // deprecated, but you can use isInteractive too

        if (!isScreenOn) {

            finish();  // or do your stuffs
        }

    }