From 81c1c2f11828ad2c4362f3508a8d6eb274549f86 Mon Sep 17 00:00:00 2001 From: Denys Sumin Date: Wed, 21 May 2025 16:14:29 +0300 Subject: [PATCH] redis to valkey --- docker/.env | 6 +- docker/.gitignore | 20 +-- docker/cache-redis-cluster.env | 5 - docker/cache-redis.env | 2 - docker/cache-valkey-cluster.env | 5 + ...sentinel.env => cache-valkey-sentinel.env} | 4 +- docker/cache-valkey.env | 2 + docker/compose-utils.sh | 62 +++---- .../docker-compose.redis-cluster.volumes.yml | 58 ------- docker/docker-compose.redis-cluster.yml | 151 ----------------- docker/docker-compose.redis-sentinel.yml | 120 -------------- .../docker-compose.valkey-cluster.volumes.yml | 58 +++++++ docker/docker-compose.valkey-cluster.yml | 152 ++++++++++++++++++ ...ocker-compose.valkey-sentinel.volumes.yml} | 26 +-- docker/docker-compose.valkey-sentinel.yml | 120 ++++++++++++++ ....yml => docker-compose.valkey.volumes.yml} | 8 +- ...se.redis.yml => docker-compose.valkey.yml} | 62 +++---- 17 files changed, 431 insertions(+), 430 deletions(-) delete mode 100644 docker/cache-redis-cluster.env delete mode 100644 docker/cache-redis.env create mode 100644 docker/cache-valkey-cluster.env rename docker/{cache-redis-sentinel.env => cache-valkey-sentinel.env} (70%) create mode 100644 docker/cache-valkey.env delete mode 100644 docker/docker-compose.redis-cluster.volumes.yml delete mode 100644 docker/docker-compose.redis-cluster.yml delete mode 100644 docker/docker-compose.redis-sentinel.yml create mode 100644 docker/docker-compose.valkey-cluster.volumes.yml create mode 100644 docker/docker-compose.valkey-cluster.yml rename docker/{docker-compose.redis-sentinel.volumes.yml => docker-compose.valkey-sentinel.volumes.yml} (59%) create mode 100644 docker/docker-compose.valkey-sentinel.yml rename docker/{docker-compose.redis.volumes.yml => docker-compose.valkey.volumes.yml} (86%) rename docker/{docker-compose.redis.yml => docker-compose.valkey.yml} (67%) diff --git a/docker/.env b/docker/.env index 71722247df..dc387dd517 100644 --- a/docker/.env +++ b/docker/.env @@ -1,7 +1,7 @@ TB_QUEUE_TYPE=kafka -# redis or redis-cluster or redis-sentinel -CACHE=redis +# valkey or valkey-cluster or valkey-sentinel +CACHE=valkey DOCKER_REPO=thingsboard @@ -17,7 +17,7 @@ TB_VC_EXECUTOR_DOCKER_NAME=tb-vc-executor EDQS_DOCKER_NAME=tb-edqs 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). # According to the database type corresponding docker service will be deployed (see docker-compose.postgres.yml, docker-compose.hybrid.yml for details). diff --git a/docker/.gitignore b/docker/.gitignore index b6c9fcf18c..527b3c2a3b 100644 --- a/docker/.gitignore +++ b/docker/.gitignore @@ -6,15 +6,15 @@ tb-node/postgres/** tb-node/cassandra/** tb-transports/*/log tb-vc-executor/log/** -tb-node/redis-cluster-data-0/** -tb-node/redis-cluster-data-1/** -tb-node/redis-cluster-data-2/** -tb-node/redis-cluster-data-3/** -tb-node/redis-cluster-data-4/** -tb-node/redis-cluster-data-5/** -tb-node/redis-sentinel-data-master/** -tb-node/redis-sentinel-data-slave/** -tb-node/redis-sentinel-data-sentinel/** -tb-node/redis-data/** +tb-node/valkey-cluster-data-0/** +tb-node/valkey-cluster-data-1/** +tb-node/valkey-cluster-data-2/** +tb-node/valkey-cluster-data-3/** +tb-node/valkey-cluster-data-4/** +tb-node/valkey-cluster-data-5/** +tb-node/valkey-sentinel-data-primary/** +tb-node/valkey-sentinel-data-replica/** +tb-node/valkey-sentinel-data-sentinel/** +tb-node/valkey-data/** !.env diff --git a/docker/cache-redis-cluster.env b/docker/cache-redis-cluster.env deleted file mode 100644 index a3b516063b..0000000000 --- a/docker/cache-redis-cluster.env +++ /dev/null @@ -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 diff --git a/docker/cache-redis.env b/docker/cache-redis.env deleted file mode 100644 index 7b92620666..0000000000 --- a/docker/cache-redis.env +++ /dev/null @@ -1,2 +0,0 @@ -CACHE_TYPE=redis -REDIS_HOST=redis diff --git a/docker/cache-valkey-cluster.env b/docker/cache-valkey-cluster.env new file mode 100644 index 0000000000..86f4682dfd --- /dev/null +++ b/docker/cache-valkey-cluster.env @@ -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 diff --git a/docker/cache-redis-sentinel.env b/docker/cache-valkey-sentinel.env similarity index 70% rename from docker/cache-redis-sentinel.env rename to docker/cache-valkey-sentinel.env index 39a1246d9c..44c867d93d 100644 --- a/docker/cache-redis-sentinel.env +++ b/docker/cache-valkey-sentinel.env @@ -1,7 +1,7 @@ CACHE_TYPE=redis REDIS_CONNECTION_TYPE=sentinel -REDIS_MASTER=mymaster -REDIS_SENTINELS=redis-sentinel:26379 +REDIS_MASTER=myprimary +REDIS_SENTINELS=valkey-sentinel:26379 REDIS_SENTINEL_PASSWORD=sentinel REDIS_USE_DEFAULT_POOL_CONFIG=false REDIS_PASSWORD=thingsboard diff --git a/docker/cache-valkey.env b/docker/cache-valkey.env new file mode 100644 index 0000000000..3971ab4f18 --- /dev/null +++ b/docker/cache-valkey.env @@ -0,0 +1,2 @@ +CACHE_TYPE=redis +REDIS_HOST=valkey diff --git a/docker/compose-utils.sh b/docker/compose-utils.sh index 3862024786..bd2964b72b 100755 --- a/docker/compose-utils.sh +++ b/docker/compose-utils.sh @@ -76,19 +76,19 @@ function additionalComposeMonitoringArgs() { function additionalComposeCacheArgs() { source .env CACHE_COMPOSE_ARGS="" - CACHE="${CACHE:-redis}" + CACHE="${CACHE:-valkey}" case $CACHE in - redis) - CACHE_COMPOSE_ARGS="-f docker-compose.redis.yml" + valkey) + CACHE_COMPOSE_ARGS="-f docker-compose.valkey.yml" ;; - redis-cluster) - CACHE_COMPOSE_ARGS="-f docker-compose.redis-cluster.yml" + valkey-cluster) + CACHE_COMPOSE_ARGS="-f docker-compose.valkey-cluster.yml" ;; - redis-sentinel) - CACHE_COMPOSE_ARGS="-f docker-compose.redis-sentinel.yml" + valkey-sentinel) + 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 esac echo $CACHE_COMPOSE_ARGS @@ -109,19 +109,19 @@ function additionalStartupServices() { exit 1 esac - CACHE="${CACHE:-redis}" + CACHE="${CACHE:-valkey}" case $CACHE in - redis) - ADDITIONAL_STARTUP_SERVICES="$ADDITIONAL_STARTUP_SERVICES redis" + valkey) + ADDITIONAL_STARTUP_SERVICES="$ADDITIONAL_STARTUP_SERVICES valkey" ;; - redis-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" + valkey-cluster) + 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) - ADDITIONAL_STARTUP_SERVICES="$ADDITIONAL_STARTUP_SERVICES redis-master redis-slave redis-sentinel" + valkey-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 esac @@ -166,32 +166,32 @@ function permissionList() { " fi - CACHE="${CACHE:-redis}" + CACHE="${CACHE:-valkey}" case $CACHE in - redis) + valkey) PERMISSION_LIST="$PERMISSION_LIST - 1001 1001 tb-node/redis-data + 1001 1001 tb-node/valkey-data " ;; - redis-cluster) + valkey-cluster) PERMISSION_LIST="$PERMISSION_LIST - 1001 1001 tb-node/redis-cluster-data-0 - 1001 1001 tb-node/redis-cluster-data-1 - 1001 1001 tb-node/redis-cluster-data-2 - 1001 1001 tb-node/redis-cluster-data-3 - 1001 1001 tb-node/redis-cluster-data-4 - 1001 1001 tb-node/redis-cluster-data-5 + 1001 1001 tb-node/valkey-cluster-data-0 + 1001 1001 tb-node/valkey-cluster-data-1 + 1001 1001 tb-node/valkey-cluster-data-2 + 1001 1001 tb-node/valkey-cluster-data-3 + 1001 1001 tb-node/valkey-cluster-data-4 + 1001 1001 tb-node/valkey-cluster-data-5 " ;; - redis-sentinel) + valkey-sentinel) PERMISSION_LIST="$PERMISSION_LIST - 1001 1001 tb-node/redis-sentinel-data-master - 1001 1001 tb-node/redis-sentinel-data-slave - 1001 1001 tb-node/redis-sentinel-data-sentinel + 1001 1001 tb-node/valkey-sentinel-data-primary + 1001 1001 tb-node/valkey-sentinel-data-replica + 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 esac diff --git a/docker/docker-compose.redis-cluster.volumes.yml b/docker/docker-compose.redis-cluster.volumes.yml deleted file mode 100644 index 5a735f9eeb..0000000000 --- a/docker/docker-compose.redis-cluster.volumes.yml +++ /dev/null @@ -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} diff --git a/docker/docker-compose.redis-cluster.yml b/docker/docker-compose.redis-cluster.yml deleted file mode 100644 index 63051176c9..0000000000 --- a/docker/docker-compose.redis-cluster.yml +++ /dev/null @@ -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 diff --git a/docker/docker-compose.redis-sentinel.yml b/docker/docker-compose.redis-sentinel.yml deleted file mode 100644 index ed8f314bcd..0000000000 --- a/docker/docker-compose.redis-sentinel.yml +++ /dev/null @@ -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 diff --git a/docker/docker-compose.valkey-cluster.volumes.yml b/docker/docker-compose.valkey-cluster.volumes.yml new file mode 100644 index 0000000000..7e78d04505 --- /dev/null +++ b/docker/docker-compose.valkey-cluster.volumes.yml @@ -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} diff --git a/docker/docker-compose.valkey-cluster.yml b/docker/docker-compose.valkey-cluster.yml new file mode 100644 index 0000000000..02757240dc --- /dev/null +++ b/docker/docker-compose.valkey-cluster.yml @@ -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 diff --git a/docker/docker-compose.redis-sentinel.volumes.yml b/docker/docker-compose.valkey-sentinel.volumes.yml similarity index 59% rename from docker/docker-compose.redis-sentinel.volumes.yml rename to docker/docker-compose.valkey-sentinel.volumes.yml index 485291d905..1f29d9edaa 100644 --- a/docker/docker-compose.redis-sentinel.volumes.yml +++ b/docker/docker-compose.valkey-sentinel.volumes.yml @@ -17,24 +17,24 @@ version: '3.0' services: - # Redis sentinel - redis-master: + # Valkey sentinel + valkey-primary: volumes: - - redis-sentinel-data-master:/bitnami/redis/data - redis-slave: + - valkey-sentinel-data-primary:/bitnami/valkey/data + valkey-replica: volumes: - - redis-sentinel-data-slave:/bitnami/redis/data - redis-sentinel: + - valkey-sentinel-data-replica:/bitnami/valkey/data + valkey-sentinel: volumes: - - redis-sentinel-data-sentinel:/bitnami/redis/data + - valkey-sentinel-data-sentinel:/bitnami/valkey/data volumes: - redis-sentinel-data-master: + valkey-sentinel-data-primary: external: - name: ${REDIS_SENTINEL_DATA_VOLUME_MASTER} - redis-sentinel-data-slave: + name: ${VALKEY_SENTINEL_DATA_VOLUME_MASTER} + valkey-sentinel-data-replica: external: - name: ${REDIS_SENTINEL_DATA_VOLUME_SLAVE} - redis-sentinel-data-sentinel: + name: ${VALKEY_SENTINEL_DATA_VOLUME_SLAVE} + valkey-sentinel-data-sentinel: external: - name: ${REDIS_SENTINEL_DATA_VOLUME_SENTINEL} + name: ${VALKEY_SENTINEL_DATA_VOLUME_SENTINEL} diff --git a/docker/docker-compose.valkey-sentinel.yml b/docker/docker-compose.valkey-sentinel.yml new file mode 100644 index 0000000000..d4b791643a --- /dev/null +++ b/docker/docker-compose.valkey-sentinel.yml @@ -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 diff --git a/docker/docker-compose.redis.volumes.yml b/docker/docker-compose.valkey.volumes.yml similarity index 86% rename from docker/docker-compose.redis.volumes.yml rename to docker/docker-compose.valkey.volumes.yml index 3b23511501..7da5f154a6 100644 --- a/docker/docker-compose.redis.volumes.yml +++ b/docker/docker-compose.valkey.volumes.yml @@ -17,11 +17,11 @@ version: '3.0' services: - redis: + valkey: volumes: - - redis-data:/bitnami/redis/data + - valkey-data:/bitnami/valkey/data volumes: - redis-data: + valkey-data: external: - name: ${REDIS_DATA_VOLUME} + name: ${VALKEY_DATA_VOLUME} diff --git a/docker/docker-compose.redis.yml b/docker/docker-compose.valkey.yml similarity index 67% rename from docker/docker-compose.redis.yml rename to docker/docker-compose.valkey.yml index 3e8934d9a0..6b8cf3feb3 100644 --- a/docker/docker-compose.redis.yml +++ b/docker/docker-compose.valkey.yml @@ -17,9 +17,9 @@ version: '3.0' services: -# Redis standalone -# The latest version of Redis compatible with ThingsBoard is 7.2 - redis: +# Valkey standalone +# The latest version of Valkey compatible with ThingsBoard is 8.0 + valkey: restart: always image: bitnami/valkey:8.0 environment: @@ -28,71 +28,71 @@ services: ports: - '6379:6379' 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: env_file: - - cache-redis.env + - cache-valkey.env depends_on: - - redis + - valkey tb-core2: env_file: - - cache-redis.env + - cache-valkey.env depends_on: - - redis + - valkey tb-rule-engine1: env_file: - - cache-redis.env + - cache-valkey.env depends_on: - - redis + - valkey tb-rule-engine2: env_file: - - cache-redis.env + - cache-valkey.env depends_on: - - redis + - valkey tb-mqtt-transport1: env_file: - - cache-redis.env + - cache-valkey.env depends_on: - - redis + - valkey tb-mqtt-transport2: env_file: - - cache-redis.env + - cache-valkey.env depends_on: - - redis + - valkey tb-http-transport1: env_file: - - cache-redis.env + - cache-valkey.env depends_on: - - redis + - valkey tb-http-transport2: env_file: - - cache-redis.env + - cache-valkey.env depends_on: - - redis + - valkey tb-coap-transport: env_file: - - cache-redis.env + - cache-valkey.env depends_on: - - redis + - valkey tb-lwm2m-transport: env_file: - - cache-redis.env + - cache-valkey.env depends_on: - - redis + - valkey tb-snmp-transport: env_file: - - cache-redis.env + - cache-valkey.env depends_on: - - redis + - valkey tb-vc-executor1: env_file: - - cache-redis.env + - cache-valkey.env depends_on: - - redis + - valkey tb-vc-executor2: env_file: - - cache-redis.env + - cache-valkey.env depends_on: - - redis + - valkey