# 🎯 HashiCorp Stack 运维集思录 ## 📍 关键里程碑记录 ### ✅ 2025-09-30 标志性成功 **Nomad完全恢复正常运行** - **成功指标**: - Nomad server集群: 7个节点全部在线 (ch2.global为leader) - Nomad client节点: 6个节点全部ready状态 - 服务状态: nomad服务运行正常 - **关键操作**: 恢复了Nomad的consul配置 (`address = "master:8500,ash3c:8500,warden:8500"`) --- ### ❌ 当前大失败 **Vault job无法部署到bj-warden节点** - **失败现象**: ``` * Constraint "${node.unique.name} = bj-warden": 5 nodes excluded by filter * Constraint "${attr.consul.version} semver >= 1.8.0": 1 nodes excluded by filter ``` - **根本原因发现**: consul-cluster job约束条件为 `(master|ash3c|hcp)`,**warden节点被排除在外**! - **历史教训**: 之前通过移除service块让vault独立运行,但这导致vault无法与consul集成,项目失去意义 - **深层问题**: 不是consul没运行,而是**根本不允许在warden节点运行consul**! --- ## 🎯 核心矛盾 **Vault必须与Consul集成** ←→ **bj-warden节点没有consul** ### 🎯 新思路:给Nomad节点打consul标签 **用户建议**: 给所有运行consul的nomad节点打上标签标识 - **优势**: 优雅、可扩展、符合Nomad范式 - **实施路径**: 1. 给master、ash3c等已有consul节点打标签 `consul=true` 2. 修改vault job约束条件,选择有consul标签的节点 3. 可选:给warden节点也打标签,后续部署consul到该节点 --- ### 🔍 当前发现 - 所有节点Attributes为null,说明Nomad客户端配置可能有问题 - 用nomad拉起consul不能自动让节点具备consul属性 - **重大发现**:nomad node status -verbose 和 -json 输出格式数据不一致! - verbose模式显示Meta中有"consul = true" - JSON格式显示Meta为null - 可能是Nomad的bug或数据同步问题 ### 🎯 下一步行动 1. **调查Attributes为null的原因** - 检查Nomad客户端配置 2. **考虑用ansible部署consul** - 确保consul作为系统服务运行 3. **验证meta数据一致性** - 解决verbose和json格式数据不一致问题 4. **重新思考节点标签策略** - 基于实际可用的数据格式制定策略 --- ## 📋 待办清单 - [ ] 检查bj-warden节点的consul配置 - [ ] 在bj-warden节点启动consul服务 - [ ] 验证vault job成功部署 - [ ] 确认vault与consul集成正常 --- ## 🚫 禁止操作 - ❌ 移除vault job的service块 (会导致失去consul集成) - ❌ 忽略consul版本约束 (会导致兼容性问题)