Базовая репликация в Redis

Оригинальное сообщение: https://koalatea.io/redis-replicate/

Введение

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

Настройка

В этой статье мы будем использовать docker и docker compose, поэтому начните с их установки.

  • Docker install: https://docs.docker.com/engine/install/
  • Docker Compose: https://docs.docker.com/compose/install/

Затем создайте новый файл docker-compose.yml.

Добавьте следующие строки в начало, чтобы объявить нашу версию и сервисы:

version: "3.2"
services:
Войти в полноэкранный режим Выйти из полноэкранного режима

Предупреждение, Redis все еще использует старый язык Master и Slave, но он устарел и должен быть изменен.

Учитывая это, давайте добавим наш ведущий (главный) сервис под названием redis. Здесь все стандартно, за исключением того, что мы передаем REDIS_REPLICATION_MODE=master.

redis:
    image: "redis:alpine"
    command: redis-server --requirepass some_pass
    ports:
     - "6379:6379"
    volumes:
      - $PWD/redis-data:/var/lib/redis
      - $PWD/redis.conf:/usr/local/etc/redis/redis.conf
    environment:
     - REDIS_REPLICATION_MODE=master
Вход в полноэкранный режим Выйти из полноэкранного режима

Далее добавим один ведомый (рабочий) сервер. Здесь мы изменим порт локального отображения на 6378, а режим репликации установим на slave.

redis2:
  image: "redis:alpine"
  command: redis-server --requirepass some_pass
  ports:
    - "6378:6379"
  volumes:
    - $PWD/redis-data:/var/lib/redis
    - $PWD/redis.conf:/usr/local/etc/redis/redis.conf
  environment:
    - REDIS_REPLICATION_MODE=slave
Вход в полноэкранный режим Выход из полноэкранного режима

Полный файл выглядит следующим образом.

version: "3.2"
services:
 redis:
    image: "redis:alpine"
    command: redis-server --requirepass some_pass
    ports:
     - "6379:6379"
    volumes:
      - $PWD/redis-data:/var/lib/redis
      - $PWD/redis.conf:/usr/local/etc/redis/redis.conf
    environment:
     - REDIS_REPLICATION_MODE=master

 redis2:
    image: "redis:alpine"
    command: redis-server --requirepass some_pass
    ports:
     - "6378:6379"
    volumes:
      - $PWD/redis-data:/var/lib/redis
      - $PWD/redis.conf:/usr/local/etc/redis/redis.conf
    environment:
     - REDIS_REPLICATION_MODE=slave
Вход в полноэкранный режим Выход из полноэкранного режима

Теперь запустите службы с помощью docker-compose up.

Подключение к серверам Redis

Далее нам нужно подключиться к нашим серверам Redis. Для этого я использую GUI с открытым исходным кодом:

  • https://github.com/qishibo/AnotherRedisDesktopManager

Нажмите «New Connection» и введите информацию, как показано ниже. Вы можете изменить имя подключения на любое, какое захотите. Для этого я назвал его «Main». Пароль должен быть some_pass, если вы использовали файл yml выше.

Сделайте то же самое для рабочего, но измените порт на 6378 и измените имя соединения.

Репликация сервера

Для начала разверните первый сервер и добавьте новый ключ.

Теперь откройте соединение с рабочим сервером и нажмите кнопку cli для подключения к серверу.

Сначала установите мастер-пасс на some_pass (поскольку мы использовали один и тот же пароль для обоих серверов).

config set masterauth some_pass
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Затем используйте команду replicaof, чтобы указать на главный сервер.

replicaof redis 6379
Войти в полноэкранный режим Выход из полноэкранного режима

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

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

replicaof no one
Войти в полноэкранный режим Выйти из полноэкранного режима

Заключение

Вот и все по основам репликации. Это поможет вам, если вы хотите быстро скопировать некоторые данные для тестирования. Есть еще много интересного, но это должно быть хорошим началом.

Оцените статью
devanswers.ru
Добавить комментарий