专属域名
文档搜索
轩辕助手
Run助手
邀请有礼
返回顶部
快速返回页面顶部
收起
收起工具栏

blindsidenetwks/scalelite Docker 镜像 - 轩辕镜像

scalelite
blindsidenetwks/scalelite
Scalelite是基于Ruby on Rails开发的开源负载均衡器,用于管理BigBlueButton服务器池,将多个服务器整合为单一可扩展服务,通过分发请求到负载最低的服务器实现负载均衡,支持通过添加更多服务器轻松扩展并发用户容量。
3 收藏0 次下载activeblindsidenetwks镜像
🚀专业版镜像服务,面向生产环境设计
中文简介版本下载
🚀专业版镜像服务,面向生产环境设计

Scalelite

BigBlueButton是一个用于在线学习的开源网络会议系统。

Scalelite是一个开源负载均衡器,用于管理BigBlueButton服务器池。它使服务器池呈现为单一(高度可扩展的)BigBlueButton服务器。前端应用(如Moodle或Greenlight)向Scalelite服务器发送标准BigBlueButton API请求,Scalelite再将这些请求分发到池中考量最低的BigBlueButton服务器。

符合最低配置的单一BigBlueButton服务器支持约200名并发用户。

对于许多学校和组织,支持4个50人同时上课或8个25人同时会议的容量已足够。但如果学校需要支持50个同时上课、共1500名用户,单一BigBlueButton服务器无法承受这样的负载。

使用Scalelite,学校可以创建包含4台BigBlueButton服务器的池,支持16个50人同时上课。如需更高容量,只需向池中添加更多BigBlueButton服务器。

BigBlueButton已开发超过10年,最新版本为纯HTML5客户端,配有详尽文档。还有名为bbb-install.sh的安装脚本,可在约15分钟内搭建BigBlueButton服务器(含Let's Encrypt证书)。使用bbb-install.sh可快速搭建供Scalelite管理的服务器池。

为实现负载均衡,Scalelite定期轮询每个BigBlueButton服务器,检查其是否在线、是否准备好接收API请求,并确定当前负载(运行中的会议数量)。当Scalelite收到创建新会议的create API调用时,会将会议分配到池中负载最低的服务器,从而均匀平衡会议请求负载。

多台BigBlueButton服务器会生成大量录制文件。Scalelite通过整合录制文件、在数据库中建立索引,在接收getRecordings请求时,利用数据库索引快速返回可用录制列表。

准备工作

Scalelite安装过程需要高级技术知识,至少应熟悉:

  • BigBlueButton服务器的搭建与管理
  • Linux服务器的搭建与管理,以及使用systemd等工具管理进程
  • BigBlueButton API与前端的工作原理
  • Docker容器的工作原理
  • UDP和TCP/IP协议
  • Linux防火墙管理
  • TURN服务器搭建

如果您是初学者,可能难以正确部署。如需帮助,请参阅获取帮助。

Scalelite架构

搭建Scalelite需以下组件:

  1. 多台BigBlueButton服务器
  2. Scalelite负载均衡服务器
  3. NFS共享存储卷
  4. PostgreSQL数据库
  5. Redis缓存

Scalelite部署示例架构如下:

服务器最低配置要求

Scalelite服务器的最低推荐配置:

  • 4核CPU
  • 8GB内存

每台BigBlueButton服务器的最低要求见此处。

外部PostgreSQL数据库的最低推荐配置:

  • 2核CPU
  • 2GB内存
  • 20GB磁盘空间(可存储数万个录制文件)

外部Redis缓存的最低推荐配置:

  • 2核CPU
  • 0.5GB内存
  • 必须启用持久化
搭建BigBlueButton服务器池

推荐使用bbb-install.sh搭建BigBlueButton服务器池(最低推荐3台),该脚本可自动完成安装、配置(含SSL+Let's Encrypt),并在BigBlueButton新版本发布时更新服务器。

为帮助处于严格防火墙后的用户向BigBlueButton服务器发送/接收媒体(音频、视频、屏幕共享),应搭建TURN服务器,并配置每台BigBlueButton服务器使用该TURN服务器。bbb-install.sh可自动完成此过程。

搭建录制文件共享存储卷

参见搭建录制文件共享存储卷。

搭建PostgreSQL数据库

PostgreSQL数据库的搭建高度依赖Scalelite的部署基础设施,建议参考基础设施提供商的文档。确保在下一步中/etc/default/scalelite设置的DATABASE_URL与PostgreSQL数据库的连接URL匹配。更多配置选项见配置。

搭建Redis缓存

Redis缓存的搭建高度依赖Scalelite的部署基础设施,建议参考基础设施提供商的文档。确保在下一步中/etc/default/scalelite设置的REDIS_URL与Redis缓存的连接URL匹配。更多配置选项见配置。

部署Scalelite Docker容器

参见部署Scalelite Docker容器。

配置前端使用Scalelite

要将前端应用从单一BigBlueButton服务器切换到Scalelite,需修改两项设置:

  • BigBlueButton服务器URL应设为Scalelite部署的URL:http(s)://<scalelite-hostname>/bigbluebutton/api/
  • BigBlueButton共享密钥应设为在/etc/default/scalelite中设置的LOAD***_SECRET值

配置

环境变量
必填项
  • URL_HOST:应用API端点的可访问主机名,用于防止DNS重绑定***。如在网络负载均衡器后部署Scalelite,应留空。
  • SECRET_KEY_BASE:Rails内部使用的密钥,每个部署应唯一。可通过bundle exec rake secret或openssl rand -hex 64生成。
  • LOAD***_SECRET:应用调用BigBlueButton API时使用的共享密钥。通过openssl rand -hex 32生成。
  • LOAD***_SECRETS:额外共享密钥,用:分隔。任何密钥均可使用。在多应用需集成单一Scalelite服务器的场景中,可为每个应用分配独立密钥,便于后续单独撤销而不影响其他应用。
  • DATABASE_URL:PostgreSQL数据库连接URL,参见Rails文档。格式为postgresql://username:password@connection_url。也可通过config/database.yml配置数据库,无需此环境变量。
  • REDIS_URL:Redis服务器连接URL,参见Redis gem文档。格式为redis://username:password@connection_url。也可通过config/redis_store.yml配置Redis,无需此环境变量。
Docker专用

这些变量用于Docker镜像中的服务启动脚本,非Docker部署无需设置。

  • NGINX_SSL:设为"true"可启用nginx镜像的SSL监听。启用时,需将/etc/nginx/ssl/live/$URL_HOST/fullchain.pem(证书及中间证书)和/etc/nginx/ssl/live/$URL_HOST/privkey.pem(私钥)挂载到Docker镜像中,或直接挂载整个/etc/letsencrypt目录到/etc/nginx/ssl。
  • BEHIND_PROXY:如Scalelite位于代理或负载均衡器后,设为true。
  • POLL_INTERVAL:轮询器镜像轮询BigBlueButton服务器的间隔(秒),默认60。
  • RECORDING_IMPORT_POLL:是否轮询录制文件暂存目录以获取新文件,默认"true"。如暂存目录位于inotify可用的本地文件系统,可设为"false"以减少CPU开销。
  • RECORDING_IMPORT_POLL_INTERVAL:轮询录制文件暂存目录的间隔(秒,轮询模式下),默认60。
可选项
  • PORT:监听的TCP端口,默认3000。
  • BIND:替代端口设置,可指定绑定URL(如Unix socket)。参见Puma文档。
  • INTERVAL:更新服务器统计信息和会议状态的轮询间隔(秒),默认60。仅用于"poll"任务。
  • WEB_CONCURRENCY:Puma Web服务器的进程数。合理值为每CPU线程2个或每256MB内存1个,取较低值。
  • RAILS_MAX_THREADS:Rails进程的线程数。Redis连接池大小默认与此值匹配。默认5,适合生产环境。
  • RAILS_ENV:环境类型,可选development、test或production。Docker镜像默认production,Rails默认development。
  • BUILD_NUMBER:BigBlueButton顶级API端点中报告的额外构建版本。Docker镜像在构建时预设此值。
  • RAILS_LOG_TO_STDOUT:输出日志到STDOUT而非文件。推荐用于服务管理器(如systemd)或Docker部署。Docker镜像默认启用。
  • REDIS_POOL:Redis连接池大小,默认RAILS_MAX_THREADS。
  • MAX_MEETING_DURATION:任何服务器上创建的会议的最大时长。如create调用中指定duration,仅当该值大于MAX_MEETING_DURATION时才会被覆盖。
  • RECORDING_SPOOL_DIR:传输的录制文件存放目录,默认/var/bigbluebutton/spool。
  • RECORDING_WORK_DIR:录制文件传输/导入过程中临时文件提取目录,默认/var/bigbluebutton/recording/scalelite。
  • RECORDING_PUBLISH_DIR:发布的录制文件存放目录(供Web服务器访问),默认/var/bigbluebutton/published。
  • RECORDING_UNPUBLISH_DIR:未发布的录制文件存放目录(Web服务器不可访问),默认/var/bigbluebutton/unpublished。
  • SERVER_HEALTHY_THRESHOLD:离线服务器需成功响应的次数才能被视为在线,默认1。如增加此值,应减小POLL_INTERVAL。
  • SERVER_UNHEALTHY_THRESHOLD:在线服务器需失败响应的次数才能被视为离线,默认2。如增加此值,应减小POLL_INTERVAL。
  • DB_DISABLED:设为true禁用数据库。
  • RECORDING_DISABLED:设为true禁用录制功能及相关API。
  • GET_MEETINGS_API_DISABLED:设为true禁用GET_MEETINGS API。
  • POLLER_THREADS:轮询器进程的线程数,默认5。
Redis连接配置(config/redis_store.yml)

Docker部署应通过REDIS_URL环境变量配置Redis连接,非Docker部署可使用config/redis_store.yml。该文件允许按环境指定Redis服务器配置,结构类似ActiveRecord的config/database.yml。默认配置在开发环境连接本地Redis,测试环境使用"fakeredis"(内存Redis模拟器)。生产环境默认通过环境变量配置。可设置以下选项:

  • pool:连接池数量(应匹配线程数),默认RAILS_MAX_THREADS环境变量,否则为5。
  • pool_timeout:连接池满时的等待时间(秒),默认5。
  • namespace:所有Redis键的可选前缀。

升级

使用以下命令可将Scalelite升级到最新版本:

systemctl restart scalelite.target

要确认是否为最新版本,在浏览器中访问http(s)://<scalelite-hostname>/bigbluebutton/api,检查<build></build>标签内的值是否为新版本。

管理

Scalelite提供以下命令:

  • 向池中添加/移除BigBlueButton服务器
  • 触发所有BigBlueButton服务器的立即轮询
  • 更改BigBlueButton服务器的状态(available或unavailable,后者不分配新会议)
  • 监控所有BigBlueButton服务器的负载

服务器管理通过rake任务实现,更新Redis中的服务器信息。

Docker部署中,需在容器内运行这些命令。可通过docker exec -it scalelite-api /bin/sh进入容器。

显示已配置服务器详情
sh
./bin/rake servers

输出每个服务器的摘要详情,示例:

id: 2d2d674a-c6bb-48f3-8ad4-68f33a80a5b7
        url: [***]
        secret: 2bdce5cbab581f3f20b199b970e53ae3c9d9df6392f79589bd58be020ed***
        enabled
        load: 21.0
        load multiplier: 2.0
        online

需注意的信息:

  • id:更新或移除服务器时使用的ID
  • enabled或disabled:服务器是否启用(见下文“启用/禁用服务器”)
  • load:服务器上的会议数量,新会议将分配到负载较低的服务器,由轮询进程更新
  • online:服务器是否响应API请求,由轮询进程更新
添加服务器
sh
./bin/rake servers:add[url,secret,loadMultiplier]

url是BigBlueButton服务器API端点的完整URL,必须包含/api。可在BigBlueButton服务器上运行bbb-conf --secret获取URL和密钥。

loadMultiplier用于调整服务器优先级,较弱服务器应设较高值。不指定时默认1。

命令成功执行后会输出新服务器的ID和OK。注意:添加的服务器默认处于禁用状态,需通过“启用服务器”命令启用。

移除服务器
sh
./bin/rake servers:remove[id]

警告:不要移除有运行中会议的服务器!这会导致数据库不一致。应等待所有会议结束,或先执行“紧急处理”命令。

禁用服务器
sh
./bin/rake servers:disable[id]

标记服务器为禁用状态。禁用后,不会在该服务器上启动新会议,现有会议将继续运行直至结束。轮询进程仍会运行以更新“在线”状态和检测会议结束。此功能用于在不中断进行中会议的情况下为服务器更新做准备。

启用服务器
sh
./bin/rake servers:enable[id]

标记服务器为启用状态。注意:服务器需等待轮询进程下次运行更新负载信息后才会被分配新会议。

紧急处理服务器
sh
./bin/rake servers:panic[id]

禁用服务器并清除所有会议状态。此方法用于从崩溃的BigBlueButton服务器恢复。清除状态后,尝试加入原在此服务器上会议的用户将被重定向到其他服务器上的新会议。

编辑服务器的负载乘数
sh
./bin/rake servers:loadMultiplier[id,newLoadMultiplier]

设置BigBlueButton服务器的load_multiplier。loadMultiplier用于调整服务器优先级,较弱服务器应设较高值。更改后需至少轮询一次才能看到新负载。

轮询所有服务器
sh
./bin/rake poll:all

向池中添加服务器后,默认需等待60秒(后台服务器轮询进程的INTERVAL默认值)Scalelite才会将其标记为online。运行此命令可立即轮询服务器,无需等待。

检查整个部署状态
sh
./bin/rake status

输出所有服务器的状态表和基本统计信息,用于监控部署整体状态:

     HOSTNAME        STATE   STATUS  MEETINGS  USERS  LARGEST MEETING  VIDEOS
 bbb1.example.com  enabled   online        12     25                7      15
 bbb2.example.com  enabled   online         4     14                4       5

获取帮助

如需Scalelite搭建和部署的商业帮助,请联系Blindside Networks。===SHORT_DESC=== Scalelite是基于Ruby on Rails开发的开源负载均衡器,用于管理BigBlueButton服务器池,将多个服务器整合为单一可扩展服务,通过分发请求到负载最低的服务器实现均衡负载,支持添加更多服务器轻松扩展并发用户容量。 ===FULL_DESC===# Scalelite

BigBlueButton是一个用于在线学习的开源网络会议系统。

Scalelite是一个开源负载均衡器,用于管理BigBlueButton服务器池,将多个服务器整合为单一(高度可扩展的)BigBlueButton服务。

轩辕镜像配置手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

登录仓库拉取

通过 Docker 登录认证访问私有仓库

Linux

在 Linux 系统配置镜像服务

Windows/Mac

在 Docker Desktop 配置镜像

Docker Compose

Docker Compose 项目配置

K8s Containerd

Kubernetes 集群配置 Containerd

K3s

K3s 轻量级 Kubernetes 镜像加速

宝塔面板

在宝塔面板一键配置镜像

群晖

Synology 群晖 NAS 配置

飞牛

飞牛 fnOS 系统配置镜像

极空间

极空间 NAS 系统配置服务

爱快路由

爱快 iKuai 路由系统配置

绿联

绿联 NAS 系统配置镜像

威联通

QNAP 威联通 NAS 配置

Podman

Podman 容器引擎配置

Singularity/Apptainer

HPC 科学计算容器配置

其他仓库配置

ghcr、Quay、nvcr 等镜像仓库

专属域名拉取

无需登录使用专属域名

需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单

镜像拉取常见问题

轩辕镜像免费版与专业版有什么区别?

免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。

轩辕镜像支持哪些镜像仓库?

专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。

流量耗尽错误提示

当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。

410 错误问题

通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。

manifest unknown 错误

先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。

镜像拉取成功后,如何去掉轩辕镜像域名前缀?

使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。

查看全部问题→

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

oldzhang的头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

轩辕镜像
镜像详情
...
blindsidenetwks/scalelite
官方博客Docker 镜像使用技巧与技术博客
热门镜像查看热门 Docker 镜像推荐
一键安装一键安装 Docker 并配置镜像源
提交工单
咨询镜像拉取问题请 提交工单,官方技术交流群:13763429
轩辕镜像面向开发者与科研用户,提供开源镜像的搜索和访问支持。所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
咨询镜像拉取问题请提交工单,官方技术交流群:
轩辕镜像面向开发者与科研用户,提供开源镜像的搜索和访问支持。所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
官方邮箱:点击复制邮箱
©2024-2026 源码跳动
官方邮箱:点击复制邮箱Copyright © 2024-2026 杭州源码跳动科技有限公司. All rights reserved.
轩辕镜像 官方专业版 Logo
轩辕镜像轩辕镜像官方专业版
首页个人中心搜索镜像

交易
充值流量我的订单
工具
提交工单镜像收录一键安装
Npm 源Pip 源Homebrew 源
帮助
常见问题
其他
关于我们网站地图

官方QQ群: 13763429