345 lines
11 KiB
Markdown
345 lines
11 KiB
Markdown
# 🎬 Nomad 集群管理交接仪式
|
||
|
||
## 📋 交接概述
|
||
|
||
**交接时间**: 2025-10-09 12:15 UTC
|
||
**交接原因**: 当前 AI 助手在 Nomad 集群管理上遇到困难,需要新的 AI 助手接手
|
||
**交接目标**: 恢复 Nomad 集群稳定运行,实现真正的 GitOps 自动化流程
|
||
|
||
---
|
||
|
||
## 🏗️ 当前系统架构
|
||
|
||
### **核心组件**
|
||
```
|
||
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
||
│ Gitea Repo │───▶│ Gitea Actions │───▶│ Ansible Deploy │
|
||
│ (mgmt.git) │ │ (Workflows) │ │ (Playbooks) │
|
||
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
||
│ │ │
|
||
▼ ▼ ▼
|
||
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
||
│ Nomad Configs │ │ Webhook API │ │ Nomad Cluster │
|
||
│ (nomad-configs/) │ │ (Trigger) │ │ (7+ nodes) │
|
||
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
||
```
|
||
|
||
### **节点分布**
|
||
- **服务器节点**: ash3c, ch4, warden (Consul 服务器)
|
||
- **客户端节点**: ash2e, hcp1, influxdb, ash3c, ch4, warden, browser
|
||
- **网络**: Tailscale 私有网络 (tailnet-68f9.ts.net)
|
||
|
||
### **关键目录结构**
|
||
```
|
||
/root/mgmt/
|
||
├── .gitea/workflows/ # Gitea Actions 工作流 (❌ 未启用)
|
||
│ ├── deploy-nomad.yml # Nomad 部署工作流
|
||
│ └── ansible-deploy.yml # Ansible 部署工作流
|
||
├── ansible/ # Ansible 配置和剧本
|
||
│ ├── inventory/hosts.yml # 当前只有 warden 节点
|
||
│ ├── ansible.cfg # Ansible 全局配置
|
||
│ └── fix-warden-zsh.yml # 修复 warden zsh 配置的剧本
|
||
├── nomad-configs/ # Nomad 配置文件
|
||
│ ├── nodes/ # 各节点配置文件
|
||
│ │ ├── warden.hcl # ✅ 成功模板 (基准配置)
|
||
│ │ ├── hcp1.hcl # ❌ 需要修复
|
||
│ │ ├── onecloud1.hcl # ❌ 节点已离开
|
||
│ │ ├── influxdb1.hcl # 状态待确认
|
||
│ │ ├── ash3c.hcl # 状态待确认
|
||
│ │ ├── ch4.hcl # 状态待确认
|
||
│ │ └── browser.hcl # 状态待确认
|
||
│ ├── servers/ # 服务器节点配置
|
||
│ ├── templates/ # 配置模板
|
||
│ │ └── nomad-client.hcl.j2
|
||
│ └── scripts/deploy.sh # 部署脚本
|
||
├── nomad-jobs/ # Nomad 作业定义
|
||
│ ├── consul-cluster-nomad # ❌ pending 状态
|
||
│ ├── vault-cluster-ha.nomad # ❌ pending 状态
|
||
│ └── traefik-cloudflare-v3 # ❌ pending 状态
|
||
├── infrastructure/ # 基础设施代码
|
||
├── components/ # 组件配置
|
||
├── deployment/ # 部署相关
|
||
├── security/ # 安全配置
|
||
└── scripts/ # 各种脚本
|
||
├── fix-nomad-nodes.sh # 修复 Nomad 节点脚本
|
||
└── webhook-deploy.sh # Webhook 部署脚本
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 系统目标
|
||
|
||
### **主要目标**
|
||
1. **高可用 Nomad 集群**: 7+ 节点稳定运行
|
||
2. **GitOps 自动化**: 代码推送 → 自动部署
|
||
3. **服务编排**: Consul + Vault + Traefik 完整栈
|
||
4. **配置一致性**: 所有节点配置统一管理
|
||
|
||
### **服务栈目标**
|
||
```
|
||
Consul Cluster (服务发现)
|
||
↓
|
||
Nomad Cluster (作业编排)
|
||
↓
|
||
Vault Cluster (密钥管理)
|
||
↓
|
||
Traefik (负载均衡)
|
||
↓
|
||
应用服务 (通过 Nomad 部署)
|
||
```
|
||
|
||
---
|
||
|
||
## 🚨 当前问题分析
|
||
|
||
### **核心问题**
|
||
1. **❌ Gitea Actions 未启用**: `has_actions: false`
|
||
- 导致 GitOps 流程失效
|
||
- 工作流文件存在但不执行
|
||
- 需要手动触发部署
|
||
|
||
2. **❌ Nomad 节点不稳定**: 部分节点频繁 down
|
||
- ash1d: 一直 down
|
||
- onecloud1: left 集群
|
||
- 节点间连接问题
|
||
|
||
3. **❌ 服务部署失败**: 所有服务都 pending
|
||
- consul-cluster-nomad: pending
|
||
- vault-cluster-ha: pending
|
||
- traefik-cloudflare-v3: pending
|
||
|
||
### **具体错误**
|
||
```bash
|
||
# Nomad 节点状态
|
||
ID Node Pool DC Name Status
|
||
8ec41212 default dc1 ash2e ready
|
||
217d02f1 default dc1 ash1d down # ❌ 问题节点
|
||
f99725f8 default dc1 hcp1 ready
|
||
7610e8cb default dc1 influxdb ready
|
||
6d1e03b2 default dc1 ash3c ready
|
||
304efba0 default dc1 ch4 ready
|
||
22da3f32 default dc1 warden ready
|
||
c9c32568 default dc1 browser ready
|
||
|
||
# Consul 成员状态
|
||
Node Address Status
|
||
ash3c 100.116.80.94:8301 alive
|
||
ch4 100.117.106.136:8301 alive
|
||
warden 100.122.197.112:8301 alive
|
||
onecloud1 100.98.209.50:8301 left # ❌ 已离开
|
||
ash1d 100.81.26.3:8301 left # ❌ 已离开
|
||
```
|
||
|
||
---
|
||
|
||
## 🔧 解决方案建议
|
||
|
||
### **优先级 1: 启用 Gitea Actions**
|
||
```bash
|
||
# 检查 Gitea 全局 Actions 设置
|
||
curl -s "http://gitea.tailnet-68f9.ts.net/api/v1/admin/config" | jq '.actions'
|
||
|
||
# 启用仓库 Actions
|
||
curl -X PATCH "http://gitea.tailnet-68f9.ts.net/api/v1/repos/ben/mgmt" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"has_actions": true}'
|
||
```
|
||
|
||
### **优先级 2: 扩展 Ansible Inventory**
|
||
```bash
|
||
# 当前 inventory 只有 warden 节点,需要添加所有节点
|
||
# 编辑 ansible/inventory/hosts.yml 添加所有节点信息
|
||
|
||
# 参考当前配置格式:
|
||
# warden:
|
||
# ansible_host: 100.122.197.112
|
||
# ansible_user: ben
|
||
# ansible_password: "3131"
|
||
# ansible_become_password: "3131"
|
||
|
||
# 需要添加的节点:
|
||
# - ash2e, ash3c, ch4 (服务器节点)
|
||
# - hcp1, influxdb, browser (客户端节点)
|
||
# - 修复或移除 ash1d, onecloud1 (问题节点)
|
||
```
|
||
|
||
### **优先级 3: 使用现有脚本修复节点**
|
||
```bash
|
||
# 使用 nomad-configs 目录下的部署脚本
|
||
cd /root/mgmt/nomad-configs
|
||
|
||
# 基于 warden 成功配置修复其他节点
|
||
./scripts/deploy.sh hcp1
|
||
./scripts/deploy.sh influxdb1
|
||
./scripts/deploy.sh ash3c
|
||
./scripts/deploy.sh ch4
|
||
./scripts/deploy.sh browser
|
||
|
||
# 或者批量部署
|
||
for node in hcp1 influxdb1 ash3c ch4 browser; do
|
||
./scripts/deploy.sh $node
|
||
done
|
||
```
|
||
|
||
### **优先级 4: 验证 GitOps 流程**
|
||
```bash
|
||
# 推送测试变更
|
||
git add .
|
||
git commit -m "TEST: Trigger GitOps workflow"
|
||
git push origin main
|
||
|
||
# 检查工作流执行
|
||
curl -s "http://gitea.tailnet-68f9.ts.net/api/v1/repos/ben/mgmt/actions/runs"
|
||
```
|
||
|
||
---
|
||
|
||
## ⚠️ 重要注意事项
|
||
|
||
### **不要做的事情**
|
||
1. **❌ 不要手动修改节点配置**: 会导致配置漂移
|
||
2. **❌ 不要直接 SSH 到节点**: 使用 Ansible inventory
|
||
3. **❌ 不要绕过 GitOps 流程**: 所有变更都应该通过 Git
|
||
|
||
### **必须遵循的原则**
|
||
1. **✅ 主客观相统一**: 代码即配置,一切通过仓库管理
|
||
2. **✅ 自动化优先**: 避免手工操作
|
||
3. **✅ 一致性保证**: 所有节点配置统一
|
||
|
||
### **关键文件**
|
||
- **Ansible Inventory**: `ansible/inventory/hosts.yml` (当前只有 warden)
|
||
- **成功配置模板**: `nomad-configs/nodes/warden.hcl` (✅ 基准配置)
|
||
- **部署脚本**: `nomad-configs/scripts/deploy.sh`
|
||
- **修复脚本**: `scripts/fix-nomad-nodes.sh`
|
||
- **工作流**: `.gitea/workflows/deploy-nomad.yml` (❌ 未启用)
|
||
- **Ansible 配置**: `ansible/ansible.cfg`
|
||
- **zsh 修复剧本**: `ansible/fix-warden-zsh.yml`
|
||
|
||
---
|
||
|
||
## 🎯 成功标准
|
||
|
||
### **短期目标 (1-2小时)**
|
||
- [ ] 启用 Gitea Actions
|
||
- [ ] 修复 ash1d 节点
|
||
- [ ] 验证 GitOps 流程工作
|
||
|
||
### **中期目标 (今天内)**
|
||
- [ ] 所有 Nomad 节点 ready
|
||
- [ ] Consul 集群稳定
|
||
- [ ] Vault 集群部署成功
|
||
|
||
### **长期目标 (本周内)**
|
||
- [ ] 完整的服务栈运行
|
||
- [ ] 自动化部署流程稳定
|
||
- [ ] 监控和告警就位
|
||
|
||
---
|
||
|
||
## 🛠️ 可用工具和脚本
|
||
|
||
### **Ansible 剧本**
|
||
```bash
|
||
# 修复 warden 节点的 zsh 配置问题
|
||
ansible-playbook -i ansible/inventory/hosts.yml ansible/fix-warden-zsh.yml
|
||
|
||
# 扩展到其他节点 (需要先更新 inventory)
|
||
ansible-playbook -i ansible/inventory/hosts.yml ansible/fix-warden-zsh.yml --limit all
|
||
```
|
||
|
||
### **Nomad 配置部署**
|
||
```bash
|
||
# 使用现有的部署脚本 (基于 warden 成功模板)
|
||
cd nomad-configs
|
||
./scripts/deploy.sh <节点名>
|
||
|
||
# 可用节点: warden, hcp1, influxdb1, ash3c, ch4, browser
|
||
# 问题节点: onecloud1 (已离开), ash1d (需要修复)
|
||
```
|
||
|
||
### **系统修复脚本**
|
||
```bash
|
||
# 修复 Nomad 节点的通用脚本
|
||
./scripts/fix-nomad-nodes.sh
|
||
|
||
# Webhook 部署脚本
|
||
./scripts/webhook-deploy.sh
|
||
```
|
||
|
||
### **当前 Ansible Inventory 状态**
|
||
```yaml
|
||
# ansible/inventory/hosts.yml - 当前只配置了 warden
|
||
all:
|
||
children:
|
||
warden:
|
||
hosts:
|
||
warden:
|
||
ansible_host: 100.122.197.112
|
||
ansible_user: ben
|
||
ansible_password: "3131"
|
||
ansible_become_password: "3131"
|
||
|
||
# ⚠️ 需要添加其他节点的配置信息
|
||
```
|
||
|
||
### **推荐的修复顺序**
|
||
1. **启用 Gitea Actions** - 恢复 GitOps 自动化
|
||
2. **扩展 Ansible Inventory** - 添加所有节点配置
|
||
3. **使用 warden 模板修复节点** - 基于成功配置
|
||
4. **验证 Nomad 集群状态** - 确保所有节点 ready
|
||
5. **部署服务栈** - Consul + Vault + Traefik
|
||
|
||
---
|
||
|
||
## 🆘 紧急联系信息
|
||
|
||
**当前 AI 助手**: 遇到困难,需要交接
|
||
**系统状态**: 部分功能失效,需要修复
|
||
**紧急程度**: 中等 (服务可用但不稳定)
|
||
|
||
**快速诊断检查清单**:
|
||
```bash
|
||
# 1. 检查 Gitea Actions 状态 (最重要!)
|
||
curl -s "http://gitea.tailnet-68f9.ts.net/api/v1/repos/ben/mgmt" | jq '.has_actions'
|
||
# 期望: true (当前: false ❌)
|
||
|
||
# 2. 检查 Nomad 集群状态
|
||
nomad node status
|
||
# 期望: 所有节点 ready (当前: ash1d down ❌)
|
||
|
||
# 3. 检查 Consul 集群状态
|
||
consul members
|
||
# 期望: 3个服务器节点 alive (当前: ash3c, ch4, warden ✅)
|
||
|
||
# 4. 检查服务部署状态
|
||
nomad job status
|
||
# 期望: 服务 running (当前: 全部 pending ❌)
|
||
|
||
# 5. 检查 Ansible 连接
|
||
ansible all -i ansible/inventory/hosts.yml -m ping
|
||
# 期望: 所有节点 SUCCESS (当前: 只有 warden ⚠️)
|
||
|
||
# 6. 检查网络连通性
|
||
tailscale status
|
||
# 期望: 所有节点在线
|
||
|
||
# 7. 检查配置文件完整性
|
||
ls -la nomad-configs/nodes/
|
||
# 期望: 所有节点都有配置文件 (当前: ✅)
|
||
```
|
||
|
||
---
|
||
|
||
## 📝 交接总结
|
||
|
||
**当前状态**: 系统部分功能失效,需要新的 AI 助手接手
|
||
**主要问题**: Gitea Actions 未启用,导致 GitOps 流程失效
|
||
**解决方案**: 启用 Actions,修复节点,验证自动化流程
|
||
**成功标准**: 所有节点 ready,服务正常部署,GitOps 流程稳定
|
||
|
||
**祝新的 AI 助手好运!** 🍀
|
||
|
||
---
|
||
|
||
*交接仪式完成 - 2025-10-09 12:15 UTC*
|