Enterprise Scaling (Clustering)
Cluster Overview
Requirements
- Redis Server v5+
- PostgreSQL 10+
- Load Balancer with a public address
- Botpress license registered with a public address
Interfaces Overview
Enable Redis
Start Botpress on a single node with these environment variables:
Binary:
BP_CONFIG_PRO_ENABLED=true
CLUSTER_ENABLED=true \
BPFS_STORAGE=database \
BP_CONFIG_PRO_LICENSEKEY=<license_key> \
EXTERNAL_URL=<public_url> \
REDIS_URL=redis://host:port \
DATABASE_URL=postgres://login:password@host:port/database \
./bp
Docker:
docker run -d \
--name bp \
-p 3000:3000 \
-v botpress_data:/botpress/data \
-e PRO_ENABLED=true \
-e CLUSTER_ENABLED=true \
-e BPFS_STORAGE=database \
-e BP_LICENSE_KEY=<license_key> \
-e EXTERNAL_URL=<public_url> \
-e REDIS_URL=redis://host:port \
-e DATABASE_URL=postgres://login:password@host:port/database \
botpress/server:$TAG
caution
Do not use the BP_REDIS_SCOPE
parameter as it can possibly lead to performance and/or data issues, thus stable operation is not guaranteed. Our team will not support implementations with the use of BP_REDIS_SCOPE
.
Once the first node starts, use the same command to start Botpress on the other nodes.
Enable Redis Replication
Botpress can connect to multiple Redis servers for better redundancy if one of the Redis servers goes down. To enable this, you must set the REDIS_URL
variable to a host/port combinations list.
Provide the list as a JSON
object. See the example below for the correct format.
PRO_ENABLED=true
CLUSTER_ENABLED=true \
BPFS_STORAGE=database \
BP_LICENSE_KEY=<license_key> \
EXTERNAL_URL=<public_url> \
REDIS_URL=[{"host":"localhost","port":7004},{"host":"localhost","port":7001},{"host":"localhost","port":7002}]
DATABASE_URL=postgres://login:password@host:port/database \
./bp
Advanced Redis Options
You can further configure your Redis Sentinel/Cluster using the REDIS_OPTIONS
environment variable. Please consult the ioredis documentation for the complete list of options.
Example:
REDIS_OPTIONS={"password":"admin123", "connectTimeout": 20000}