Nomad 的 HTTP API 口
HashiCorp Nomad 调度器的 HTTP API 端口:作业提交、节点与分配管理、集群状态查询都走 4646,配套的 4647 是服务间 RPC、4648 是节点间的成员管理。Nomad 默认不启用认证,ACL 需要显式打开。
基本信息
| 服务 | Nomad HTTP API |
|---|---|
| 协议 | TCP/HTTP |
| 默认端口 | 4646(RPC 4647、成员管理 4648) |
| 认证 | ACL 需显式开启 |
| 暴露面 | 仅运维与 CI 网段 |
典型使用场景
- 提交与回滚作业(job run / job stop)
- 查看节点与分配状态
- CI 流水线中的部署环节
- 节点维护:驱逐与重新纳入调度
- 命名空间与集群级参数管理
集群与作业核对
集群与作业核对
nomad server members
nomad status
nomad job plan app.nomad
curl -s http://nomad01:4646/v1/nodes | head -c 300
ss -lntp | grep -E '464[6-8]'排障与核对
| 检查项 | 做法 | 异常表现 |
|---|---|---|
| 集群成员 | nomad server members | 成员缺失:影响仲裁,先确认节点状态 |
| 作业状态 | nomad status <job> | 频繁重调度:资源不足或任务启动失败 |
| ACL | 不带 token 调 API | 能提交作业说明 ACL 未启用 |
| 节点状态 | nomad node status | 节点显示 down:检查探活与网络 |
Nomad 默认没有认证与授权,未启用 ACL 的 4646 可被任何可达主机用来提交作业;而它能在集群节点上运行容器或进程,因此这等价于远程执行能力,上线前必须同时开 ACL 并限制来源。
简单带来的默认值问题
Nomad 的设计目标是简单:一个二进制同时调度容器与普通进程,配置比大而全的编排系统轻。代价是安全相关的默认值同样「简单」——ACL、TLS、命名空间都要手工打开,装完按默认配置直接上线是这套系统最常见的风险来源。
生产上应同时启用 TLS 与双向校验,让 4646 与 4647 都加密。只开 ACL 不开 TLS 时,token 在 API 请求里明文传输,同网段可直接抓取。
不开 ACL 直连 4646:任意内网机器可提交特权任务接管节点,等同于远程代码执行。
ACL、命名空间等能力在不同版本间有差异,配置策略前先确认当前版本支持范围,避免照搬文档后规则静默不生效。
排查时要先把「API 面」和「调度面」分开看:API 端口通不代表任务能正常调度,节点资源不足或任务定义出错时,API 一切正常而作业一直起不来。