Configuration

b3lb is configured using a Django settings file (settings.py). You need to customize the following settings:

SECRET_KEY

The secret key for your Django deployment.

Warning

The secret key needs to be unique, secure and kept confidential. A key could be generated using the pwgen command:

pwgen -ys 50 1
DATABASES

The databases setting for your Django deployment. The default database setting is used and should point to a PostgreSQL database.

CELERY_BROKER_URL

The broker URL used by Celery. The broker needs to be the same on all b3lb instances.

CACHES

The caches setting for your Django deployment. The default cache is used by the worker nodes to cache BBB’s getMeetings XML data.

Hint

It is highly recommended to configure a powerful caching backend like redis. Running the worker nodes with limited caching will result in many database read requests with huge result sets. The worker nodes should use a shared cache if network throughput is non-expensive.

CACHEOPS_REDIS

This settings needs to configure a redis backend used for ORM caching using django-cacheops. For frontend nodes it is recommend to use a local redis instance to separate failure domains.

LANGUAGE_CODE

The language ID to be used for the admin pages.

TIME_ZONE

The time zone to be used.

API_BASE_DOMAIN

The b3lb base domain.

ASSETS_FOLDER_URL

The URL prefix to build branding logo URLs.

Hint

redis is used in the three different settings CACHES, CELERY_BROKER_URL and CACHEOPS_REDIS. It is highly recommended to use unique redis database identifiers for each setting.

Create your own settings.py using the following template:

Hint

You might use the templates with Jinja2 and set the variables api_base_domain, assets_domain, db_passwd and secret_key appropriately.

from loadbalancer.settings_base import *

# create a secret key
SECRET_KEY = "{{ secret_key }}"


# Database
# https://docs.djangoproject.com/en/3.1/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'b3lb',
        'USER': 'b3lb',
        'PASSWORD': '{{ db_passwd }}',
        'HOST': 'db',
        'PORT': '5432',
    }
}

# Configure Celery
CELERY_BROKER_URL = 'redis://:{{ redis_secret }}@redis:6379/3"

# Django Cache
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://:{{ redis_secret }}@redis:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient"
        },
    }
}

# Django ORM Caching
CACHEOPS_REDIS = "redis://:{{ redis_secret }}@redis:6379/2"


# Internationalization
# https://docs.djangoproject.com/en/3.1/topics/i18n/

LANGUAGE_CODE = 'de-de'
TIME_ZONE = 'Europe/Berlin'


# B3LB SETTINGS

API_BASE_DOMAIN = "{{ api_base_domain }}"
ASSETS_FOLDER_URL = "https://{{ assets_domain }}/logos"