Настройка масштабируемости и высокой доступности кластера Redis

Настройка режима кластера, конфигурирование, обеспечение безопасности и выделение ресурсов в Amazon ElastiCache for Redis

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

Существует очень богатая экосистема клиентов Redis, поддерживающих возможности кластерного режима. Это позволяет невероятно облегчить работу с защищенными данными и обеспечить ее надежность, поскольку клиенты могут отслеживать расположение хэш-слотов в локальном кэше, что повышает производительность системы в целом.

Узел ElastiCache, создаваемый в этом учебном пособии, доступен на уровне бесплатного пользования.

Войти в панель управления Amazon ElastiCache »

Требования

На одном из приведенных в этом учебном пособии этапов вам потребуется подключиться к своему кластеру Redis, чтобы лично ознакомиться с его возможностями. Это значит, что вам понадобится доступ к инстансу EC2, на котором установлен клиент Redis. Если у вас уже есть инстанс EC2 с установленным клиентом Redis, вы можете пропустить шаг 1. В противном случае подключитесь к инстансу Amazon EC2 и следуйте приведенным ниже инструкциям для установки клиента Redis.

Если у вас нет компилятора для языка C, установите один из них, выполнив следующую команду.

$ sudo yum install gcc

Загрузите и скомпилируйте клиент Redis.

$ curl -O http://download.redis.io/redis-stable.tar.gz
$ tar xvzf redis-stable.tar.gz
$ cd redis-stable
$ make distclean  # Ubuntu systems only
$ make

Теперь вы готовы приступить к работе с учебным пособием.

Об этом учебном пособии
Время 10–20 минут                                           
Стоимость Доступен уровень бесплатного пользования
Пример использования Масштабирование; высокая доступность; приложение, работающее в режиме реального времени
Продукты AWS ElastiCache for Redis, уровень бесплатного пользования AWS
Аудитория Разработчики
Уровень Начинающий
Последнее обновление 5 июня 2019 г.

Шаг 1. Откройте панель управления ElastiCache

Откройте панель управления ElastiCache и выполните следующие действия:

1.1. В верхнем правом углу выберите регион для запуска кластера Redis.

1.2. Щелкните Get Started Now (Приступить к работе).

Шаг 2. Создайте кластер Redis в разделе Create your Redis Cluster (Создать кластер Redis)

2.1. Выберите Redis в качестве механизма для кластера.

2.2. Установите флажок напротив пункта Cluster Mode enabled (Режим кластера включен).

Шаг 3. Сконфигурируйте настройки в разделе Redis Settings (Настройки Redis)

3.1. Выберите для кластера Redis имя, например elc-tutorial.

3.2. Измените значение поля Node type (Тип узла) на cache.t2.micro. Этот тип узла вполне подойдет для учебного пособия, но в рабочих кластерах размер узла будет зависеть от конкретной рабочей нагрузки. Поэтому следует выбирать из семейства инстансов m5 или r5.

3.3. В поле Number of Shards (Количество сегментов) укажите 3. Это означает, что данные будут разделены между тремя различными основными узлами.

3.4. В поле Replicas per Shard (Количество реплик на сегмент) укажите 2. Это означает, что каждый основной узел будет иметь по две реплики. В случае сбоя выполняется автоматическая отработка отказа, и одна из реплик получает роль основного узла.

3.5. Выберите группу подсетей. Если вам нужна дополнительная информация о группах подсетей, воспользуйтесь этой документацией.

Шаг 4. Сконфигурируйте настройки в разделе Advanced Redis settings (Расширенные параметры Redis)

4.1. Установите флажок Multi-AZ with Auto-Failover (Развертывание в нескольких зонах доступности с автоматической отработкой отказа).

Каждый основной узел будет создан в отдельной зоне доступности, и каждая из его реплик также будет выделена в другую зону доступности. Это оптимальный вариант для повышения надежности.

В остальных полях оставьте значения по умолчанию.

Шаг 5. Сконфигурируйте настройки в разделе Security settings (Настройки безопасности)

Для этого примера шифрование не используется, но не забывайте о возможности настроить шифрование для данных как при хранении, так и при передаче.

5.1. Укажите значение в поле Security group (Группа безопасности) для кластера Redis.

Важно! Убедитесь, что эта группа безопасности разрешает входящие TCP-подключения для порта 6379. В противном случае вы не сможете подключиться к узлам Redis.

Шаг 6. Импорт данных в кластер

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

Шаг 7. Конфигурация копий

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

7.1. Снимите флажок Enable automatic backups (Включить автоматическое резервное копирование).

Шаг 8. Параметры обслуживания

8.1. Укажите окно обслуживания, которое соответствует вашим потребностям.

Для реальных систем следует оценить, в какой день и в какое время нагрузка на приложение будет минимальной. Для нашего примера просто укажите No preference (Нет предпочтений).

Шаг 9. Проверка и создание

Быстро просмотрите все значения полей в этой форме и нажмите Create (Создать).

9.1. Нажмите Create (Создать).

Кластер Redis будет автоматически инициализирован, а когда он получит состояние available (доступен), вы сможете перейти к шагу 10.

Если вы предпочитаете пользоваться интерфейсом командной строки Amazon, примените для создания кластера Redis приведенную ниже команду.

Если вы предпочитаете пользоваться интерфейсом командной строки Amazon, примените для создания кластера Redis приведенную ниже команду.

$ aws elasticache create-replication-group \
--replication-group-id elc-tutorial \
--replication-group-description "Tutorial example" \
--num-node-groups 3 \
--cache-node-type cache.t2.micro \
--cache-parameter-group default.redis5.0.cluster.on \
--engine redis \
--engine-version 5.0.3 \
--cache-subnet-group-name sn-value \
--security-group-ids sg-value \
--node-group-configuration \
"ReplicaCount=2,PrimaryAvailabilityZone='us-east-1a',ReplicaAvailabilityZones='us-east-1b','us-east-1c',Slots=0-5460" \
"ReplicaCount=2,PrimaryAvailabilityZone='us-east-1b',ReplicaAvailabilityZones='us-east-1c','us-east-1a',Slots=5461-10921" \
"ReplicaCount=2,PrimaryAvailabilityZone='us-east-1c',ReplicaAvailabilityZones='us-east-1a','us-east-1b',Slots=10922-16383"

Для аргумента --security-group-ids значение sg-value необходимо заменить на идентификатор группы безопасности, которую вы хотите использовать.

Аналогично для аргумента --cache-subnet-group-name замените значение sn-value на название группы подсетей. Для создания группы подсетей используйте следующую команду.

$ aws elasticache create-cache-subnet-group \
--cache-subnet-group-name elc-tutorial-subnet \
--cache-subnet-group-description "Tutorial Subnet Group" \
--subnet-ids sn-ids

Значение sn-ids необходимо заменить на список идентификаторов подсетей.

Если вы предпочитаете пользоваться интерфейсом командной строки Amazon, примените для создания кластера Redis указанный ниже запрос.

https://elasticache.us-east-1.amazonaws.com/
?Action=CreateReplicationGroup 
&CacheParameterGroup=default.redis5.0.cluster.on
&Engine=redis
&EngineVersion=5.0.3
&ReplicationGroupDescription=Tutorial%20example
&ReplicationGroupId=elc-tutorial
&NumNodeGroups=3
&PrimaryClusterId=elc-primary
&ReplicasPerNodeGroup=2
&Version=<version>
&SignatureVersion=4
&SignatureMethod=HmacSHA256
&Timestamp=<timestamp>
&X-Amz-Credential=<credential>

В предыдущем запросе укажите значения для аргументов Version (Версия), Timestamp (Временная метка) и X-Amz-Credential (Учетные данные Amazon).

Шаг 10. Подключитесь к Redis

Найдите адрес конфигурации для своего кластера Redis.

10.1. Нажмите стрелку, чтобы отобразить подробные сведения о кластере Redis.

10.2. Скопируйте значение параметра Configuration Endpoint (Адрес конфигурации).

Каждый раз, когда в примерах упоминается адрес, следует использовать имя узла из вашего адреса конфигурации.

10.4. Подключитесь к узлу Redis с помощью утилиты redis-cli.

$ ./src/redis-cli -c -h endpoint

10.5. Проверьте наличие подключения с помощью команды PING.

endpoint:6379> PING
	PONG

Шаг 11. Запустите обработку отказа

В настоящий момент у вас запущен работоспособный кластер Redis. Одной из особенностей режима кластера является возможность автоматического восстановления в случае отказа узла. Чтобы протестировать эту возможность, можно вручную инициировать обработку отказа. При этом будет выполнено следующее: будет выбрана реплика чтения, которая возьмет на себя роль основного узла, и после выполнения обработки отказа вы сможете подключиться к новому основному узлу. В это же время будет автоматически добавлена новая реплика, чтобы у кластера по-прежнему был один основной узел и две реплики.

Проверьте роль узла с помощью адреса из шага 10.

11.1. Проверьте роль адреса.

	endpoint:6379> ROLE
	1) "master"
 	...

Подключитесь к основному узлу. Если вы не подключились к нему, попробуйте воспользоваться другим адресом. У вас есть три попытки.

Если вы определили местоположение основного узла, выполните следующее действие.

11.2. Выберите любой узел, нажмите кнопку Action (Действие) и выберите пункт Failover primary (Обработать отказ основного узла).

Прочитайте сообщение, чтобы понять, что происходит, затем нажмите Continue (Продолжить). Одна из реплик станет новым основным узлом, а количество реплик, приходящихся на каждый основной узел, будет восстановлено. Чтобы проверить, что происходит, можно запустить команду CLUSTER NODES.

Шаг 12. Удаление кластера

В завершение эксперимента вы узнаете, как удалить кластер Redis, если он больше не нужен.

Чтобы удалить кластер Redis, перейдите на панель управления ElastiCache и следуйте приведенным далее инструкциям.

12.1. Выберите на панели слева пункт Redis.

Вы увидите все свои кластеры Redis.

12.2. Выберите кластер Redis, созданный для этого учебного пособия.

12.3. Нажмите Delete (Удалить).

12.4. Будет предложено создать окончательную резервную копию. Это рекомендуемое действие, но для этого учебного пособия оно не требуется. Выберите No (Нет) и нажмите Delete (Удалить).

Статус кластера изменится на «Удаление».

Поздравляем!

Вы создали кластер Redis с включенным режимом кластера. Узлы распределены по зонам доступности, и на них настроена автоматическая обработка отказов. Кроме того, вы получили некоторые рекомендации по развертыванию кластера Redis.

Была ли полезной информация, представленная в этом учебном пособии?

Спасибо!
Укажите, что вам понравилось.
Приносим извинения за причиненные неудобства
Вы обнаружили устаревшую, неточную или неподходящую информацию? Оставьте свой отзыв, чтобы мы могли улучшить качество предоставляемых услуг.

Подробнее

Подробнее о кластере Redis читайте в публикации Redis Cluster 101 в блоге. Материалы для быстрого начала работы, руководство разработчика и технические блоги с примерами использования см. на странице ресурсов.

Выбор правильного размера узла

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

Стратегии кэширования

Напоследок вы можете подробнее ознакомиться со стратегиями кэширования и рекомендациями для повышения производительности и надежности.