applied v2.3-alpha 7 changes incl. html5 load balancing

This commit is contained in:
chandi 2021-02-24 21:50:27 +01:00
parent f5d77c5bcb
commit 3858e42f23
18 changed files with 154 additions and 81 deletions

View File

@ -19,7 +19,6 @@ you can find a **stable bbb-docker release for 2.2** here: https://github.com/al
## What does not work ## What does not work
- probably a lot - it's in an alpha state! - probably a lot - it's in an alpha state!
- Load balancing of html5 meteor processes
- bbb-lti - bbb-lti
## Install ## Install

View File

@ -5,6 +5,38 @@
version: '3.6' version: '3.6'
# html5 templates
x-html5-backend: &html5backend
build: mod/html5
image: bbb-html5
restart: unless-stopped
depends_on:
- redis
- mongodb
- etherpad
environment: &html5backend-env
DOMAIN: ${DOMAIN}
CLIENT_TITLE: ${CLIENT_TITLE}
ETHERPAD_API_KEY: ${ETHERPAD_API_KEY}
LISTEN_ONLY_MODE: ${LISTEN_ONLY_MODE:-true}
DISABLE_ECHO_TEST: ${DISABLE_ECHO_TEST:-false}
AUTO_SHARE_WEBCAM: ${AUTO_SHARE_WEBCAM:-false}
DISABLE_VIDEO_PREVIEW: ${DISABLE_VIDEO_PREVIEW:-false}
CHAT_ENABLED: ${CHAT_ENABLED:-true}
CHAT_START_CLOSED: ${CHAT_START_CLOSED:-false}
BREAKOUTROOM_LIMIT: ${BREAKOUTROOM_LIMIT:-8}
DEV_MODE: ${DEV_MODE:-}
BBB_HTML5_ROLE: backend
x-html5-frontend: &html5frontend
<<: *html5backend
volumes:
- html5-static:/html5-static:rw
environment: &html5frontend-env
<<: *html5backend-env
BBB_HTML5_ROLE: frontend
# =========================
services: services:
bbb-web: bbb-web:
build: mod/bbb-web build: mod/bbb-web
@ -25,6 +57,7 @@ services:
STUN_SERVER: stun:${STUN_IP}:${STUN_PORT} STUN_SERVER: stun:${STUN_IP}:${STUN_PORT}
TURN_SERVER: ${TURN_SERVER:-} TURN_SERVER: ${TURN_SERVER:-}
TURN_SECRET: ${TURN_SECRET:-} TURN_SECRET: ${TURN_SECRET:-}
NUMBER_OF_BACKEND_NODEJS_PROCESSES: {{ .Env.NUMBER_OF_BACKEND_NODEJS_PROCESSES }}
volumes: volumes:
- bigbluebutton:/var/bigbluebutton - bigbluebutton:/var/bigbluebutton
- vol-freeswitch:/var/freeswitch/meetings - vol-freeswitch:/var/freeswitch/meetings
@ -34,6 +67,32 @@ services:
bbb-net: bbb-net:
ipv4_address: 10.7.7.2 ipv4_address: 10.7.7.2
{{ range $i := loop 0 (atoi .Env.NUMBER_OF_BACKEND_NODEJS_PROCESSES) }}
html5-backend-{{ add $i 1 }}:
<<: *html5backend
environment:
<<: *html5backend-env
INSTANCE_ID: {{ add $i 1 }}
PORT: {{ add 4000 $i }}
networks:
bbb-net:
ipv4_address: 10.7.7.{{ add 100 $i }}
{{end}}
{{ range $i := loop 0 (atoi .Env.NUMBER_OF_FRONTEND_NODEJS_PROCESSES) }}
html5-frontend-{{ add $i 1 }}:
<<: *html5frontend
environment:
<<: *html5frontend-env
INSTANCE_ID: {{ add $i 1 }}
PORT: {{ add 4100 $i }}
networks:
bbb-net:
ipv4_address: 10.7.7.{{ add 200 $i }}
{{end}}
freeswitch: freeswitch:
build: mod/freeswitch build: mod/freeswitch
restart: unless-stopped restart: unless-stopped
@ -64,7 +123,7 @@ services:
depends_on: depends_on:
- etherpad - etherpad
- webrtc-sfu - webrtc-sfu
- html5 - html5-backend-1
volumes: volumes:
- bigbluebutton:/var/bigbluebutton - bigbluebutton:/var/bigbluebutton
- html5-static:/html5-static:ro - html5-static:/html5-static:ro
@ -155,33 +214,6 @@ services:
bbb-net: bbb-net:
ipv4_address: 10.7.7.10 ipv4_address: 10.7.7.10
html5:
build: mod/html5
restart: unless-stopped
depends_on:
- redis
- mongodb
- etherpad
cap_add:
- SYS_NICE
volumes:
- html5-static:/html5-static:rw
environment:
DOMAIN: ${DOMAIN}
CLIENT_TITLE: ${CLIENT_TITLE}
ETHERPAD_API_KEY: ${ETHERPAD_API_KEY}
LISTEN_ONLY_MODE: ${LISTEN_ONLY_MODE:-true}
DISABLE_ECHO_TEST: ${DISABLE_ECHO_TEST:-false}
AUTO_SHARE_WEBCAM: ${AUTO_SHARE_WEBCAM:-false}
DISABLE_VIDEO_PREVIEW: ${DISABLE_VIDEO_PREVIEW:-false}
CHAT_ENABLED: ${CHAT_ENABLED:-true}
CHAT_START_CLOSED: ${CHAT_START_CLOSED:-false}
BREAKOUTROOM_LIMIT: ${BREAKOUTROOM_LIMIT:-8}
DEV_MODE: ${DEV_MODE:-}
networks:
bbb-net:
ipv4_address: 10.7.7.11
fsesl-akka: fsesl-akka:
build: mod/fsesl-akka build: mod/fsesl-akka
depends_on: depends_on:
@ -340,7 +372,7 @@ services:
{{ if isTrue .Env.ENABLE_PROMETHEUS_EXPORTER }} {{ if isTrue .Env.ENABLE_PROMETHEUS_EXPORTER }}
# prometheus # prometheus
prometheus-exporter: prometheus-exporter:
image: greenstatic/bigbluebutton-exporter:v0.6.0 image: greenstatic/bigbluebutton-exporter:v0.7.0-preview2
restart: unless-stopped restart: unless-stopped
environment: environment:
API_BASE_URL: http://10.7.7.1:8080/bigbluebutton/api/ API_BASE_URL: http://10.7.7.1:8080/bigbluebutton/api/

View File

@ -3,7 +3,7 @@ FROM mozilla/sbt:8u181_1.2.7 AS builder
RUN apt-get update && apt-get install -y subversion RUN apt-get update && apt-get install -y subversion
# download bbb-common-message # download bbb-common-message
ENV TAG_COMMON_MESSAGE v2.3-alpha-6 ENV TAG_COMMON_MESSAGE v2.3-alpha-7
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \ RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \
&& rm -rf /bbb-common-message/.svn && rm -rf /bbb-common-message/.svn
@ -14,7 +14,7 @@ RUN cd /bbb-common-message \
# =================================================== # ===================================================
ENV TAG v2.3-alpha-6 ENV TAG v2.3-alpha-7
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/akka-bbb-apps /source \ RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/akka-bbb-apps /source \
&& rm -rf /source/.svn && rm -rf /source/.svn

View File

@ -85,6 +85,8 @@ voiceConf {
checkRecordingInterval = 23 checkRecordingInterval = 23
# Internval seconds to sync voice users status. # Internval seconds to sync voice users status.
syncUserStatusInterval = 41 syncUserStatusInterval = 41
# Voice users with no matching user record
ejectRogueVoiceUsers = true
} }
recording { recording {

View File

@ -3,7 +3,7 @@ FROM mozilla/sbt:8u181_1.2.7 AS builder
RUN apt-get update && apt-get install -y subversion RUN apt-get update && apt-get install -y subversion
# download bbb-common-message # download bbb-common-message
ENV TAG_COMMON_MESSAGE v2.3-alpha-6 ENV TAG_COMMON_MESSAGE v2.3-alpha-7
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \ RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \
&& rm -rf /bbb-common-message/.svn && rm -rf /bbb-common-message/.svn
@ -26,7 +26,7 @@ RUN cd /opt \
ENV PATH="/opt/gradle-6.7/bin:${PATH}" ENV PATH="/opt/gradle-6.7/bin:${PATH}"
# download bbb-common-web # download bbb-common-web
ENV TAG_COMMON_WEB v2.3-alpha-6 ENV TAG_COMMON_WEB v2.3-alpha-7
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_WEB/bbb-common-web /bbb-common-web \ RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_WEB/bbb-common-web /bbb-common-web \
&& rm -rf /bbb-common-message/.svn && rm -rf /bbb-common-message/.svn
@ -35,7 +35,7 @@ RUN cd /bbb-common-web \
&& ./deploy.sh && ./deploy.sh
# download bbb-web # download bbb-web
ENV TAG_WEB v2.3-alpha-6 ENV TAG_WEB v2.3-alpha-7
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_WEB/bigbluebutton-web /bbb-web \ RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_WEB/bigbluebutton-web /bbb-web \
&& rm -rf /bbb-web/.svn && rm -rf /bbb-web/.svn

View File

@ -252,13 +252,13 @@ bigbluebutton.web.logoutURL=default
# The url of the BigBlueButton HTML5 client. Users will be redirected here when # The url of the BigBlueButton HTML5 client. Users will be redirected here when
# successfully joining the meeting. # successfully joining the meeting.
defaultHTML5ClientUrl=${bigbluebutton.web.serverURL}/html5client/%%INSTANCEID%%/join defaultHTML5ClientUrl=${bigbluebutton.web.serverURL}/html5client/join
# Allow requests without JSESSIONID to be handled (default = false) # Allow requests without JSESSIONID to be handled (default = false)
allowRequestsWithoutSession=false allowRequestsWithoutSession=false
# The url for where the guest will poll if approved to join or not. # The url for where the guest will poll if approved to join or not.
defaultGuestWaitURL=${bigbluebutton.web.serverURL}/html5client/%%INSTANCEID%%/guestWait defaultGuestWaitURL=${bigbluebutton.web.serverURL}/html5client/guestWait
# The default avatar image to display. # The default avatar image to display.
useDefaultAvatar=false useDefaultAvatar=false

View File

@ -24,6 +24,8 @@ mkdir -p /var/bigbluebutton/deleted
mkdir -p /var/bigbluebutton/unpublished mkdir -p /var/bigbluebutton/unpublished
chown -R bigbluebutton:bigbluebutton /var/bigbluebutton chown -R bigbluebutton:bigbluebutton /var/bigbluebutton
echo "$NUMBER_OF_BACKEND_NODEJS_PROCESSES" > /tmp/NUMBER_OF_BACKEND_NODEJS_PROCESSES
cd /usr/share/bbb-web/ cd /usr/share/bbb-web/
dockerize \ dockerize \
-template /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties.tmpl:/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties \ -template /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties.tmpl:/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties \

View File

@ -1,3 +1,8 @@
#!/bin/bash #!/bin/bash
echo "(mocked-ps for HTML5LoadBalancingService.java)" echo "(mocked-ps for HTML5LoadBalancingService.java)"
echo " 0.1 /usr/share/node-v12.16.1-linux-x64/bin/node main.js INFO_INSTANCE_ID=1"
# fake random process load to distribute meetings equally
for i in `seq $(cat /tmp/NUMBER_OF_BACKEND_NODEJS_PROCESSES)`; do
randomLoad=$(echo $(( $RANDOM % 100 )))
echo " $randomLoad.1 /usr/share/node-v12.16.1-linux-x64/bin/node main.js NODEJS_BACKEND_INSTANCE_ID=$i"
done

View File

@ -3,7 +3,7 @@ FROM mozilla/sbt:8u181_1.2.7 AS builder
RUN apt-get update && apt-get install -y subversion RUN apt-get update && apt-get install -y subversion
# download bbb-common-message # download bbb-common-message
ENV TAG_COMMON_MESSAGE v2.3-alpha-6 ENV TAG_COMMON_MESSAGE v2.3-alpha-7
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \ RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_COMMON_MESSAGE/bbb-common-message /bbb-common-message \
&& rm -rf /bbb-common-message/.svn && rm -rf /bbb-common-message/.svn
@ -13,7 +13,7 @@ RUN cd /bbb-common-message \
# =================================================== # ===================================================
ENV TAG_FSESL v2.3-alpha-6 ENV TAG_FSESL v2.3-alpha-7
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_FSESL/bbb-fsesl-client /bbb-fsesl-client \ RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_FSESL/bbb-fsesl-client /bbb-fsesl-client \
&& rm -rf /bbb-fsesl-client/.svn && rm -rf /bbb-fsesl-client/.svn
@ -21,7 +21,7 @@ RUN cd /bbb-fsesl-client \
&& ./deploy.sh && ./deploy.sh
ENV TAG v2.3-alpha-6 ENV TAG v2.3-alpha-7
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/akka-bbb-fsesl /source \ RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/akka-bbb-fsesl /source \
&& rm -rf /source/.svn && rm -rf /source/.svn

View File

@ -14,13 +14,13 @@ USER meteor
ENV METEOR_VERSION 1.10.2 ENV METEOR_VERSION 1.10.2
RUN curl -sL https://install.meteor.com?release=$METEOR_VERSION | sed s/--progress-bar/-sL/g | /bin/sh RUN curl -sL https://install.meteor.com?release=$METEOR_VERSION | sed s/--progress-bar/-sL/g | /bin/sh
ENV TAG v2.3-alpha-6 ENV TAG v2.3-alpha-7
RUN cd ~ \ RUN cd ~ \
&& svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/bigbluebutton-html5 \ && svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/bigbluebutton-html5 \
&& mv ~/bigbluebutton-html5 ~/source \ && mv ~/bigbluebutton-html5 ~/source \
&& cd ~/source \ && cd ~/source \
&& ~/.meteor/meteor npm install --production \ && ~/.meteor/meteor npm install --production \
&& ~/.meteor/meteor build --directory ~/app \ && METEOR_DISABLE_OPTIMISTIC_CACHING=1 ~/.meteor/meteor build --directory ~/app \
&& rm -rf ~/source && rm -rf ~/source
RUN cd ~/app/bundle/programs/server \ RUN cd ~/app/bundle/programs/server \
@ -41,4 +41,4 @@ COPY settings.yml /app/programs/server/assets/app/config/settings.yml.tmpl
ENTRYPOINT ["/entrypoint.sh"] ENTRYPOINT ["/entrypoint.sh"]
# lets set the tag again, so that it is include in the image for later version retrieval # lets set the tag again, so that it is include in the image for later version retrieval
ENV TAG v2.3-alpha-6 ENV TAG v2.3-alpha-7

View File

@ -4,6 +4,7 @@ set -e
cd /app cd /app
export MONGO_OPLOG_URL=mongodb://10.7.7.6/local export MONGO_OPLOG_URL=mongodb://10.7.7.6/local
export MONGO_URL=mongodb://10.7.7.6/meteor export MONGO_URL=mongodb://10.7.7.6/meteor
export ROOT_URL=http://127.0.0.1/html5client
export NODE_ENV=production export NODE_ENV=production
export SERVER_WEBSOCKET_COMPRESSION=0 export SERVER_WEBSOCKET_COMPRESSION=0
export BIND_IP=0.0.0.0 export BIND_IP=0.0.0.0
@ -17,24 +18,26 @@ if [ "$DEV_MODE" == true ]; then
export NODE_TLS_REJECT_UNAUTHORIZED=0 export NODE_TLS_REJECT_UNAUTHORIZED=0
fi fi
# copy static files into volume for direct access by nginx if [ "$BBB_HTML5_ROLE" == "backend" ]; then
# https://github.com/bigbluebutton/bigbluebutton/issues/10739 PARAM=NODEJS_BACKEND_INSTANCE_ID=$INSTANCE_ID
if [ -d "/html5-static" ]; then
rm -rf /html5-static/*
cp -r /app/programs/web.browser/* /html5-static
fi fi
# TODO: start multiple instances (introduced with v2.3-alpha-3) # if container is the first frontend, do some additional tasks
# https://github.com/bigbluebutton/bigbluebutton/releases/tag/v2.3-alpha-3 if [ "$BBB_HTML5_ROLE" == "frontend" ] && [ "$INSTANCE_ID" == "1" ]; then
# delete potential old settings.yml
export INSTANCE_ID=1 # copy static files into volume for direct access by nginx
export ROOT_URL=http://127.0.0.1/html5client/$INSTANCE_ID # https://github.com/bigbluebutton/bigbluebutton/issues/10739
export PORT=4000 if [ -d "/html5-static" ]; then
rm -rf /html5-static/*
cp -r /app/programs/web.browser/* /html5-static
fi
fi
rm -f /app/programs/server/assets/app/config/settings.yml rm -f /app/programs/server/assets/app/config/settings.yml
dockerize \ dockerize \
-template /app/programs/server/assets/app/config/settings.yml.tmpl:/app/programs/server/assets/app/config/settings.yml \ -template /app/programs/server/assets/app/config/settings.yml.tmpl:/app/programs/server/assets/app/config/settings.yml \
nice -n-2 \ su-exec meteor \
su-exec meteor \ node --max-old-space-size=2048 --max_semi_space_size=128 main.js $PARAM
node --max-old-space-size=2048 --max_semi_space_size=128 main.js

View File

@ -12,7 +12,7 @@ public:
appName: BigBlueButton HTML5 Client appName: BigBlueButton HTML5 Client
bbbServerVersion: 2.3-dev-docker bbbServerVersion: 2.3-dev-docker
copyright: '©2021 BigBlueButton Inc.' copyright: '©2021 BigBlueButton Inc.'
html5ClientBuild: "1353-docker" html5ClientBuild: "1394-docker"
helpLink: https://bigbluebutton.org/html5/ helpLink: https://bigbluebutton.org/html5/
lockOnJoin: true lockOnJoin: true
cdn: '' cdn: ''
@ -43,7 +43,9 @@ public:
# Warning: increasing the limit of breakout rooms per meeting # Warning: increasing the limit of breakout rooms per meeting
# can generate excessive overhead to the server. We recommend # can generate excessive overhead to the server. We recommend
# this value to be kept under 12. # this value to be kept under 12.
breakoutRoomLimit: {{ .Env.BREAKOUTROOM_LIMIT }} breakouts:
breakoutRoomLimit: {{ .Env.BREAKOUTROOM_LIMIT }}
sendInvitationToIncludedModerators: false
# https://github.com/bigbluebutton/bigbluebutton/pull/10826 # https://github.com/bigbluebutton/bigbluebutton/pull/10826
customHeartbeat: true customHeartbeat: true
defaultSettings: defaultSettings:
@ -263,7 +265,7 @@ public:
profile: low-u30 profile: low-u30
pagination: pagination:
# whether to globally enable or disable pagination. # whether to globally enable or disable pagination.
enabled: false enabled: true
# how long (in ms) the negotiation will be debounced after a page change. # how long (in ms) the negotiation will be debounced after a page change.
pageChangeDebounceTime: 2500 pageChangeDebounceTime: 2500
# video page sizes for DESKTOP endpoints. It stands for the number of SUBSCRIBER streams. # video page sizes for DESKTOP endpoints. It stands for the number of SUBSCRIBER streams.
@ -271,11 +273,11 @@ public:
# A page size of 0 (zero) means that the page size is unlimited (disabled). # A page size of 0 (zero) means that the page size is unlimited (disabled).
desktopPageSizes: desktopPageSizes:
moderator: 0 moderator: 0
viewer: 5 viewer: 0
# video page sizes for MOBILE endpoints # video page sizes for MOBILE endpoints
mobilePageSizes: mobilePageSizes:
moderator: 2 moderator: 6
viewer: 2 viewer: 4
syncUsersWithConnectionManager: syncUsersWithConnectionManager:
enabled: false enabled: false
syncInterval: 60000 syncInterval: 60000
@ -314,6 +316,7 @@ public:
storage_key: UNREAD_CHATS storage_key: UNREAD_CHATS
system_messages_keys: system_messages_keys:
chat_clear: PUBLIC_CHAT_CLEAR chat_clear: PUBLIC_CHAT_CLEAR
chat_poll_result: PUBLIC_CHAT_POLL_RESULT
typingIndicator: typingIndicator:
enabled: true enabled: true
note: note:
@ -328,6 +331,7 @@ public:
layout: layout:
autoSwapLayout: false autoSwapLayout: false
hidePresentation: false hidePresentation: false
showParticipantsOnLogin: true
webcamsDefaultPlacement: 'top' webcamsDefaultPlacement: 'top'
media: media:
stunTurnServersFetchAddress: '/bigbluebutton/api/stuns' stunTurnServersFetchAddress: '/bigbluebutton/api/stuns'
@ -553,7 +557,7 @@ private:
toThirdParty: to-third-party-redis-channel toThirdParty: to-third-party-redis-channel
subscribeTo: subscribeTo:
- to-html5-redis-channel - to-html5-redis-channel
- from-akka-apps-* - from-akka-apps-[^f]*
- from-third-party-redis-channel - from-third-party-redis-channel
- from-etherpad-redis-channel - from-etherpad-redis-channel
async: async:
@ -599,3 +603,4 @@ private:
version: 10 version: 10
- browser: YandexBrowser - browser: YandexBrowser
version: 19 version: 19

View File

@ -1,26 +1,26 @@
location @html5client { location @html5client {
proxy_pass http://html5:4000; proxy_pass http://poolhtml5servers; # use for production
proxy_http_version 1.1; proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade"; proxy_set_header Connection "Upgrade";
} }
location /html5client/1/compatibility { rewrite ^/html5client/(fonts|compatibility|resources|svgs)/(.*) /html5client/$1/$2;
alias /html5-static/app/compatibility;
location /html5client/compatibility {
alias /html5-static/app/compatibility;
} }
location /html5client/1/fonts {
alias /html5-static/app/fonts; location /html5client/resources {
}
location /html5client/1/resources {
alias /html5-static/app/resources; alias /html5-static/app/resources;
} }
location /html5client/1/svgs {
location /html5client/svgs {
alias /html5-static/app/svgs; alias /html5-static/app/svgs;
} }
location /html5client/1 { location /html5client/fonts {
alias /html5-static; alias /html5-static/app/fonts;
try_files $uri @html5client;
} }
location /html5client/ { location /html5client/ {
@ -28,6 +28,3 @@ location /html5client/ {
try_files $uri @html5client; try_files $uri @html5client;
} }
location /_timesync {
proxy_pass http://html5:4000;
}

View File

@ -3,6 +3,19 @@ map $remote_addr $freeswitch_addr {
default 10.7.7.1; default 10.7.7.1;
} }
upstream poolhtml5servers {
zone poolhtml5servers 32k;
least_conn;
server 10.7.7.200:4100 fail_timeout=3s fail_timeout=10s max_fails=4 backup;
server 10.7.7.201:4101 fail_timeout=2s fail_timeout=60s max_fails=2;
server 10.7.7.202:4102 fail_timeout=2s fail_timeout=60s max_fails=2;
server 10.7.7.203:4103 fail_timeout=2s fail_timeout=60s max_fails=2;
server 10.7.7.204:4104 fail_timeout=2s fail_timeout=60s max_fails=2;
server 10.7.7.205:4105 fail_timeout=2s fail_timeout=60s max_fails=2;
server 10.7.7.206:4106 fail_timeout=2s fail_timeout=60s max_fails=2;
server 10.7.7.207:4107 fail_timeout=2s fail_timeout=60s max_fails=2;
}
server { server {
listen 8080 default_server; listen 8080 default_server;
listen [::]:8080 default_server; listen [::]:8080 default_server;

View File

@ -1,5 +1,5 @@
FROM ruby:2.4-slim-buster FROM ruby:2.5-slim-buster
# install apt dependencies # install apt dependencies
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
@ -39,7 +39,7 @@ RUN mkdir -p \
/usr/local/bigbluebutton/core \ /usr/local/bigbluebutton/core \
/etc/bigbluebutton /etc/bigbluebutton
ENV TAG v2.3-alpha-6 ENV TAG v2.3-alpha-7
# add bbb-record-core (lib, scripts and Gemfile) # add bbb-record-core (lib, scripts and Gemfile)
RUN cd /usr/local/bigbluebutton/core \ RUN cd /usr/local/bigbluebutton/core \

View File

@ -13,7 +13,7 @@ RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSI
USER webhooks USER webhooks
ENV TAG v2.3-alpha-6 ENV TAG v2.3-alpha-7
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/bbb-webhooks /app \ RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG/bbb-webhooks /app \
&& rm -rf /app/.svn \ && rm -rf /app/.svn \
&& cd /app && npm install --production && cd /app && npm install --production

View File

@ -137,6 +137,19 @@ DISABLE_SOUND_ALONE=false
# this value to be kept under 12. # this value to be kept under 12.
BREAKOUTROOM_LIMIT=8 BREAKOUTROOM_LIMIT=8
# ====================================
# Tuning
# ====================================
# Default = 1; Min = 1; Max = 4
# On powerful systems with high number of meetings you can set values up to 4 to accelerate handling of events
NUMBER_OF_BACKEND_NODEJS_PROCESSES=1
# Default = 1; Min = 1; Max = 8
# Set a number between 1 and 4 times the value of NUMBER_OF_BACKEND_NODEJS_PROCESSES where higher number helps with meetings
# stretching the recommended number of users in BigBlueButton
NUMBER_OF_FRONTEND_NODEJS_PROCESSES=1
# ==================================== # ====================================
# GREENLIGHT CONFIGURATION # GREENLIGHT CONFIGURATION
# ==================================== # ====================================

View File

@ -45,5 +45,7 @@ docker run \
-e ENABLE_COTURN=${ENABLE_COTURN:-false} \ -e ENABLE_COTURN=${ENABLE_COTURN:-false} \
-e ENABLE_GREENLIGHT=${ENABLE_GREENLIGHT:-false} \ -e ENABLE_GREENLIGHT=${ENABLE_GREENLIGHT:-false} \
-e ENABLE_PROMETHEUS_EXPORTER=${ENABLE_PROMETHEUS_EXPORTER:-false} \ -e ENABLE_PROMETHEUS_EXPORTER=${ENABLE_PROMETHEUS_EXPORTER:-false} \
-e NUMBER_OF_BACKEND_NODEJS_PROCESSES=${NUMBER_OF_BACKEND_NODEJS_PROCESSES:-1} \
-e NUMBER_OF_FRONTEND_NODEJS_PROCESSES=${NUMBER_OF_FRONTEND_NODEJS_PROCESSES:-1} \
jwilder/dockerize -template /docker-compose.tmpl.yml \ jwilder/dockerize -template /docker-compose.tmpl.yml \
> docker-compose.yml > docker-compose.yml