LiveKit 节点部署
当单台服务器无法满足并发需求时,可以部署多个 LiveKit 节点来扩展集群。
架构说明
┌─────────────────────────────────────────────────────────────┐
│ 主服务器 (Master) │
│ TgoRTC Server + MySQL + Redis + LiveKit + Nginx │
└─────────────────────────────────────────────────────────────┘
↑
Redis 同步 (6380)
Webhook 回调 (8080)
↓
┌─────────────────────┼─────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│LiveKit │ │LiveKit │ │LiveKit │
│Node 1 │ │Node 2 │ │Node 3 │
└─────────┘ └─────────┘ └─────────┘
步骤一:获取主服务器信息
在主服务器上执行以下命令,记录关键配置:
cat ~/tgortc/.env
需要记录 4 项信息:
| 信息 | 对应字段 | 说明 |
|---|---|---|
| 主服务器 IP | - | 服务器公网 IP 地址 |
| Redis 密码 | REDIS_PASSWORD | 节点连接 Redis 需要 |
| LiveKit API Key | LIVEKIT_API_KEY | 所有节点必须一致 |
| LiveKit API Secret | LIVEKIT_API_SECRET | 所有节点必须一致 |
步骤二:部署节点
在新的服务器上执行一键部署脚本。
必需参数
| 参数 | 说明 |
|---|---|
--master-ip | 主服务器 IP 地址 |
--redis-password | Redis 密码(与主服务器相同) |
--livekit-key | LiveKit API Key(与主服务器相同) |
--livekit-secret | LiveKit API Secret(与主服务器相同) |
可选参数
| 参数 | 说明 | 默认值 |
|---|---|---|
--cn | 使用国内镜像加速 | - |
--tgortc-url | TgoRTC Server 地址(用于 Webhook 回调) | http://<master-ip>:8080 |
--node-ip | 本节点公网 IP | 自动检测 |
--redis-port | Redis 端口 | 6380 |
--dir | 部署目录 | ~/livekit-node |
国内服务器
curl -fsSL https://gitee.com/No8blackball/tgo-rtcserver/raw/main/scripts/deploy-livekit-node.sh | sudo bash -s -- \
--cn \
--master-ip <主服务器IP> \
--redis-password "<Redis密码>" \
--livekit-key "<LiveKit API Key>" \
--livekit-secret "<LiveKit API Secret>"
海外服务器
curl -fsSL https://raw.githubusercontent.com/TgoRTC/TgoRTCServer/main/scripts/deploy-livekit-node.sh | sudo bash -s -- \
--master-ip <主服务器IP> \
--redis-password "<Redis密码>" \
--livekit-key "<LiveKit API Key>" \
--livekit-secret "<LiveKit API Secret>"
使用域名
如果主服务器配置了域名,可以通过 --tgortc-url 指定 Webhook 回调地址:
curl -fsSL ... | sudo bash -s -- \
--cn \
--master-ip <主服务器IP> \
--redis-password "<Redis密码>" \
--livekit-key "<LiveKit API Key>" \
--livekit-secret "<LiveKit API Secret>" \
--tgortc-url "https://api.example.com"
步骤三:配置主服务器
节点部署完成后,回到主服务器,将新节点加入负载均衡:
cd ~/tgortc
# 编辑 .env 文件,添加或修改 LIVEKIT_NODES(多个节点用逗号分隔)
# LIVEKIT_NODES=节点1IP:7880,节点2IP:7880
nano .env
# 重新加载 Nginx 配置
./deploy.sh reload-nginx
步骤四:验证集群
# 在主服务器上测试节点连通性
curl http://<节点IP>:7880
# 在节点服务器上查看信息
cd ~/livekit-node
./deploy-livekit-node.sh info
节点管理
所有管理命令在节点服务器上执行:
cd ~/livekit-node
./deploy-livekit-node.sh info # 查看节点信息
./deploy-livekit-node.sh status # 查看服务状态
./deploy-livekit-node.sh logs # 查看日志
./deploy-livekit-node.sh restart # 重启服务
./deploy-livekit-node.sh update # 更新 LiveKit
./deploy-livekit-node.sh stop # 停止服务
sudo ./deploy-livekit-node.sh firewall # 配置防火墙
端口说明
节点服务器需要开放以下端口(云安全组 + 系统防火墙):
| 端口 | 协议 | 用途 |
|---|---|---|
| 7880 | TCP | LiveKit HTTP/WebSocket |
| 7881 | TCP | LiveKit RTC TCP |
| 3478 | UDP | TURN UDP |
| 5349 | TCP | TURN TLS |
| 50000-50100 | UDP | WebRTC 媒体 |
同时,主服务器需要对节点开放:
6380/TCP— Redis(集群同步)8080/TCP— TgoRTC Server(Webhook 回调)
配置文件说明
部署脚本会自动生成 livekit.yaml,关键配置如下:
keys:
prodkey: <secret>
redis:
address: <主服务器IP>:6380
password: <Redis密码>
db: 0
webhook:
api_key: prodkey
urls:
- http://<TgoRTC地址>/api/v1/webhooks/livekit
常见问题
Q1: LiveKit 节点无法连接 Redis?
- 确保主服务器防火墙开放
6380端口 - 确保云安全组允许节点 IP 访问
Q2: 节点部署后房间不同步?
- 检查 Redis 连接是否正常
- 确保所有节点使用相同的 API Key 和 Secret
Q3: 如何添加更多节点?
在新的服务器上重复步骤二即可。部署完成后回到步骤三,在主服务器上更新 LIVEKIT_NODES 并重载 Nginx。