TGViewer
Сочный DevOps Сочный DevOps @andtree_sec · 420 subscribers
Post #128 46
Кластер keydb для локальной разработки

Ниже конфиг для docker-compose, который позволяет запустить keydb в режиме кластера.
services:
keydb1:
image: eqalpha/keydb:x86_64_v6.2.2
command: [ "keydb-server", "--port", "6379", "--cluster-enabled", "yes", "--cluster-config-file", "/data/nodes.conf", "--cluster-node-timeout", "5000", "--appendonly", "yes", "--active-replica", "yes", "--protected-mode", "no" ]
volumes:
- keydb1-data:/data
ports:
- "6379:6379"
networks:
keydb-cluster-net:
ipv4_address: 172.30.0.2

keydb2:
image: eqalpha/keydb:x86_64_v6.2.2
command: [ "keydb-server", "--port", "6379", "--cluster-enabled", "yes", "--cluster-config-file", "/data/nodes.conf", "--cluster-node-timeout", "5000", "--appendonly", "yes", "--active-replica", "yes", "--protected-mode", "no" ]
volumes:
- keydb2-data:/data
ports:
- "6380:6379"
networks:
keydb-cluster-net:
ipv4_address: 172.30.0.3

keydb3:
image: eqalpha/keydb:x86_64_v6.2.2
command: [ "keydb-server", "--port", "6379", "--cluster-enabled", "yes", "--cluster-config-file", "/data/nodes.conf", "--cluster-node-timeout", "5000", "--appendonly", "yes", "--active-replica", "yes", "--protected-mode", "no" ]
volumes:
- keydb3-data:/data
ports:
- "6381:6379"
networks:
keydb-cluster-net:
ipv4_address: 172.30.0.4

networks:
keydb-cluster-net:
driver: bridge
ipam:
config:
- subnet: 172.30.0.0/24

volumes:
keydb1-data:
keydb2-data:
keydb3-data:

Используем отдельную подсеть и статические адреса, это нужно для анонса создания кластера в следующем шаге. Также добавляем volume, чтобы сохранить состояние и не перезапускать скрипт инициализации кластера каждый раз.

Скрипт для создания кластера, выполнять нужно после того, как запустили keydb из docker-compose:
#!/bin/bash

declare -a keydb_ips
port=6379

keydb_container_ids=($(docker ps | grep keydb | awk '{print $1}'))

for id in ${keydb_container_ids[*]};do
ip=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $id)
keydb_ips+=("$ip:$port")
done

docker exec -it ${keydb_container_ids[0]} keydb-cli --cluster create ${keydb_ips[*]} --cluster-replicas 0


Тут просто получаем список id контейнеров с keydb, по нему получаем их ip адреса, а далее в любом контейнере (в данном случае в первом из массива) выполняем создание кластера.

После можно подключиться к кластеру так:
keydb-cli -h localhost


И проверить его статус:
cluster info


Должны увидеть cluster_state: ok.

При перезапуске, запускать скрипт инициализации не нужно.

#docker
#keydb
More from @andtree_sec
  1. Sep 7, 2026Давненько не было сообщений. Скорее всего в будущем они уйдут в telegraf, который я еще не…
  2. Jul 6, 2026Последнее время на работе часто приходится работать с apache flink и даже что-то писать на…
  3. Jun 4, 2026Немножко про молекула тесты... У нас принято использовать в переменных lookup плагин для д…
  4. May 20, 2026Очередной небольшой проект. Веб-приложение, которое агрегирует через стандартный механиз g…
  5. May 15, 2026Включаем профилирование в ansible Профилирование, это вывод даты, времени запуска и итогов…
  6. Apr 17, 2026Так выглядит общий dashbord работы с инцидентами.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →