外观
分发系统
本文介绍如何配置和使用分发系统实现多节点视频分发。
功能概述
分发系统支持将视频分发到多个服务器节点,实现负载均衡和就近访问,提高视频播放速度和稳定性。
主要功能
- 多节点分发 - 将视频分发到多个服务器
- 健康检查 - 自动监测节点可用性
- 负载均衡 - 自动选择最优节点
- CDN 域名管理 - 管理多个 CDN 加速域名
配置说明
系统配置
在 config.yaml 中配置分发系统:
yaml
distribution:
enabled: false # 是否启用分发系统
health_check_interval: 300 # 健康检查间隔(秒),默认5分钟
health_check_timeout: 10 # 健康检查超时(秒)
cache_duration: 120 # M3U8缓存时长(秒),默认2分钟
cache_cleanup_interval: 300 # 缓存清理间隔(秒),默认5分钟
config_refresh_interval: 60 # 配置刷新间隔(秒),默认1分钟配置项说明
| 配置项 | 默认值 | 说明 |
|---|---|---|
| enabled | false | 是否启用分发系统 |
| health_check_interval | 300 | 健康检查间隔时间(秒) |
| health_check_timeout | 10 | 健康检查请求超时时间(秒) |
| cache_duration | 120 | M3U8 播放列表缓存时长(秒) |
| cache_cleanup_interval | 300 | 缓存清理任务间隔(秒) |
| config_refresh_interval | 60 | 配置刷新间隔(秒) |
开启分发
后台开启
- 进入 系统设置 → 分发设置
- 开启 分发系统开关
- 保存设置
添加分发服务器
- 进入 分发管理 → 服务器管理
- 点击 添加服务器
- 填写服务器信息:
| 字段 | 说明 |
|---|---|
| 名称 | 服务器名称,便于识别 |
| 类型 | 服务器类型(自定义服务器/OSS 等) |
| 服务器地址 | 分发服务器的 URL |
| API Key | 服务器认证密钥(可选) |
| 描述 | 服务器描述信息 |
| 启用状态 | 是否启用该服务器 |
- 点击 测试连接 验证配置
- 保存
重要:使用公网域名
服务器地址必须使用公网可访问的域名,例如 http://cdn.example.com。
不要使用:
http://127.0.0.1:7501- 本地回环地址http://localhost:7501- 本地主机名http://192.168.x.x- 内网地址
服务器地址会直接存储到视频记录中,如果使用本地地址,WordPress 等外部系统获取的视频播放地址也会是本地地址,导致无法播放。
CDN 域名管理
添加 CDN 域名
- 进入 分发管理 → CDN 域名
- 点击 添加域名
- 输入 CDN 加速域名
- 保存
域名健康检查
系统会自动对 CDN 域名进行健康检查:
- 绿色 - 域名正常可用
- 黄色 - 域名响应较慢
- 红色 - 域名不可用
手动检测
点击 检测 按钮可以手动触发单个域名的健康检查。
点击 全部检测 可以检测所有域名。
分发任务
创建分发任务
- 在 视频管理 中选择视频
- 点击 分发 按钮
- 选择要分发到的服务器
- 确认创建任务
批量分发
- 勾选多个视频
- 点击 批量操作 → 分发
- 选择目标服务器
- 确认分发
任务状态
| 状态 | 说明 |
|---|---|
| 等待中 | 任务已创建,等待执行 |
| 分发中 | 正在将视频分发到目标服务器 |
| 已完成 | 分发成功 |
| 失败 | 分发失败,请查看错误信息 |
查看任务
在视频详情页可以查看该视频的所有分发任务和状态。
播放地址
分发后的播放地址
视频分发完成后,可以通过以下地址访问:
主服务器:
http://主域名/public/videos/{video_id}/index.m3u8CDN 加速:
http://CDN域名/public/videos/{video_id}/index.m3u8分发节点:
http://分发服务器/public/videos/{video_id}/index.m3u8自动选择最优节点
系统可以根据以下因素自动选择最优节点:
- 节点健康状态
- 节点负载情况
- 用户地理位置
- 响应时间
统计信息
查看分发统计
在 分发管理 → 统计 中查看:
- 分发任务数量
- 成功/失败率
- 各节点流量统计
- 域名访问统计
API 接口
获取分发配置
bash
GET /api/distribution/config更新分发配置
bash
PUT /api/distribution/config
Content-Type: application/json
{
"enabled": true
}添加 CDN 域名
bash
POST /api/distribution/domain
Content-Type: application/json
{
"domain": "cdn.example.com"
}删除 CDN 域名
bash
DELETE /api/distribution/domain
Content-Type: application/json
{
"domain": "cdn.example.com"
}健康检查
bash
# 检查所有域名
GET /api/distribution/health
# 检查单个域名
POST /api/distribution/health/single
Content-Type: application/json
{
"domain": "cdn.example.com"
}分发服务器管理
bash
# 获取服务器列表
GET /api/distribution/servers
# 添加服务器
POST /api/distribution/servers
Content-Type: application/json
{
"name": "节点1",
"type": "custom",
"server_url": "http://node1.example.com",
"api_key": "your-api-key",
"is_enabled": true
}
# 测试服务器连接
POST /api/distribution/servers/test分发任务
bash
# 创建分发任务
POST /api/distribution/tasks
Content-Type: application/json
{
"video_id": 123,
"server_ids": [1, 2, 3]
}
# 获取视频的分发任务
GET /api/distribution/tasks/video/{video_id}
# 开始分发
POST /api/distribution/tasks/{task_id}/start最佳实践
节点部署建议
- 地理分布 - 在不同地区部署节点,实现就近访问
- 冗余备份 - 每个区域至少部署 2 个节点
- 带宽规划 - 根据视频流量合理规划带宽
健康检查配置
yaml
# 推荐配置
health_check_interval: 300 # 5分钟检查一次
health_check_timeout: 10 # 10秒超时缓存配置
yaml
# 推荐配置
cache_duration: 120 # M3U8 缓存 2 分钟
cache_cleanup_interval: 300 # 5 分钟清理一次过期缓存常见问题
Q: 分发失败?
- 检查目标服务器是否正常运行
- 检查网络连接是否畅通
- 检查服务器 API Key 是否正确
- 查看分发任务错误日志
Q: CDN 域名检测失败?
- 检查域名 DNS 解析是否正确
- 检查 CDN 配置是否正确
- 检查回源设置
- 确认域名证书是否有效
Q: 如何选择最优节点?
系统会根据以下因素自动选择:
- 节点健康状态(优先选择健康节点)
- 节点响应时间(选择响应最快的节点)
- 节点负载(选择负载较低的节点)
Q: 分发会占用多少带宽?
分发时会将视频文件完整传输到目标服务器,带宽占用取决于:
- 视频文件大小
- 同时分发的任务数量
- 网络带宽限制
建议在低峰期进行批量分发。
下一步
- 视频转码 - 配置转码参数
- 存储配置 - 配置存储路径
- WordPress 插件 - 对接 WordPress