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

如何配置YugabyteDB容器,使yb_servers()返回主机名而非IP

解决YugabyteDB容器yb_servers()显示主机名而非IP的问题

要让yb_servers()的host列显示容器主机名,核心是在启动yugabyted时显式指定对外宣告地址为主机名,让YugabyteDB集群内部以主机名注册节点。

修改后的Docker启动命令

以你的node4节点为例,更新启动命令,添加--advertise_address参数指定主机名:

docker run -d --network yb_net  
  --hostname node4 --name node4 
  -p7004:7000 -p9004:9000       
  yugabytedb/yugabyte           
  yugabyted start --background=false --join node1.yb_net --advertise_address node4

如果需要更明确的集群内FQDN(避免解析歧义),也可以使用带网络后缀的主机名:

docker run -d --network yb_net  
  --hostname node4 --name node4 
  -p7004:7000 -p9004:9000       
  yugabytedb/yugabyte           
  yugabyted start --background=false --join node1.yb_net --advertise_address node4.yb_net

关键说明

  • --advertise_address:该参数定义节点对外暴露的通信地址,集群内其他节点会依赖这个地址建立连接。将其设为容器主机名后,YugabyteDB会把主机名写入集群元数据,yb_servers()的host列就会显示主机名而非IP。
  • 所有6个节点都需要按此方式启动,替换对应的--hostname、--name和--advertise_address参数(比如node1对应--advertise_address node1)。
  • 无需额外配置DNS:你使用的yb_net是Docker自定义网络,Docker会自动在该网络内提供主机名解析,节点间可直接通过主机名通信。

验证效果

所有节点启动完成后,重新执行查询:

select host, public_ip, zone, uuid from yb_servers();

此时host列会显示对应的主机名(如node1、node4等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 12:25:01