/etc/hosts 修改后立即生效,需用单个空格分隔ip与主机名,严禁tab或多空格;必须双向配置、ip准确、主机名一致,并通过getent hosts验证;优先级高于dns,适用于静态内网集群。

/etc/hosts 文件改完就能生效,不用重启系统,但必须保证 IP 和主机名之间是**空格分隔**,不能用 Tab 或多个空格——这是最常踩的坑。
怎么编辑 /etc/hosts 文件
用 root 权限打开编辑:
sudo vi /etc/hosts
在文件末尾追加一行,格式严格为:IP地址 主机名(中间一个 ASCII 空格):
192.168.80.10 master192.168.80.11 slave1
别写成 192.168.80.10\tmaster(Tab 分隔),也别漏掉空格写成 192.168.80.10master,否则 ping 或 ssh 会解析失败。
为什么改了 /etc/hosts 还 ping 不通主机名
常见原因有三个:
- 目标主机没配自己的
/etc/hosts映射(双向通信需双方都加) - 主机名和
/etc/hostname不一致(比如/etc/hostname是node1,但/etc/hosts写了node01) - IP 地址填错或已变更(尤其克隆虚拟机后没更新 IP)
验证方式:在本机执行 getent hosts master,能返回对应 IP 才算解析成功;如果返回空,说明映射没生效或格式错误。
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
/etc/hosts 和 DNS 的优先级关系
Linux 默认按 hosts → DNS 顺序查解析,所以 /etc/hosts 里的条目会覆盖 DNS 返回结果。
- 适合内部集群(如 Hadoop、Kubernetes 节点间通信)
- 不适合泛域名或动态 IP 场景(每次 IP 变更都要手动同步)
- 不建议删掉原有
127.0.0.1 localhost行,否则部分服务启动异常
注意:systemd-resolved 或某些容器环境可能绕过 /etc/hosts,此时得看 getent hosts 实际行为,而不是只信 cat /etc/hosts。
多节点集群要同步所有机器的 /etc/hosts
比如三台机器组成集群,每台都必须有全部节点的映射:
192.168.144.201 hadoop201<br>192.168.144.202 hadoop202<br>192.168.144.203 hadoop203
少写一台,就可能出现 ssh hadoop202: Name or service not known。
容易被忽略的是:Windows 宿主机也要同步修改 C:\Windows\System32\drivers\etc\hosts,否则从宿主机连虚拟机也会失败。










