Files
go-alived/roadmap.md
2025-12-08 22:23:45 +08:00

4.2 KiB
Raw Permalink Blame History

go-alived Roadmap

项目目标

使用 Golang 实现 keepalived 的核心功能,无外部依赖,单二进制部署。

Keepalived 核心功能

1. VRRP (Virtual Router Redundancy Protocol) 协议

  • 虚拟 IP 管理: 管理可在多个节点间浮动的虚拟 IP 地址 (VIP)
  • 状态机管理: MASTER、BACKUP、FAULT 三种状态的转换
  • 优先级选举: 基于优先级 (1-255) 选举 MASTER 节点
  • Gratuitous ARP: 状态变化时发送 ARP 报文更新网络设备
  • 同步组: 将多个 VRRP 实例组合,作为整体进行状态转换
  • 虚拟 MAC 支持: 支持使用虚拟 MAC 地址 (macvlan)

2. 健康检查 (Health Checking)

  • HTTP/HTTPS 检查: 通过 GET 请求验证 Web 服务状态
  • TCP 检查: 基本的 TCP 连接测试
  • SMTP 检查: 邮件服务监控
  • DNS 检查: 基于查询的 DNS 验证
  • 脚本检查: 自定义脚本实现灵活监控
  • UDP/PING 检查: 网络连通性测试
  • 动态权重: 根据健康检查结果动态调整权重

3. 负载均衡 (LVS 集成)

  • 调度算法: 支持 rr、wrr、lc、wlc、sh 等多种调度算法
  • 转发模式: NAT、Direct Routing (DR)、IP Tunneling (TUN)
  • 后端服务器管理: 根据健康状态动态添加/移除后端服务器
  • Quorum 支持: 配置最小存活服务器数量
  • Sorry Server: 当健康节点不足时的备用服务器
  • 会话保持: 支持会话持久化

4. 辅助功能

  • 状态变化脚本: 在状态转换时执行自定义脚本
  • 邮件通知: SMTP 告警支持
  • 进程监控: 监控外部进程并调整优先级
  • 配置热加载: 支持配置文件重载

实现计划

Phase 0: 项目基础设施

  • 项目结构搭建
  • CLI 参数解析 (--config, --debug)
  • YAML 配置文件加载和验证
  • 日志系统
  • 信号处理 (SIGHUP 重载配置)

Phase 1: 核心 VRRP 功能 (第一优先级)

1.1 网络接口和 IP 管理

  • 网络接口检测和验证
  • VIP 添加/删除功能 (使用 netlink)
  • IP 地址冲突检测
  • VIP 状态查询

1.2 VRRP 协议栈

  • VRRP 报文结构定义 (RFC 3768/5798)
  • 原始 socket 收发 VRRP 报文
  • Advertisement 报文发送
  • Advertisement 报文接收和解析
  • 认证支持 (PASS 类型)

1.3 状态机实现

  • 状态定义 (INIT/BACKUP/MASTER/FAULT)
  • 状态转换逻辑
  • Master 选举算法
  • 定时器管理 (Advertisement Timer, Master Down Timer)
  • 优先级抢占模式

1.4 ARP 和网络更新

  • Gratuitous ARP 发送
  • ARP 应答处理
  • 多 VIP 的 ARP 广播

1.5 集成和测试

  • VRRP 实例管理器
  • 多实例支持
  • 基础功能测试
  • 双机 VRRP 切换测试

Phase 2: 健康检查系统 (第二优先级)

2.1 健康检查框架

  • 健康检查器接口定义
  • 检查结果状态管理 (rise/fall 计数)
  • 定时调度器
  • 超时控制

2.2 检查器实现

  • TCP 健康检查
  • HTTP/HTTPS 健康检查
  • ICMP Ping 检查
  • 脚本检查 (执行外部命令)
  • DNS 检查

2.3 与 VRRP 联动

  • Track Script 支持
  • 健康检查失败时降低优先级
  • 检查恢复时恢复优先级
  • 健康检查状态影响 VRRP 状态机

Phase 3: 增强功能 (第三优先级)

3.1 通知和脚本

  • 状态变化时执行脚本 (notify_master/backup/fault)
  • 脚本执行器 (权限控制、超时控制)
  • 邮件通知支持 (SMTP)
  • Webhook 通知

3.2 高级特性

  • 同步组 (Sync Group) 支持
  • 虚拟 MAC 地址支持
  • 配置热加载优化
  • 进程监控和自动重启

3.3 可观测性

  • 状态查询 API/CLI
  • Metrics 导出 (Prometheus 格式)
  • 详细的事件日志
  • 调试模式增强

Phase 4: 负载均衡 (可选,低优先级)

  • LVS 集成调研
  • IPVS 操作封装
  • 基础调度算法 (rr, wrr)
  • 后端服务器健康检查
  • 动态后端管理

当前进度

  • Phase 0 已完成
  • 🔄 下一步Phase 1.1 网络接口和 IP 管理

技术选型

  • 语言: Go 1.21+
  • 配置格式: YAML/TOML (兼容 keepalived.conf 风格)
  • 依赖: 尽量使用标准库,最小化第三方依赖