redis to valkey

This commit is contained in:
Denys Sumin 2025-05-21 16:14:29 +03:00
parent 21c6a77de9
commit 81c1c2f118
17 changed files with 431 additions and 430 deletions

View File

@ -1,7 +1,7 @@
TB_QUEUE_TYPE=kafka TB_QUEUE_TYPE=kafka
# redis or redis-cluster or redis-sentinel # valkey or valkey-cluster or valkey-sentinel
CACHE=redis CACHE=valkey
DOCKER_REPO=thingsboard DOCKER_REPO=thingsboard
@ -17,7 +17,7 @@ TB_VC_EXECUTOR_DOCKER_NAME=tb-vc-executor
EDQS_DOCKER_NAME=tb-edqs EDQS_DOCKER_NAME=tb-edqs
EDQS_ENABLED=false EDQS_ENABLED=false
TB_VERSION=latest TB_VERSION=4.0.0-RC
# Database used by ThingsBoard, can be either postgres (PostgreSQL) or hybrid (PostgreSQL for entities database and Cassandra for timeseries database). # Database used by ThingsBoard, can be either postgres (PostgreSQL) or hybrid (PostgreSQL for entities database and Cassandra for timeseries database).
# According to the database type corresponding docker service will be deployed (see docker-compose.postgres.yml, docker-compose.hybrid.yml for details). # According to the database type corresponding docker service will be deployed (see docker-compose.postgres.yml, docker-compose.hybrid.yml for details).

20
docker/.gitignore vendored
View File

@ -6,15 +6,15 @@ tb-node/postgres/**
tb-node/cassandra/** tb-node/cassandra/**
tb-transports/*/log tb-transports/*/log
tb-vc-executor/log/** tb-vc-executor/log/**
tb-node/redis-cluster-data-0/** tb-node/valkey-cluster-data-0/**
tb-node/redis-cluster-data-1/** tb-node/valkey-cluster-data-1/**
tb-node/redis-cluster-data-2/** tb-node/valkey-cluster-data-2/**
tb-node/redis-cluster-data-3/** tb-node/valkey-cluster-data-3/**
tb-node/redis-cluster-data-4/** tb-node/valkey-cluster-data-4/**
tb-node/redis-cluster-data-5/** tb-node/valkey-cluster-data-5/**
tb-node/redis-sentinel-data-master/** tb-node/valkey-sentinel-data-primary/**
tb-node/redis-sentinel-data-slave/** tb-node/valkey-sentinel-data-replica/**
tb-node/redis-sentinel-data-sentinel/** tb-node/valkey-sentinel-data-sentinel/**
tb-node/redis-data/** tb-node/valkey-data/**
!.env !.env

View File

@ -1,5 +0,0 @@
CACHE_TYPE=redis
REDIS_CONNECTION_TYPE=cluster
REDIS_NODES=redis-node-0:6379,redis-node-1:6379,redis-node-2:6379,redis-node-3:6379,redis-node-4:6379,redis-node-5:6379
REDIS_USE_DEFAULT_POOL_CONFIG=false
REDIS_PASSWORD=thingsboard

View File

@ -1,2 +0,0 @@
CACHE_TYPE=redis
REDIS_HOST=redis

View File

@ -0,0 +1,5 @@
CACHE_TYPE=redis
REDIS_CONNECTION_TYPE=cluster
REDIS_NODES=valkey-node-0:6379,valkey-node-1:6379,valkey-node-2:6379,valkey-node-3:6379,valkey-node-4:6379,valkey-node-5:6379
REDIS_USE_DEFAULT_POOL_CONFIG=false
REDIS_PASSWORD=thingsboard

View File

@ -1,7 +1,7 @@
CACHE_TYPE=redis CACHE_TYPE=redis
REDIS_CONNECTION_TYPE=sentinel REDIS_CONNECTION_TYPE=sentinel
REDIS_MASTER=mymaster REDIS_MASTER=myprimary
REDIS_SENTINELS=redis-sentinel:26379 REDIS_SENTINELS=valkey-sentinel:26379
REDIS_SENTINEL_PASSWORD=sentinel REDIS_SENTINEL_PASSWORD=sentinel
REDIS_USE_DEFAULT_POOL_CONFIG=false REDIS_USE_DEFAULT_POOL_CONFIG=false
REDIS_PASSWORD=thingsboard REDIS_PASSWORD=thingsboard

2
docker/cache-valkey.env Normal file
View File

@ -0,0 +1,2 @@
CACHE_TYPE=redis
REDIS_HOST=valkey

View File

@ -76,19 +76,19 @@ function additionalComposeMonitoringArgs() {
function additionalComposeCacheArgs() { function additionalComposeCacheArgs() {
source .env source .env
CACHE_COMPOSE_ARGS="" CACHE_COMPOSE_ARGS=""
CACHE="${CACHE:-redis}" CACHE="${CACHE:-valkey}"
case $CACHE in case $CACHE in
redis) valkey)
CACHE_COMPOSE_ARGS="-f docker-compose.redis.yml" CACHE_COMPOSE_ARGS="-f docker-compose.valkey.yml"
;; ;;
redis-cluster) valkey-cluster)
CACHE_COMPOSE_ARGS="-f docker-compose.redis-cluster.yml" CACHE_COMPOSE_ARGS="-f docker-compose.valkey-cluster.yml"
;; ;;
redis-sentinel) valkey-sentinel)
CACHE_COMPOSE_ARGS="-f docker-compose.redis-sentinel.yml" CACHE_COMPOSE_ARGS="-f docker-compose.valkey-sentinel.yml"
;; ;;
*) *)
echo "Unknown CACHE value specified in the .env file: '${CACHE}'. Should be either 'redis' or 'redis-cluster' or 'redis-sentinel'." >&2 echo "Unknown CACHE value specified in the .env file: '${CACHE}'. Should be either 'valkey' or 'valkey-cluster' or 'valkey-sentinel'." >&2
exit 1 exit 1
esac esac
echo $CACHE_COMPOSE_ARGS echo $CACHE_COMPOSE_ARGS
@ -109,19 +109,19 @@ function additionalStartupServices() {
exit 1 exit 1
esac esac
CACHE="${CACHE:-redis}" CACHE="${CACHE:-valkey}"
case $CACHE in case $CACHE in
redis) valkey)
ADDITIONAL_STARTUP_SERVICES="$ADDITIONAL_STARTUP_SERVICES redis" ADDITIONAL_STARTUP_SERVICES="$ADDITIONAL_STARTUP_SERVICES valkey"
;; ;;
redis-cluster) valkey-cluster)
ADDITIONAL_STARTUP_SERVICES="$ADDITIONAL_STARTUP_SERVICES redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5" ADDITIONAL_STARTUP_SERVICES="$ADDITIONAL_STARTUP_SERVICES valkey-node-0 valkey-node-1 valkey-node-2 valkey-node-3 valkey-node-4 valkey-node-5"
;; ;;
redis-sentinel) valkey-sentinel)
ADDITIONAL_STARTUP_SERVICES="$ADDITIONAL_STARTUP_SERVICES redis-master redis-slave redis-sentinel" ADDITIONAL_STARTUP_SERVICES="$ADDITIONAL_STARTUP_SERVICES valkey-primary valkey-replica valkey-sentinel"
;; ;;
*) *)
echo "Unknown CACHE value specified in the .env file: '${CACHE}'. Should be either 'redis' or 'redis-cluster' or 'redis-sentinel'." >&2 echo "Unknown CACHE value specified in the .env file: '${CACHE}'. Should be either 'valkey' or 'valkey-cluster' or 'valkey-sentinel'." >&2
exit 1 exit 1
esac esac
@ -166,32 +166,32 @@ function permissionList() {
" "
fi fi
CACHE="${CACHE:-redis}" CACHE="${CACHE:-valkey}"
case $CACHE in case $CACHE in
redis) valkey)
PERMISSION_LIST="$PERMISSION_LIST PERMISSION_LIST="$PERMISSION_LIST
1001 1001 tb-node/redis-data 1001 1001 tb-node/valkey-data
" "
;; ;;
redis-cluster) valkey-cluster)
PERMISSION_LIST="$PERMISSION_LIST PERMISSION_LIST="$PERMISSION_LIST
1001 1001 tb-node/redis-cluster-data-0 1001 1001 tb-node/valkey-cluster-data-0
1001 1001 tb-node/redis-cluster-data-1 1001 1001 tb-node/valkey-cluster-data-1
1001 1001 tb-node/redis-cluster-data-2 1001 1001 tb-node/valkey-cluster-data-2
1001 1001 tb-node/redis-cluster-data-3 1001 1001 tb-node/valkey-cluster-data-3
1001 1001 tb-node/redis-cluster-data-4 1001 1001 tb-node/valkey-cluster-data-4
1001 1001 tb-node/redis-cluster-data-5 1001 1001 tb-node/valkey-cluster-data-5
" "
;; ;;
redis-sentinel) valkey-sentinel)
PERMISSION_LIST="$PERMISSION_LIST PERMISSION_LIST="$PERMISSION_LIST
1001 1001 tb-node/redis-sentinel-data-master 1001 1001 tb-node/valkey-sentinel-data-primary
1001 1001 tb-node/redis-sentinel-data-slave 1001 1001 tb-node/valkey-sentinel-data-replica
1001 1001 tb-node/redis-sentinel-data-sentinel 1001 1001 tb-node/valkey-sentinel-data-sentinel
" "
;; ;;
*) *)
echo "Unknown CACHE value specified in the .env file: '${CACHE}'. Should be either 'redis' or 'redis-cluster' or 'redis-sentinel'." >&2 echo "Unknown CACHE value specified in the .env file: '${CACHE}'. Should be either 'valkey' or 'valkey-cluster' or 'valkey-sentinel'." >&2
exit 1 exit 1
esac esac

View File

@ -1,58 +0,0 @@
#
# Copyright © 2016-2025 The Thingsboard Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
version: '3.0'
services:
# Redis cluster
redis-node-0:
volumes:
- redis-cluster-data-0:/bitnami/redis/data
redis-node-1:
volumes:
- redis-cluster-data-1:/bitnami/redis/data
redis-node-2:
volumes:
- redis-cluster-data-2:/bitnami/redis/data
redis-node-3:
volumes:
- redis-cluster-data-3:/bitnami/redis/data
redis-node-4:
volumes:
- redis-cluster-data-4:/bitnami/redis/data
redis-node-5:
volumes:
- redis-cluster-data-5:/bitnami/redis/data
volumes:
redis-cluster-data-0:
external:
name: ${REDIS_CLUSTER_DATA_VOLUME_0}
redis-cluster-data-1:
external:
name: ${REDIS_CLUSTER_DATA_VOLUME_1}
redis-cluster-data-2:
external:
name: ${REDIS_CLUSTER_DATA_VOLUME_2}
redis-cluster-data-3:
external:
name: ${REDIS_CLUSTER_DATA_VOLUME_3}
redis-cluster-data-4:
external:
name: ${REDIS_CLUSTER_DATA_VOLUME_4}
redis-cluster-data-5:
external:
name: ${REDIS_CLUSTER_DATA_VOLUME_5}

View File

@ -1,151 +0,0 @@
#
# Copyright © 2016-2025 The Thingsboard Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
version: '3.0'
services:
# Redis cluster
# The latest version of Redis compatible with ThingsBoard is 7.2
redis-node-0:
image: bitnami/valkey-cluster:8.0
volumes:
- ./tb-node/redis-cluster-data-0:/bitnami/redis/data
environment:
- 'VALKEY_PASSWORD=thingsboard'
- 'VALKEY_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5'
redis-node-1:
image: bitnami/valkey-cluster:8.0
volumes:
- ./tb-node/redis-cluster-data-1:/bitnami/redis/data
depends_on:
- redis-node-0
environment:
- 'VALKEY_PASSWORD=thingsboard'
- 'VALKEY_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5'
redis-node-2:
image: bitnami/valkey-cluster:8.0
volumes:
- ./tb-node/redis-cluster-data-2:/bitnami/redis/data
depends_on:
- redis-node-1
environment:
- 'VALKEY_PASSWORD=thingsboard'
- 'VALKEY_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5'
redis-node-3:
image: bitnami/valkey-cluster:8.0
volumes:
- ./tb-node/redis-cluster-data-3:/bitnami/redis/data
depends_on:
- redis-node-2
environment:
- 'VALKEY_PASSWORD=thingsboard'
- 'VALKEY_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5'
redis-node-4:
image: bitnami/valkey-cluster:8.0
volumes:
- ./tb-node/redis-cluster-data-4:/bitnami/redis/data
depends_on:
- redis-node-3
environment:
- 'VALKEY_PASSWORD=thingsboard'
- 'VALKEY_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5'
redis-node-5:
image: bitnami/valkey-cluster:8.0
volumes:
- ./tb-node/redis-cluster-data-5:/bitnami/redis/data
depends_on:
- redis-node-0
- redis-node-1
- redis-node-2
- redis-node-3
- redis-node-4
environment:
- 'VALKEY_PASSWORD=thingsboard'
- 'VALKEY_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5'
- 'VALKEY_CLUSTER_REPLICAS=1'
- 'VALKEY_CLUSTER_CREATOR=yes'
# ThingsBoard setup to use redis-cluster
tb-core1:
env_file:
- cache-redis-cluster.env
depends_on:
- redis-node-5
tb-core2:
env_file:
- cache-redis-cluster.env
depends_on:
- redis-node-5
tb-rule-engine1:
env_file:
- cache-redis-cluster.env
depends_on:
- redis-node-5
tb-rule-engine2:
env_file:
- cache-redis-cluster.env
depends_on:
- redis-node-5
tb-mqtt-transport1:
env_file:
- cache-redis-cluster.env
depends_on:
- redis-node-5
tb-mqtt-transport2:
env_file:
- cache-redis-cluster.env
depends_on:
- redis-node-5
tb-http-transport1:
env_file:
- cache-redis-cluster.env
depends_on:
- redis-node-5
tb-http-transport2:
env_file:
- cache-redis-cluster.env
depends_on:
- redis-node-5
tb-coap-transport:
env_file:
- cache-redis-cluster.env
depends_on:
- redis-node-5
tb-lwm2m-transport:
env_file:
- cache-redis-cluster.env
depends_on:
- redis-node-5
tb-snmp-transport:
env_file:
- cache-redis-cluster.env
depends_on:
- redis-node-5
tb-vc-executor1:
env_file:
- cache-redis-cluster.env
depends_on:
- redis-node-5
tb-vc-executor2:
env_file:
- cache-redis-cluster.env
depends_on:
- redis-node-5

View File

@ -1,120 +0,0 @@
#
# Copyright © 2016-2025 The Thingsboard Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
version: '3.0'
services:
# Redis sentinel
# The latest version of Redis compatible with ThingsBoard is 7.2
redis-master:
image: 'bitnami/redis:7.2'
volumes:
- ./tb-node/redis-sentinel-data-master:/bitnami/redis/data
environment:
- 'REDIS_REPLICATION_MODE=master'
- 'REDIS_PASSWORD=thingsboard'
redis-slave:
image: 'bitnami/redis:7.2'
volumes:
- ./tb-node/redis-sentinel-data-slave:/bitnami/redis/data
environment:
- 'REDIS_REPLICATION_MODE=slave'
- 'REDIS_MASTER_HOST=redis-master'
- 'REDIS_MASTER_PASSWORD=thingsboard'
- 'REDIS_PASSWORD=thingsboard'
depends_on:
- redis-master
redis-sentinel:
image: 'bitnami/redis-sentinel:7.2'
volumes:
- ./tb-node/redis-sentinel-data-sentinel:/bitnami/redis/data
environment:
- 'REDIS_MASTER_HOST=redis-master'
- 'REDIS_MASTER_SET=mymaster'
- 'REDIS_SENTINEL_PASSWORD=sentinel'
- 'REDIS_MASTER_PASSWORD=thingsboard'
depends_on:
- redis-master
- redis-slave
# ThingsBoard setup to use redis-sentinel
tb-core1:
env_file:
- cache-redis-sentinel.env
depends_on:
- redis-sentinel
tb-core2:
env_file:
- cache-redis-sentinel.env
depends_on:
- redis-sentinel
tb-rule-engine1:
env_file:
- cache-redis-sentinel.env
depends_on:
- redis-sentinel
tb-rule-engine2:
env_file:
- cache-redis-sentinel.env
depends_on:
- redis-sentinel
tb-mqtt-transport1:
env_file:
- cache-redis-sentinel.env
depends_on:
- redis-sentinel
tb-mqtt-transport2:
env_file:
- cache-redis-sentinel.env
depends_on:
- redis-sentinel
tb-http-transport1:
env_file:
- cache-redis-sentinel.env
depends_on:
- redis-sentinel
tb-http-transport2:
env_file:
- cache-redis-sentinel.env
depends_on:
- redis-sentinel
tb-coap-transport:
env_file:
- cache-redis-sentinel.env
depends_on:
- redis-sentinel
tb-lwm2m-transport:
env_file:
- cache-redis-sentinel.env
depends_on:
- redis-sentinel
tb-snmp-transport:
env_file:
- cache-redis-sentinel.env
depends_on:
- redis-sentinel
tb-vc-executor1:
env_file:
- cache-redis-sentinel.env
depends_on:
- redis-sentinel
tb-vc-executor2:
env_file:
- cache-redis-sentinel.env
depends_on:
- redis-sentinel

View File

@ -0,0 +1,58 @@
#
# Copyright © 2016-2025 The Thingsboard Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
version: '3.0'
services:
# Valkey cluster
valkey-node-0:
volumes:
- valkey-cluster-data-0:/bitnami/valkey/data
valkey-node-1:
volumes:
- valkey-cluster-data-1:/bitnami/valkey/data
valkey-node-2:
volumes:
- valkey-cluster-data-2:/bitnami/valkey/data
valkey-node-3:
volumes:
- valkey-cluster-data-3:/bitnami/valkey/data
valkey-node-4:
volumes:
- valkey-cluster-data-4:/bitnami/valkey/data
valkey-node-5:
volumes:
- valkey-cluster-data-5:/bitnami/valkey/data
volumes:
valkey-cluster-data-0:
external:
name: ${VALKEY_CLUSTER_DATA_VOLUME_0}
valkey-cluster-data-1:
external:
name: ${VALKEY_CLUSTER_DATA_VOLUME_1}
valkey-cluster-data-2:
external:
name: ${VALKEY_CLUSTER_DATA_VOLUME_2}
valkey-cluster-data-3:
external:
name: ${VALKEY_CLUSTER_DATA_VOLUME_3}
valkey-cluster-data-4:
external:
name: ${VALKEY_CLUSTER_DATA_VOLUME_4}
valkey-cluster-data-5:
external:
name: ${VALKEY_CLUSTER_DATA_VOLUME_5}

View File

@ -0,0 +1,152 @@
#
# Copyright © 2016-2025 The Thingsboard Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
version: '3.0'
services:
# Valkey cluster
# The latest version of Valkey compatible with ThingsBoard is 8.0
valkey-node-0:
image: bitnami/valkey-cluster:8.0
volumes:
- ./tb-node/valkey-cluster-data-0:/bitnami/valkey/data
environment:
- 'VALKEY_PASSWORD=thingsboard'
- 'VALKEY_NODES=valkey-node-0 valkey-node-1 valkey-node-2 valkey-node-3 valkey-node-4 valkey-node-5'
valkey-node-1:
image: bitnami/valkey-cluster:8.0
volumes:
- ./tb-node/valkey-cluster-data-1:/bitnami/valkey/data
depends_on:
- valkey-node-0
environment:
- 'VALKEY_PASSWORD=thingsboard'
- 'VALKEY_NODES=valkey-node-0 valkey-node-1 valkey-node-2 valkey-node-3 valkey-node-4 valkey-node-5'
valkey-node-2:
image: bitnami/valkey-cluster:8.0
volumes:
- ./tb-node/valkey-cluster-data-2:/bitnami/valkey/data
depends_on:
- valkey-node-1
environment:
- 'VALKEY_PASSWORD=thingsboard'
- 'VALKEY_NODES=valkey-node-0 valkey-node-1 valkey-node-2 valkey-node-3 valkey-node-4 valkey-node-5'
valkey-node-3:
image: bitnami/valkey-cluster:8.0
volumes:
- ./tb-node/valkey-cluster-data-3:/bitnami/valkey/data
depends_on:
- valkey-node-2
environment:
- 'VALKEY_PASSWORD=thingsboard'
- 'VALKEY_NODES=valkey-node-0 valkey-node-1 valkey-node-2 valkey-node-3 valkey-node-4 valkey-node-5'
valkey-node-4:
image: bitnami/valkey-cluster:8.0
volumes:
- ./tb-node/valkey-cluster-data-4:/bitnami/valkey/data
depends_on:
- valkey-node-3
environment:
- 'VALKEY_PASSWORD=thingsboard'
- 'VALKEY_NODES=valkey-node-0 valkey-node-1 valkey-node-2 valkey-node-3 valkey-node-4 valkey-node-5'
valkey-node-5:
image: bitnami/valkey-cluster:8.0
volumes:
- ./tb-node/valkey-cluster-data-5:/bitnami/valkey/data
depends_on:
- valkey-node-0
- valkey-node-1
- valkey-node-2
- valkey-node-3
- valkey-node-4
environment:
- 'VALKEY_PASSWORD=thingsboard'
- 'REDISCLI_AUTH=thingsboard'
- 'VALKEY_NODES=valkey-node-0 valkey-node-1 valkey-node-2 valkey-node-3 valkey-node-4 valkey-node-5'
- 'VALKEY_CLUSTER_REPLICAS=1'
- 'VALKEY_CLUSTER_CREATOR=yes'
# ThingsBoard setup to use valkey-cluster
tb-core1:
env_file:
- cache-valkey-cluster.env
depends_on:
- valkey-node-5
tb-core2:
env_file:
- cache-valkey-cluster.env
depends_on:
- valkey-node-5
tb-rule-engine1:
env_file:
- cache-valkey-cluster.env
depends_on:
- valkey-node-5
tb-rule-engine2:
env_file:
- cache-valkey-cluster.env
depends_on:
- valkey-node-5
tb-mqtt-transport1:
env_file:
- cache-valkey-cluster.env
depends_on:
- valkey-node-5
tb-mqtt-transport2:
env_file:
- cache-valkey-cluster.env
depends_on:
- valkey-node-5
tb-http-transport1:
env_file:
- cache-valkey-cluster.env
depends_on:
- valkey-node-5
tb-http-transport2:
env_file:
- cache-valkey-cluster.env
depends_on:
- valkey-node-5
tb-coap-transport:
env_file:
- cache-valkey-cluster.env
depends_on:
- valkey-node-5
tb-lwm2m-transport:
env_file:
- cache-valkey-cluster.env
depends_on:
- valkey-node-5
tb-snmp-transport:
env_file:
- cache-valkey-cluster.env
depends_on:
- valkey-node-5
tb-vc-executor1:
env_file:
- cache-valkey-cluster.env
depends_on:
- valkey-node-5
tb-vc-executor2:
env_file:
- cache-valkey-cluster.env
depends_on:
- valkey-node-5

View File

@ -17,24 +17,24 @@
version: '3.0' version: '3.0'
services: services:
# Redis sentinel # Valkey sentinel
redis-master: valkey-primary:
volumes: volumes:
- redis-sentinel-data-master:/bitnami/redis/data - valkey-sentinel-data-primary:/bitnami/valkey/data
redis-slave: valkey-replica:
volumes: volumes:
- redis-sentinel-data-slave:/bitnami/redis/data - valkey-sentinel-data-replica:/bitnami/valkey/data
redis-sentinel: valkey-sentinel:
volumes: volumes:
- redis-sentinel-data-sentinel:/bitnami/redis/data - valkey-sentinel-data-sentinel:/bitnami/valkey/data
volumes: volumes:
redis-sentinel-data-master: valkey-sentinel-data-primary:
external: external:
name: ${REDIS_SENTINEL_DATA_VOLUME_MASTER} name: ${VALKEY_SENTINEL_DATA_VOLUME_MASTER}
redis-sentinel-data-slave: valkey-sentinel-data-replica:
external: external:
name: ${REDIS_SENTINEL_DATA_VOLUME_SLAVE} name: ${VALKEY_SENTINEL_DATA_VOLUME_SLAVE}
redis-sentinel-data-sentinel: valkey-sentinel-data-sentinel:
external: external:
name: ${REDIS_SENTINEL_DATA_VOLUME_SENTINEL} name: ${VALKEY_SENTINEL_DATA_VOLUME_SENTINEL}

View File

@ -0,0 +1,120 @@
#
# Copyright © 2016-2025 The Thingsboard Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
version: '3.0'
services:
# Valkey sentinel
# The latest version of Valkey compatible with ThingsBoard is 8.0
valkey-primary:
image: 'bitnami/valkey:8.0'
volumes:
- ./tb-node/valkey-sentinel-data-primary:/bitnami/valkey/data
environment:
- 'VALKEY_REPLICATION_MODE=primary'
- 'VALKEY_PASSWORD=thingsboard'
valkey-replica:
image: 'bitnami/valkey:8.0'
volumes:
- ./tb-node/valkey-sentinel-data-replica:/bitnami/valkey/data
environment:
- 'VALKEY_REPLICATION_MODE=replica'
- 'VALKEY_PRIMARY_HOST=valkey-primary'
- 'VALKEY_PRIMARY_PASSWORD=thingsboard'
- 'VALKEY_PASSWORD=thingsboard'
depends_on:
- valkey-primary
valkey-sentinel:
image: 'bitnami/valkey-sentinel:8.0'
volumes:
- ./tb-node/valkey-sentinel-data-sentinel:/bitnami/valkey/data
environment:
- 'VALKEY_PRIMARY_HOST=valkey-primary'
- 'VALKEY_MASTER_SET=myprimary'
- 'VALKEY_SENTINEL_PASSWORD=sentinel'
- 'VALKEY_PRIMARY_PASSWORD=thingsboard'
depends_on:
- valkey-primary
- valkey-replica
# ThingsBoard setup to use valkey-sentinel
tb-core1:
env_file:
- cache-valkey-sentinel.env
depends_on:
- valkey-sentinel
tb-core2:
env_file:
- cache-valkey-sentinel.env
depends_on:
- valkey-sentinel
tb-rule-engine1:
env_file:
- cache-valkey-sentinel.env
depends_on:
- valkey-sentinel
tb-rule-engine2:
env_file:
- cache-valkey-sentinel.env
depends_on:
- valkey-sentinel
tb-mqtt-transport1:
env_file:
- cache-valkey-sentinel.env
depends_on:
- valkey-sentinel
tb-mqtt-transport2:
env_file:
- cache-valkey-sentinel.env
depends_on:
- valkey-sentinel
tb-http-transport1:
env_file:
- cache-valkey-sentinel.env
depends_on:
- valkey-sentinel
tb-http-transport2:
env_file:
- cache-valkey-sentinel.env
depends_on:
- valkey-sentinel
tb-coap-transport:
env_file:
- cache-valkey-sentinel.env
depends_on:
- valkey-sentinel
tb-lwm2m-transport:
env_file:
- cache-valkey-sentinel.env
depends_on:
- valkey-sentinel
tb-snmp-transport:
env_file:
- cache-valkey-sentinel.env
depends_on:
- valkey-sentinel
tb-vc-executor1:
env_file:
- cache-valkey-sentinel.env
depends_on:
- valkey-sentinel
tb-vc-executor2:
env_file:
- cache-valkey-sentinel.env
depends_on:
- valkey-sentinel

View File

@ -17,11 +17,11 @@
version: '3.0' version: '3.0'
services: services:
redis: valkey:
volumes: volumes:
- redis-data:/bitnami/redis/data - valkey-data:/bitnami/valkey/data
volumes: volumes:
redis-data: valkey-data:
external: external:
name: ${REDIS_DATA_VOLUME} name: ${VALKEY_DATA_VOLUME}

View File

@ -17,9 +17,9 @@
version: '3.0' version: '3.0'
services: services:
# Redis standalone # Valkey standalone
# The latest version of Redis compatible with ThingsBoard is 7.2 # The latest version of Valkey compatible with ThingsBoard is 8.0
redis: valkey:
restart: always restart: always
image: bitnami/valkey:8.0 image: bitnami/valkey:8.0
environment: environment:
@ -28,71 +28,71 @@ services:
ports: ports:
- '6379:6379' - '6379:6379'
volumes: volumes:
- ./tb-node/redis-data:/bitnami/redis/data - ./tb-node/valkey-data:/bitnami/valkey/data
# ThingsBoard setup to use redis-standalone # ThingsBoard setup to use valkey-standalone
tb-core1: tb-core1:
env_file: env_file:
- cache-redis.env - cache-valkey.env
depends_on: depends_on:
- redis - valkey
tb-core2: tb-core2:
env_file: env_file:
- cache-redis.env - cache-valkey.env
depends_on: depends_on:
- redis - valkey
tb-rule-engine1: tb-rule-engine1:
env_file: env_file:
- cache-redis.env - cache-valkey.env
depends_on: depends_on:
- redis - valkey
tb-rule-engine2: tb-rule-engine2:
env_file: env_file:
- cache-redis.env - cache-valkey.env
depends_on: depends_on:
- redis - valkey
tb-mqtt-transport1: tb-mqtt-transport1:
env_file: env_file:
- cache-redis.env - cache-valkey.env
depends_on: depends_on:
- redis - valkey
tb-mqtt-transport2: tb-mqtt-transport2:
env_file: env_file:
- cache-redis.env - cache-valkey.env
depends_on: depends_on:
- redis - valkey
tb-http-transport1: tb-http-transport1:
env_file: env_file:
- cache-redis.env - cache-valkey.env
depends_on: depends_on:
- redis - valkey
tb-http-transport2: tb-http-transport2:
env_file: env_file:
- cache-redis.env - cache-valkey.env
depends_on: depends_on:
- redis - valkey
tb-coap-transport: tb-coap-transport:
env_file: env_file:
- cache-redis.env - cache-valkey.env
depends_on: depends_on:
- redis - valkey
tb-lwm2m-transport: tb-lwm2m-transport:
env_file: env_file:
- cache-redis.env - cache-valkey.env
depends_on: depends_on:
- redis - valkey
tb-snmp-transport: tb-snmp-transport:
env_file: env_file:
- cache-redis.env - cache-valkey.env
depends_on: depends_on:
- redis - valkey
tb-vc-executor1: tb-vc-executor1:
env_file: env_file:
- cache-redis.env - cache-valkey.env
depends_on: depends_on:
- redis - valkey
tb-vc-executor2: tb-vc-executor2:
env_file: env_file:
- cache-redis.env - cache-valkey.env
depends_on: depends_on:
- redis - valkey