redis: создать кластер с помощью redis-cli не в интерактивном режиме

При попытке создать кластер с redis-cli следующим образом

redis-cli --cluster create

появляется запрос на подтверждение конфигурации?

Есть ли способ написать это (желательно в ansible) и запустить его не в интерактивном режиме?

Мне известно об этой теме, однако в ней рассматриваются манипуляции с данными, которые не масштаб этого вопроса.


person pkaramol    schedule 17.03.2019    source источник


Ответы (3)


--cluster-yes правильный вариант!

person Leonardo Oliveira    schedule 24.07.2019

EDIT: ответ Леонардо Оливейры справедливо указывает, что вариант --cluster-yes позволит избежать подсказки. Например:

redis-cli --cluster create host1:6379 host2:6379 host3:6379 --cluster-yes

Начиная с текущей версии Redis (5.0.5), кажется, нет флага под --cluster, который может отключить или автоматически ответить на интерактивный вопрос:

$ redis-cli --cluster help
Cluster Manager Commands:
  create         host1:port1 ... hostN:portN
                 --cluster-replicas <arg>
  check          host:port
                 --cluster-search-multiple-owners
  info           host:port
  fix            host:port
                 --cluster-search-multiple-owners
  reshard        host:port
                 --cluster-from <arg>
                 --cluster-to <arg>
                 --cluster-slots <arg>
                 --cluster-yes
                 --cluster-timeout <arg>
                 --cluster-pipeline <arg>
                 --cluster-replace
  rebalance      host:port
                 --cluster-weight <node1=w1...nodeN=wN>
                 --cluster-use-empty-masters
                 --cluster-timeout <arg>
                 --cluster-simulate
                 --cluster-pipeline <arg>
                 --cluster-threshold <arg>
                 --cluster-replace
  add-node       new_host:new_port existing_host:existing_port
                 --cluster-slave
                 --cluster-master-id <arg>
  del-node       host:port node_id
  call           host:port command arg arg .. arg
  set-timeout    host:port milliseconds
  import         host:port
                 --cluster-from <arg>
                 --cluster-copy
                 --cluster-replace
  help

Используя echo, вы можете выполнить команду и автоматически ответить на приглашение:

echo "yes" | redis-cli --cluster create host1:6379 host2:6379 host3:6379

модуль Ansible Redis поддерживает только несколько команд, а не --cluster, поэтому вам придется создать свою собственную логику с задачами команд/оболочки:

- name: Create cluster
  shell: echo "yes" | redis-cli --cluster create host1:6379 host2:6379 host3:6379
  run_once: true
  when: not cluster_setup_done
person Jona Koudijs    schedule 21.06.2019
comment
Неизвестная опция или неправильное количество аргументов для: '--cluster' - person Alexey Sh.; 16.03.2021
comment
это был устаревший redis-cli. 6.2.0 работает нормально - пишет Не удалось подключиться к Redis по адресу 127.0.0.1:7100: Отказано в подключении - person Alexey Sh.; 16.03.2021

Ну, я не знаю об ansible части. Но официальный сайт Redis предоставляет способ создать кластер с помощью скрипта в небольшом интерактивном режиме. -режим.

Создание кластера Redis с помощью скрипта create-cluster (дополнительные сведения см. в документации)

Если вы не хотите создавать кластер Redis, настроив и запустив отдельные экземпляры вручную, как описано выше, существует гораздо более простая система (но вы не изучите такое же количество рабочих деталей).

Просто проверьте каталог utils/create-cluster в дистрибутиве Redis. Внутри есть скрипт с именем create-cluster (то же имя, что и каталог, в котором он содержится), это простой скрипт bash. Чтобы запустить кластер из 6 узлов с 3 мастерами и 3 ведомыми, просто введите следующие команды:

create-cluster start
create-cluster create

Ответьте «да» на шаге 2, когда утилита redis-cli потребует, чтобы вы приняли макет кластера.

Теперь вы можете взаимодействовать с кластером, первый узел по умолчанию запускается с порта 30001. Когда вы закончите, остановите кластер с помощью:

create-cluster stop

Пожалуйста, прочтите README внутри этого каталога для получения дополнительной информации о том, как запустить скрипт.

Вы можете попробовать реализовать это, если это вам как-то поможет!
Ура :)

person Ayushi Jain    schedule 09.04.2019