You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Consul服务域名解析异常求助:指定DNS有效系统默认无效

Consul服务域名解析异常解决方法

问题根源

  1. 系统默认DNS查询优先走外部服务器,外部服务器无法识别.consul私有域,导致未指定DNS时返回NXDOMAIN
  2. dnsmasq未配置转发.consul域请求到Consul的DNS端口(8600),ping、psql等工具使用系统默认DNS链时无法解析Consul域名
  3. replica.postgres-cluster.service.consul解析失败,说明Consul中没有注册带replica标签的postgres-cluster服务实例,或者服务标签配置有误

解决步骤

一、配置dnsmasq转发.consul域请求到Consul DNS

  1. 创建或编辑dnsmasq的Consul配置文件:
vi /etc/dnsmasq.d/consul.conf

添加以下内容:

# 将所有.consul域的DNS请求转发到本地Consul DNS端口
server=/consul/127.0.0.1#8600
  1. 重启dnsmasq服务使配置生效:
systemctl restart dnsmasq
  1. 调整/etc/resolv.conf,让系统优先使用dnsmasq(127.0.0.1)作为DNS服务器:
search ourdomain.com
nameserver 127.0.0.1
nameserver our_ns1
nameserver our_ns2

注意:如果OL7的systemd自动覆盖/etc/resolv.conf,可以编辑/etc/resolv.conf.head,添加nameserver 127.0.0.1,这样系统生成resolv.conf时会自动把这条放在最前面。

二、修复replica.postgres-cluster.service.consul解析失败

  1. 检查Consul中postgres-cluster服务的实例情况:
consul catalog service postgres-cluster

查看输出中是否存在带有replica标签的实例。
2. 如果没有replica实例,需要将PostgreSQL副本节点注册到Consul服务中。示例注册命令:

consul services register -name postgres-cluster -tags replica -address <replica_node_ip> -port 6432
  1. 如果已有replica实例,检查服务注册时的标签是否正确,确保实例带有replica标签。Consul支持通过tag.service.consul格式解析带标签的服务实例。

验证配置

执行以下命令确认解析正常:

# 测试master域名解析
ping master.postgres-cluster.service.consul
# 测试replica域名解析
nslookup replica.postgres-cluster.service.consul
# 测试Consul集群域名解析
dig consul.service.consul

内容的提问来源于stack exchange,提问作者Oxycash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 19:05:23