如何在VirtualBox仅主机网络中配置反向DNS解析
解决VirtualBox仅主机网络中PostgreSQL反向DNS解析问题
针对你遇到的repmgr集群副本显示上游未连接、pg_stat_replication的client_hostname为空的问题,可通过以下两种方式配置VirtualBox仅主机网络的反向DNS解析:
方法一:修改各节点hosts文件(小规模集群首选)
VirtualBox仅主机网络默认无内置DNS服务,直接修改/etc/hosts可快速实现正向/反向解析映射:
- 登录集群每个节点,编辑
/etc/hosts文件,添加所有节点的IP与主机名对应关系(示例如下,替换为你的实际IP和主机名):192.168.56.101 node1 192.168.56.102 node2 192.168.56.103 node3 192.168.56.104 node4 - 验证反向解析是否生效:执行
dig -x 192.168.56.101或nslookup 192.168.56.101,应返回对应的主机名。 - 配置PostgreSQL启用
log_hostname:- 编辑
postgresql.conf,设置log_hostname = on - 重启PostgreSQL服务:
systemctl restart postgresql
- 编辑
- 检查
pg_stat_replication视图的client_hostname字段,确认已显示对应主机名后,重新执行repmgr cluster show验证集群状态。
方法二:搭建本地DNS服务器(dnsmasq,适合规模较大的集群)
通过dnsmasq搭建轻量DNS服务器,统一管理解析规则:
- 在集群任意节点(如node1)安装dnsmasq:
- Debian/Ubuntu:
apt install dnsmasq -y - RHEL/CentOS:
yum install dnsmasq -y
- Debian/Ubuntu:
- 编辑
/etc/dnsmasq.conf,添加正向与反向解析规则(替换为你的实际IP和主机名):# 正向解析:主机名映射到IP address=/node1/192.168.56.101 address=/node2/192.168.56.102 address=/node3/192.168.56.103 address=/node4/192.168.56.104 # 反向解析(PTR记录):IP映射到主机名 ptr-record=101.56.168.192.in-addr.arpa,node1 ptr-record=102.56.168.192.in-addr.arpa,node2 ptr-record=103.56.168.192.in-addr.arpa,node3 ptr-record=104.56.168.192.in-addr.arpa,node4 - 启动并启用dnsmasq服务:
systemctl start dnsmasq systemctl enable dnsmasq - 在所有集群节点上配置DNS服务器指向dnsmasq节点IP:
- 编辑
/etc/resolv.conf,添加nameserver 192.168.56.101(替换为你的dnsmasq节点IP) - 若需永久生效,可修改网络配置文件(如Debian的
/etc/network/interfaces、CentOS的/etc/sysconfig/network-scripts/ifcfg-*)
- 编辑
- 验证反向解析:每个节点执行
dig -x 192.168.56.101,确认返回对应主机名。 - 同方法一,配置PostgreSQL的
log_hostname = on并重启服务,最后验证repmgr集群状态。
注意事项
- 确保VirtualBox仅主机网络内所有节点网络连通,防火墙未阻挡UDP 53端口的DNS请求。
- 若repmgr仍显示异常,可检查repmgr配置文件中是否使用主机名而非IP指定上游节点,确保解析路径一致。
内容的提问来源于stack exchange,提问作者user11236651
相关产品推荐
相关产品推荐

