mgmt/HANDOVER_CEREMONY.md

11 KiB
Raw Blame History

🎬 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

具体错误

# 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

# 检查 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

# 当前 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: 使用现有脚本修复节点

# 使用 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 流程

# 推送测试变更
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 剧本

# 修复 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 配置部署

# 使用现有的部署脚本 (基于 warden 成功模板)
cd nomad-configs
./scripts/deploy.sh <节点名>

# 可用节点: warden, hcp1, influxdb1, ash3c, ch4, browser
# 问题节点: onecloud1 (已离开), ash1d (需要修复)

系统修复脚本

# 修复 Nomad 节点的通用脚本
./scripts/fix-nomad-nodes.sh

# Webhook 部署脚本
./scripts/webhook-deploy.sh

当前 Ansible Inventory 状态

# 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 助手: 遇到困难,需要交接
系统状态: 部分功能失效,需要修复
紧急程度: 中等 (服务可用但不稳定)

快速诊断检查清单:

# 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