Photo by Oscar Ivan Esquivel Arteaga on Unsplash
本文来自流媒体直播集群SRS的官方wiki(https://github.com/ossrs/srs/wiki/v4_CN_K8s),由SRS的创始作者杨成立授权发布。
文 / 杨成立
本章描述了基于K8s,如何构建Origin Cluster支持超多推流场景。
Origin Cluster通过配置其他源站的信息,在本源站没有流时查询到流的位置,通过RTMP302定向到指定源站,具体原理可以参考#464。主要应用场景如下:
源站灾备:即使流比较少,也可以用两个源站,这样可以将流分散到不同的源站,避免源站出现问题时影响所有的流。
海量推流:单源站可以支持1000到3000路流,高码率的流支持的路数更少,有DVR和HLS时支持的路更少,源站集群有多个源站同时接收推流,可以支持10k~100k推流,参考规格。
复杂源站业务:源站除了支持推流和拉流,还有重要的功能是DVR、转码、转HLS,DVR和HLS涉及磁盘,转码涉及CPU,都是容易发生瓶颈的资源依赖,源站集群扩展能力更强。
在这个场景下,对比K8s和传统使用方式的差异:
对比 |
ECS |
K8s |
说明 |
申请ECS |
手动 |
自动 |
部署时,ECS需要手动申请,K8s自动申请 |
安装包 |
脚本 |
镜像 |
Docker方式更优,版本管理,可Cache |
看门狗 |
手动 |
自动 |
SRS异常退出由看门狗重新拉起,非K8s需要手动安装, |
更换ECS |
手动 |
自动 |
ECS更换时,非K8s需要手动申请,修改SLB,安装服务,K8s自动迁移服务,更新SLB配置监听和保活等 |
配置 |
文件 |
Volume |
ECS需要手动管理配置;K8s配置在ConfigMap,通过Volume挂载为配置文件,扩容时源站手动更新自动推送,边缘扩容自动更新 |
扩容 |
手动 |
自动 |
需要新开进程时,ECS需要申请部署和配置,K8s只需要修改Replicas数目即可(也可自动扩容) |
发现 |
手动 |
自动 |
Origin变更IP时,ECS需要手动修改配置,K8s在迁移源站Pod时会保持,或自动更新 |
SLB |
手动 |
自动 |
新增Origin时,ECS需要手动安装和更新配置,K8s自动安装,手动更新但自动推送配置 |
存储 |
手动 |
自动 |
扩容存储时,ECS需要手动安装和更新,K8s会自动更新,不影响业务 |
Step 1: 由于SRS和Nginx不在一个Pod可能也不在一个Node&#