跳到主要内容

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 KeyLIVEKIT_API_KEY所有节点必须一致
LiveKit API SecretLIVEKIT_API_SECRET所有节点必须一致

步骤二:部署节点

新的服务器上执行一键部署脚本。

必需参数

参数说明
--master-ip主服务器 IP 地址
--redis-passwordRedis 密码(与主服务器相同)
--livekit-keyLiveKit API Key(与主服务器相同)
--livekit-secretLiveKit API Secret(与主服务器相同)

可选参数

参数说明默认值
--cn使用国内镜像加速-
--tgortc-urlTgoRTC Server 地址(用于 Webhook 回调)http://<master-ip>:8080
--node-ip本节点公网 IP自动检测
--redis-portRedis 端口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 # 配置防火墙

端口说明

节点服务器需要开放以下端口(云安全组 + 系统防火墙):

端口协议用途
7880TCPLiveKit HTTP/WebSocket
7881TCPLiveKit RTC TCP
3478UDPTURN UDP
5349TCPTURN TLS
50000-50100UDPWebRTC 媒体

同时,主服务器需要对节点开放:

  • 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。

相关链接