
LiveKit部署实战一份配置从跑通到生产【免费下载链接】livekitEnd-to-end realtime stack for connecting humans and AI项目地址: https://gitcode.com/GitHub_Trending/li/livekit要给一个 200 人规模的在线课堂挑实时音视频底座LiveKit部署基本是你落地时要先跑通的一环。它把信令、媒体转发SFU、房间状态收进同一个 Go 服务你不用自己拼 SFU 加 Redis 的分布式拼图。下文不讲参数手册只回答三个问题它解决什么、最短怎么跑起来、生产要踩哪些坑。 架构速览先记住三层关系把 LiveKit 想成一部「电话交换台」客户端先走信令握手再走媒体流状态交给 Redis 共享。如果只让你记住三件事就是下面这三个配置维度后文都围绕它们展开网络端口rtc的 UDP 端口范围媒体加 TCP 回退端口。密钥 keysJWT 鉴权不配服务端起不来。Redis 状态外置配了就自动进入分布式模式是横向扩容的开关。 跑通最小可用配置下面是能直接启动的最短配置端口和密钥各留一行其余走默认值。port: 7880 rtc: port_range_start: 50000 port_range_end: 60000 tcp_port: 7881 keys: my_key: my_secret logging: level: info逐行说明为什么是这个值参数不配会怎样 / 配了之后效果port: 7880不配默认也是 7880承载信令与 RoomService APIport_range_start/end媒体 RTP 走这段 UDP不配默认 50000-60000改了要同步改防火墙tcp_port: 7881UDP 被墙时的 ICE/TCP 回退必须直接暴露、不能挂 TLSkeys不配则启动校验直接失败客户端 token 靠它签名启动后用一条命令确认就绪预期返回OK./livekit-server --config config.yaml # 启动服务 curl -s http://localhost:7880/ # 预期输出: OK ./livekit-server --config config.yaml ports # 列出实际占用的 TCP/UDP 端口改port会同时移动信令和 API 的监听口改 UDP 范围只影响媒体、不动信令。仓库根目录的config-sample.yaml注释了全部高级项需要时再查。⚙️ 生产部署按规模递进单机加固开发 vs 生产对比开发模式--dev会悄悄帮你做两件事日志切 debug、只绑回环地址还会在你没给密钥时塞进devkey/secret占位对。这些在生产都是雷。关键差异如下维度开发生产密钥占位devkey/secret必须换成真实密钥对建议走generate-keys生成监听仅127.0.0.1绑真实网卡前置 LB 并启用 TLS日志debug 全量info加sample: true采样避免日志风暴指标不开开prometheus.port否则无法扩缩容运行身份当前用户建议非 root--cap-drop ALL最小化权限多节点与容器化端口怎么暴露、状态放哪端口解决后下一个要处理的是网络暴露模型。三类端口归属完全不同端口协议暴露范围7880TCP对外挂 LB TLS7881TCP对公网裸暴露禁止 TLS/LB50000-60000UDP对公网裸暴露防火墙放行入站6789TCP仅集群内给 Prometheus 抓把有状态的 Redis 从进程里剥离是横向扩容的前提。容器化片段如下它同时回答了端口暴露与状态外置两件事services: redis: image: redis:7-alpine livekit: image: livekit/livekit-server command: --config /config.yaml volumes: - ./config.yaml:/config.yaml ports: - 7880:7880 - 7881:7881 - 50000-60000:50000-60000/udp environment: - LIVEKIT_REDIS_ADDRESSredis:6379 deploy: replicas: 2 restart: unless-stopped这段里replicas解决的是上面第三点「横向扩容」redis服务解决的是状态外置。弹性伸缩的触发条件建议盯节点指标单节点 CPU 或轨道数逼近上限默认每核约 400 轨道时加副本而不是按连接数盲目扩。可观测性闭环指标、告警、采样开 Prometheus 并开启日志采样指标、日志、告警才闭得了环prometheus: port: 6789 # username: metrics # password: strong-password logging: level: info json: true sample: true告警阈值建议结合 Grafana 面板指标关注点建议阈值房间/参与者数容量水位接近节点limit上限节点 CPU 使用率单核热点持续 70%信号/信令 RTT信令健康持续偏高触发回退sample日志采样防日志风暴生产必开⚠️ 部署前必看的 5 个高频问题UDP 范围没放行客户端能连信令却黑屏媒体包进不来。解法防火墙对port_range_start-end开放入站 UDP。7881 被挂了 TLSICE/TCP 回退直接失效。解法该端口裸暴露不加证书。云主机内网 IP 外发错候选AWS/GCP 上客户端连不上。解法开rtc.use_external_ip: true走 STUN 发现公网 IP。密钥写进镜像泄露后无法单独轮换。解法密钥与 secret 走 Secret/环境变量注入不烤进镜像。Redis 挂了全集群掉线状态没外置就扛不住。解法配 Redis含哨兵多节点共享房间状态。回到开头那个 200 人的课堂到这里这套 LiveKit部署单机就能扛下全量课堂节点不够时横向加副本即可不必重写架构。【免费下载链接】livekitEnd-to-end realtime stack for connecting humans and AI项目地址: https://gitcode.com/GitHub_Trending/li/livekit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考