Одна команда / скрипт для поиска и гриппа sh всех мастеров в кластере Redis - PullRequest
1 голос
/ 23 января 2020

Можем ли мы запустить одну команду / скрипт, чтобы найти и передать sh всех мастеров в кластере Redis? Я пытаюсь запустить FLUSHALL на всех мастерах в моем кластере одновременно. Также всякий раз, когда один из моих хозяев терпит неудачу, раб этого неудавшегося хозяина становится Мастером. поэтому, когда он меняется на master, он должен запустить команду FLUSHALL. Есть ли встроенные функции для этого?

Ответы [ 2 ]

1 голос
/ 23 января 2020

Redis-cli может сделать что-то подобное со следующим синтаксисом:

redis-cli --cluster call 1.2.3.4:9876 flushall

Где порт ip: является одним из узлов вашего кластера. Это запустит команду на всех узлах.

0 голосов
/ 23 января 2020

Посмотрите на https://redis.io/commands/cluster-nodes и соответствующие команды.

Вывод команды CLUSTER NODES представляет собой разделенную пробелами строку CSV, где каждая строка представляет узел в кластере. Ниже приведен пример вывода:

07c3...b91 127...1:30004@31004 slave e7d1eecce10fd6bb5eb35b9f99a514335d9ba9ca 0 1426238317239 4 connected
67ed...fa1 127...1:30002@31002 master - 0 1426238316232 2 connected 5461-10922
292f...f4f 127...1:30003@31003 master - 0 1426238318243 3 connected 10923-16383
6ec2...e01 127...1:30005@31005 slave 67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1 0 1426238316232 5 connected
824f...ac3 127...1:30006@31006 slave 292f8b365bb7edb5e285caf0b7e6ddc7265d2f4f 0 1426238317741 6 connected
e7d1...9ca 127...1:30001@31001 myself,master - 0 0 1 connected 0-5460

Каждая строка состоит из следующих полей:

  • id
  • ip:port@cport
  • flags
  • master / slave
  • ping-sent
  • pong-recv
  • config-epoch
  • состояние соединения
  • слот слот ... слот

Итак, с помощью этой команды вы найдете всех мастеров (и рабов) по типу в четвертом поле.

Вам потребуется реализовать служба мониторинга, определяющая, когда следует запускать команды FLUSHALL.

...