Jitsi - Load Balancing

Hi friends,

I installed jitsi-meet(Prosody,jicofo,videobridge) and jvb(Only videobridge) to different servers. I want to do load balancing accoding to participant quantity.

I configurated prosody , jvb and jicofo files and opened ports on firewalls.(10000:20000, 5347 etc)

The xmpp server/jitsi-meet prosoody log like this:

|Sep 17 23:52:35 |jitsibridge.[domain]:component|info|External component successfully authenticated|
|Sep 17 23:52:35 jcp55aed189e960|info|Incoming Jabber component connection|

But jvb server jvb log ;

JVB 2020-09-18 11:24:41.481 FINE: [37] org.jitsi.videobridge.xmpp.ComponentImpl.log() SENT: pubsub xmlns=“http://jabber.org/protocol/pubsub”>item id=“jitsibridge.[domain]”>stats xmlns=“http://jitsi.org/protocol/colibri”>stat name=“packet_rate_download” value=“0”/>stat name=“total_tcp_connections” value=“0”/>stat name=“conference_sizes” value="[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]"/>stat name=“total_packets_sent_octo” value=“0”/>stat name=“total_loss_degraded_participant_seconds” value=“0”/>stat name=“bit_rate_download” value=“0”/>stat name=“jitter_aggregate” value=“0.0”/>stat name=“total_channels” value=“0”/>stat name=“total_memory” value=“16817”/>stat name=“current_timestamp” value=“2020-09-18 08:24:40.647”/>stat name=“total_packets_received” value=“0”/>stat name=“rtt_aggregate” value=“0.0”/>stat name=“packet_rate_upload” value=“0”/>stat name=“conferences” value=“0”/>stat name=“total_loss_limited_participant_seconds” value=“0”/>stat name=“largest_conference” value=“0”/>stat name=“total_packets_sent” value=“0”/>stat name=“total_data_channel_messages_sent” value=“0”/>stat name=“total_bytes_received_octo” value=“0”/>stat name=“total_no_transport_channels” value=“0”/>stat name=“total_no_payload_channels” value=“0”/>stat name=“used_memory” value=“1445”/>stat name=“total_conferences_created” value=“0”/>stat name=“total_colibri_web_socket_messages_received” value=“0”/>stat name=“videochannels” value=“0”/>stat name=“total_udp_connections” value=“0”/>stat name=“loss_rate_upload” value=“0.0”/>stat name=“total_packets_received_octo” value=“0”/>stat name=“graceful_shutdown” value=“false”/>stat name=“total_colibri_web_socket_messages_sent” value=“0”/>stat name=“total_bytes_sent_octo” value=“0”/>stat name=“total_data_channel_messages_received” value=“0”/>stat name=“loss_rate_download” value=“0.0”/>stat name=“total_conference_seconds” value=“0”/>stat name=“total_bytes_received” value=“0”/>stat name=“rtp_loss” value=“0.0”/>stat name=“total_loss_controlled_participant_seconds” value=“0”/>stat name=“total_partially_failed_conferences” value=“0”/>stat name=“bit_rate_upload” value=“0”/>stat name=“total_conferences_completed” value=“0”/>stat name=“total_bytes_sent” value=“0”/>stat name=“total_failed_conferences” value=“0”/>stat name=“cpu_usage” value=“0.005639097744360902”/>/publish>/pubsub>

All parameters value is 0 and I checked system sources cpu and ram tha is not chenge after conferancing on jvb server. What is the problem ?

@Kemal_Hakan welcome to the community!

What is in you /etc/jitsi/videobridge/sip-communicator.properties file?

Specifically, what do you have for these:

org.jitsi.videobridge.ENABLE_STATISTICS
org.jitsi.videobridge.STATISTICS_TRANSPORT

If you don’t have sip-communicator.properties, share your /etc/jitsi/videobridge/jvb.conf instead.

Thanks Corby. jitsi-meet server files are below ;

1. jitsi-meet server(xmpp) => /etc/jitsi/videobridge/config file ;

JVB_HOSTNAME=[domain]

JVB_HOST=[domain]

JVB_PORT=5347

JVB_SECRET=secret

JVB_OPTS="–apis=,"

JAVA_SYS_PROPS="-Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc/jitsi -Dnet.java.sip.communicator.SC_HOME_DIR_NAME=videobridge -Dnet.java.sip.communicator.SC_LOG_DIR_LOCATION=/var/log/jitsi -Djava.util.logging.config.file=/etc/jitsi/videobridge/logging.properties"

2. Jitsi-meet server(xmpp) => /etc/jitsi/videobridge/sip-communicator.properties file ;

org.ice4j.ice.harvest.DISABLE_AWS_HARVESTER=true
org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES=meet-jit-si-turnrelay.jitsi.net:443
org.jitsi.videobridge.ENABLE_STATISTICS=true
#org.jitsi.videobridge.STATISTICS_TRANSPORT=muc
org.jitsi.videobridge.xmpp.user.shard.HOSTNAME=localhost
org.jitsi.videobridge.xmpp.user.shard.DOMAIN=auth.[domain]
org.jitsi.videobridge.xmpp.user.shard.USERNAME=jvb
org.jitsi.videobridge.xmpp.user.shard.PASSWORD=passs
org.jitsi.videobridge.xmpp.user.shard.MUC_JIDS=JvbBrewery@internal.auth.[domain]
org.jitsi.videobridge.xmpp.user.shard.MUC_NICKNAME=…

org.jitsi.videobridge.AUTHORIZED_SOURCE_REGEXP=focus@[domain}
org.jitsi.videobridge.ENABLE_STATISTICS = true
org.jitsi.videobridge.STATISTICS_TRANSPORT = pubsub,muc
org.jitsi.videobridge.PUBSUB_SERVICE = [domain]
org.jitsi.videobridge.PUBSUB_NODE = sharedStatsNode

3. jitsi-meet server (xmpp) prosody/conf.d/[domain].lua file is ;

plugin_paths = { “/usr/share/jitsi-meet/prosody-plugins/” }

– domain mapper options, must at least have domain base set to use the mapper
muc_mapper_domain_base = “[domain]”;

turncredentials_secret = “…”;

turncredentials = {
{ type = “stun”, host = “[domain]”, port = “3478” },
{ type = “turn”, host = “[domain]”, port = “3478”, transport = “udp” },
{ type = “turns”, host = “[domain]”, port = “443”, transport = “tcp” }
};

cross_domain_bosh = false;
consider_bosh_secure = true;
– https_ports = { }; – Remove this line to prevent listening on port 5284

https://ssl-config.mozilla.org/#server=haproxy&version=2.1&config=intermediate&openssl=1.1.0g&guideline=5.4
ssl = {
protocol = “tlsv1_2+”;
ciphers = “…”
}

VirtualHost “[domain]”
– enabled = false – Remove this line to enable this host
authentication = “anonymous”

admins = {“jitsibridge.[domain]”,“jitsibridge2.[domain]” }

    -- Properties below are modified by jitsi-meet-tokens package config
    -- and authentication above is switched to "token"
    --app_id="example_app_id"
    --app_secret="example_app_secret"
    -- Assign this host a certificate for TLS, otherwise it would use the one
    -- set in the global section (if any).
    -- Note that old-style SSL on port 5223 only supports one certificate, and will always
    -- use the global one.
    ssl = {
            key = "...";
            certificate = "....";
    }
    speakerstats_component = "speakerstats.[domain]"
    conference_duration_component = "conferenceduration.[domain]"
    -- we need bosh
    modules_enabled = {
        "bosh";
        "pubsub";
        "ping"; -- Enable mod_ping
        "speakerstats";
        "turncredentials";
        "conference_duration";
        "muc_lobby_rooms";
    }
    c2s_require_encryption = false
    lobby_muc = "lobby.[domain]"
    main_muc = "conference.[domain]"
    -- muc_lobby_whitelist = { "recorder.[domain]" } -- Here we can whitelist jibri to enter lobby enabled rooms

Component “conference.[domain]” “muc”
storage = “memory”
modules_enabled = {
“muc_meeting_id”;
“muc_domain_mapper”;
– “token_verification”;
}
admins = { “focus@auth.[domain]” }
muc_room_locking = false
muc_room_default_public_jids = true

– internal muc component
Component “internal.auth.[domain]” “muc”
storage = “none”
modules_enabled = {
“ping”;
}
admins = { “focus@auth.[domain]”, “jvb@auth.[domain]” }
muc_room_locking = false
muc_room_default_public_jids = true

VirtualHost “auth.[domain]”
ssl = {
key = “…”;
certificate = “…”;
}
authentication = “internal_plain”

Component “focus.[domain]”
component_secret = “secret”

Component “jitsibridge.[domain]”
component_secret = “secret”

Component “jitsibridge2.[domain]”
component_secret = “secret”

Component “speakerstats.[domain]” “speakerstats_component”
muc_component = “conference.[domain]”

Component “conferenceduration.[domain]” “conference_duration_component”
muc_component = “conference.[domain]”

Component “lobby.[domain]” “muc”
storage = “none”
restrict_room_creation = true
muc_room_locking = false
muc_room_default_public_jids = true