Administrator
发布于 2025-11-21 / 12 阅读
0
0

HyperCDN节点

1. 概述

本项目旨在开发一个 Golang 守护进程,用于管理和监控 OpenResty (OP) 的状态,并与 Redis 和管理端进行交互。主要功能包括:

  1. 监控 OP 和服务器状态,并实时上报到管理端。

  2. 控制 OP 的启停、重启和配置重载。

  3. 定期从 Redis 中读取配置并更新 OP。

  4. 收集 OP 的统计数据并上报到管理端。

2. 功能需求

2.1 监控 OpenResty 和服务器状态

  • 定期检查 OpenResty 的运行状态(通过 PID 文件或进程名称)。

  • 监控服务器资源使用情况(CPU、内存、磁盘等)。

2.2 控制 OpenResty 的启停、重启和重载

  • 提供接口,用于启动、停止和重启 OpenResty。

  • 支持配置文件重载,确保配置变更能够及时生效。

2.3 配置管理和同步

  • 定期从 Redis 中读取最新的配置数据。

  • 将配置数据写入本地文件,确保 OpenResty 即便是重启,也能够读取到最新配置。

  • 通过 Unix 套接字将新配置下发给 OpenResty,实现实时更新。

2.4 数据收集和上报

  • 收集 OpenResty 的运行统计数据(如请求数、响应时间等)。

  • 整理统计数据并定期上报到管理端,供运维和分析使用。

3. 详细设计

3.1 监控模块

  • OpenResty 状态监控:通过检查进程是否存在以及读取 PID 文件来判断 OpenResty 的运行状态。

  • 服务器状态监控:使用系统库获取 CPU、内存、磁盘使用情况,并监控关键资源的使用率。

3.2 控制模块

  • 启动 OpenResty:调用系统命令启动 OpenResty,记录 PID。

  • 停止 OpenResty:通过 PID 文件停止 OpenResty 进程。

  • 重启 OpenResty:先停止再启动,确保配置生效。

  • 重载配置:向 OpenResty 发送信号或通过 Unix 套接字通知其重新加载配置。

  • 或者将命令写入system中,Go通过systemctl来控制启停。

3.3 配置管理模块

  • 读取 Redis 配置:定期从 Redis 拉取最新配置数据。

  • 写入本地文件:将配置数据写入指定路径的文件中。

  • 通知 OpenResty:通过 Unix 套接字通知 OpenResty 有新的配置可用。

  • Openresty更新:通过event将配置同步到所有进程中

3.4 数据收集模块

  • 收集统计数据:从 OpenResty 获取访问统计信息。

  • 收集服务器数据:Go自行获取服务器信息。

  • 整理数据:对收集到的数据进行处理,生成管理端需要的格式。

  • 上报数据:定期将整理后的数据通过 HTTP 请求或其他协议发送到管理端。

3. 流程图


联系邮箱:sales@99cdn.com

授权平台:www.99cdn.com

云平台:www.vmrack.com


评论