内部域名无法解析

在部署和使用时,如果遇到类似这样的日志信息:"Name or service not known" 或者 "host=xxx.service.consul port=xxxx max retries...."

意味着内部域名无法解析的问题。内部域名,指的是蓝鲸集群模块之间使用 consul 模块注册的以".service.consul"结尾 的域名。它由每台机器上运行的consul进程监听的53端口提供解析服务。

当无法解析时,第一步,在报错的机器上使用dig看看consul能否解析:

dig xxx.service.consul @127.0.0.1

@127.0.0.1 表示使用 127.0.0.1:53 这个作为dns服务器,也就是使用 consul 提供的dns服务。

正常情况下,可以看到类似下图的记录。如果命令换成dig 域名 没出现正确的记录,说明 /etc/resolv.conf里没有配置上127.0.0.1 的namserver,确认/etc/resolv.conf里第一行是nameserver 127.0.0.1

;; QUESTION SECTION:
;zk.service.consul.        IN    A

;; ANSWER SECTION:
zk.service.consul.    0    IN    A    10.x.x.x
zk.service.consul.    0    IN    A    10.x.x.x
zk.service.consul.    0    IN    A    10.x.x.x

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)

如果出现以下信息, 说明 consul 没有正常启动。那么 使用supervisor启动consul进程。

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.2 <<>> zk.service.consul @127.0.0.1
;; global options: +cmd
;; connection timed out; no servers could be reached

如果出现以下信息 "IN A" 后面没有 ip地址,说明consul 启动了,但是无法解析域名

;; QUESTION SECTION:
;zk.service.consul.        IN    A

;; AUTHORITY SECTION:
consul.            0    IN    SOA    ns.consul. postmaster.consul. 1530849644 3600 600 86400 0

此时按照以下步骤:

  • 运行 consul monitor 看看日志,主要确认consul集群状态是否正常。观察是否有"no cluster leader" 的输出。
  • 针对具体的域名,譬如 zk.service.consul,那么登陆到zk所在机器,查看/data/bkce/etc/consul.d/zk.json文件 运行里面的check脚本,看返回的输出。

对于出现"no cluster leader"的输出时,说明consul之间没有成功组成集群,选举出leader:

  • 检查consul server节点是否都running
  • 在任意一台consul上输入 consul join <另外一个consul节点>
  • 查看节点状态:consul operator raft list-peers
Copyright © 腾讯蓝鲸 2012-2018 all right reserved,powered by Gitbook最后修订日期: 2019-06-17

results matching ""

    No results matching ""