Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
Yandex Managed Service for Redis
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Изменение настроек кластера и базы данных
    • Подключение к базе данных
      • Подготовка к подключению
      • Подключение к нешардированному кластеру
      • Подключение к шардированному кластеру
    • Остановка и запуск кластера
    • Обновление версии Redis
    • Управление хостами кластера
    • Управление шардами
    • Управление резервными копиями
    • Переключение мастера
    • Мониторинг состояния кластера и хостов
    • Удаление кластера
  • Практические руководства
    • Хранение сессий PHP в Managed Service for Redis
    • Миграция базы данных в Managed Service for Redis
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
    • Сеть в Managed Service for Redis
    • Шардирование
    • Резервные копии
    • Репликация и отказоустойчивость
    • Поддерживаемые клиенты
    • Управление памятью в Managed Service for Redis
    • Доступные команды Managed Service for Redis
    • Квоты и лимиты
    • Типы хранилища
    • Техническое обслуживание
    • Настройки Redis
  • Управление доступом
  • Правила тарификации
    • Действующие правила
    • Архив
      • До 1 февраля 2020 года
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • BackupService
      • ClusterService
      • ResourcePresetService
      • OperationService
    • REST (англ.)
      • Overview
      • Backup
        • Overview
        • get
        • list
      • Cluster
        • Overview
        • addHosts
        • addShard
        • backup
        • create
        • delete
        • deleteHosts
        • deleteShard
        • get
        • getShard
        • list
        • listBackups
        • listHosts
        • listLogs
        • listOperations
        • listShards
        • move
        • rebalance
        • rescheduleMaintenance
        • restore
        • start
        • startFailover
        • stop
        • streamLogs
        • update
        • updateHosts
      • ResourcePreset
        • Overview
        • get
        • list
      • Operation
        • Overview
        • get
  • История изменений
  • Вопросы и ответы
    • Общие вопросы
  1. Пошаговые инструкции
  2. Создание кластера

Создание Redis-кластера

Статья создана
Yandex.Cloud
  • Как создать кластер Redis
  • Примеры
    • Создание кластера с одним хостом
    • Создание шардированного кластера

Redis-кластер — это один или несколько хостов базы данных, между которыми можно настроить репликацию. Репликация работает по умолчанию в любом кластере из более чем 1 хоста: хост-мастер принимает запросы на запись, асинхронно дублируя изменения в репликах.

Подробнее об устройстве кластера Managed Service for Redis см. в разделе Взаимосвязь ресурсов в Managed Service for Redis.

Примечание

  • Количество хостов, которые можно создать вместе с Redis-кластером, зависит от выбранного типа хранилища, класса хостов и использования шардирования.
  • Доступные типы хранилища зависят от выбранного класса хостов.

Как создать кластер Redis

Важно

С 1 июня 2022 года поддержка Redis версии 5.0 прекращается. Подробнее см. в разделе Поддерживаемые версии.

Консоль управления
CLI
Terraform
API
  1. В консоли управления перейдите в каталог, в котором нужно создать кластер БД.

  2. Выберите сервис Managed Service for Redis.

  3. Нажмите кнопку Создать кластер.

  4. В блоке Базовые параметры:

    • Введите имя кластера в поле Имя кластера. Имя кластера должно быть уникальным в рамках каталога.

    • (опционально) Добавьте описание кластера.

    • Выберите окружение, в котором нужно создать кластер (после создания кластера окружение изменить невозможно):

      • PRODUCTION — для стабильных версий ваших приложений.
      • PRESTABLE — для тестирования, в том числе самого сервиса Managed Service for Redis. В Prestable-окружении раньше появляются новая функциональность, улучшения и исправления ошибок. При этом не все обновления обеспечивают обратную совместимость.
    • Выберите версию СУБД.

    • Если требуется, включите шардирование кластера.

      Важно

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

    • Если требуется, включите поддержку шифрованных SSL-соединений с кластером (для версии Redis 6.0 или старше).

      Важно

      Включить шифрование соединений можно только при создании нового кластера. Отключить шифрование в кластере, для которого оно включено, невозможно.

  5. В блоке Класс хоста:

    • Выберите Платформу.
    • Укажите Тип виртуальной машины, на которой будут развернуты хосты.
    • Выберите конфигурацию хостов — она определяет технические характеристики виртуальных машин, на которых будут развернуты хосты БД. При изменении конфигурации меняются характеристики всех уже созданных хостов.
  6. В блоке Размер хранилища:

    • Выберите тип хранилища:

      • либо более гибкое хранилище — на сетевых SSD-дисках (network-ssd) или на нереплицируемых SSD-дисках (network-ssd-nonreplicated);
      • либо более быстрое хранилище — на локальных SSD-дисках (local-ssd).

      От выбранного типа хранилища зависит, с каким шагом можно будет изменить его размер:

      • хранилище на сетевых SSD-дисках — с шагом 13 ГБ;
      • хранилище на нереплицируемых SSD-дисках — с шагом 93 ГБ;
      • хранилище на локальных SSD-дисках — с шагом 100 ГБ.
    • Выберите размер хранилища. Доступный размер хранилища ограничен квотами и лимитами.

  7. В блоке Настройки кластера в поле Пароль укажите пароль пользователя, от 8 до 128 символов.

  8. В блоке Сетевые настройки выберите облачную сеть для размещения кластера и группы безопасности для сетевого трафика кластера. Может потребоваться дополнительная настройка групп безопасности для того, чтобы можно было подключаться к кластеру.

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

    Если вы включили шардирование, укажите названия шардов.

  10. При необходимости задайте дополнительные настройки кластера:

    • Начало резервного копирования (UTC) — время по UTC, когда требуется начать резервное копирование кластера (в 24-часовом формате). Если время не задано, резервное копирование начнется в 22:00 UTC.

    • Окно обслуживания — настройки времени технического обслуживания:

      • Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт произвольное (по умолчанию).
      • Чтобы указать предпочтительное время начала обслуживания, выберите пункт по расписанию и укажите нужные день недели и час дня по UTC. Например, можно выбрать время, когда кластер наименее загружен.

      Операции по техническому обслуживанию проводятся для включенных и выключенных кластеров. Они могут включать в себя: обновление версии СУБД, применение патчей и так далее.

    • Защита от удаления — управляет защитой кластера от непреднамеренного удаления пользователем.

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

  11. При необходимости задайте настройки СУБД.

  12. Нажмите кнопку Создать кластер.

Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Чтобы создать кластер:

  1. Проверьте, есть ли в каталоге подсети для хостов кластера:

    yc vpc subnet list
    

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

  2. Посмотрите описание команды CLI для создания кластера:

    yc managed-redis cluster create --help
    
  3. При создании кластера с помощью CLI нельзя напрямую указать тип хоста и объем оперативной памяти. Вместо этого выберите подходящий класс хостов. Чтобы просмотреть доступные классы хостов, выполните команду:

    yc managed-redis resource-preset list
    
  4. Укажите параметры кластера в команде создания (в примере приведены не все флаги):

    yc managed-redis cluster create \
      --name <имя кластера> \
      --environment <окружение, prestable или production> \
      --network-name <имя сети> \
      --host zone-id=<зона доступности>,subnet-id=<идентификатор подсети> \
      --security-group-ids <список идентификаторов групп безопасности> \
      --enable-tls \
      --resource-preset <класс хоста> \
      --disk-size <размер хранилища в гигабайтах> \
      --password=<пароль пользователя> \
      --backup-window-start <время начала резервного копирования в формате ЧЧ:ММ:СС>
      --deletion-protection=<защита от удаления кластера: true или false>
    

    Идентификатор подсети subnet-id необходимо указывать, если в выбранной зоне доступности создано 2 и больше подсетей.

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

Terraform позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). Terraform и его провайдеры распространяются под лицензией Mozilla Public License.

Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform или в зеркале.

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

Если у вас еще нет Terraform, установите его и настройте провайдер.

Чтобы создать кластер:

  1. Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:

    • Кластер базы данных — описание кластера и его хостов. При необходимости здесь же можно задать настройки СУБД.

    • Сеть — описание облачной сети, в которой будет расположен кластер. Если подходящая сеть у вас уже есть, описывать ее повторно не нужно.

    • Подсети — описание подсетей, к которым будут подключены хосты кластера. Если подходящие подсети у вас уже есть, описывать их повторно не нужно.

    Пример структуры конфигурационного файла для создания кластера с поддержкой SSL:

    terraform {
      required_providers {
        yandex = {
          source = "yandex-cloud/yandex"
        }
      }
    }
    
    provider "yandex" {
      token     = "<OAuth или статический ключ сервисного аккаунта>"
      cloud_id  = "<идентификатор облака>"
      folder_id = "<идентификатор каталога>"
      zone      = "<зона доступности>"
    }
    
    resource "yandex_mdb_redis_cluster" "<имя кластера>" {
      name                = "<имя кластера>"
      environment         = "<окружение: PRESTABLE или PRODUCTION>"
      network_id          = "<идентификатор сети>"
      security_group_ids  = [ "<идентификаторы групп безопасности>" ]
      tls_enabled         = true
      sharded             = <шардирование: true или false>
      deletion_protection = <защита от удаления кластера: true или false>
    
      config {
        password = "<пароль>"
        version  = "<версия Redis>"
      }
    
      resources {
        resource_preset_id = "<класс хоста>"
        disk_type_id       = "<тип хранилища>"
        disk_size          = <размер хранилища в гигабайтах>
      }
    
      host {
        zone      = "<зона доступности>"
        subnet_id = "<идентификатор подсети>"
      }
    }
    
    resource "yandex_vpc_network" "<имя сети>" { name = "<имя сети>" }
    
    resource "yandex_vpc_subnet" "<имя подсети>" {
      name           = "<имя подсети>"
      zone           = "<зона доступности>"
      network_id     = "<идентификатор сети>"
      v4_cidr_blocks = ["<диапазон>"]
    }
    

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

    1. Чтобы настроить время технического обслуживания (в т. ч. для выключенных кластеров), добавьте к описанию кластера блок maintenance_window:

      resource "yandex_mdb_redis_cluster" "<имя кластера>" {
        ...
        maintenance_window {
          type = <тип технического обслуживания: ANYTIME или WEEKLY>
          day  = <день недели для типа WEEKLY>
          hour = <час дня для типа WEEKLY>
        }
        ...
      }
      

      Где:

      • type — тип технического обслуживания:
        • ANYTIME — в любое время.
        • WEEKLY — по расписанию.
      • day — день недели для типа WEEKLY в формате DDD. Например, MON.
      • hour — час дня по UTC для типа WEEKLY в формате HH. Например, 21.

    Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера

  2. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  3. Создайте кластер.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

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

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

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

Воспользуйтесь методом API create и передайте в запросе:

  • Идентификатор каталога, в котором должен быть размещен кластер, в параметре folderId.
  • Имя кластера в параметре name.
  • Идентификаторы групп безопасности в параметре securityGroupIds.
  • Флаг tlsEnabled=true для создания кластера с поддержкой шифрованных SSL-соединений (для версии Redis 6.0 или старше).

Важно

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

Примеры

Создание кластера с одним хостом

CLI
Terraform

Чтобы создать кластер с одним хостом, передайте один параметр --host.

Допустим, нужно создать Redis-кластер со следующими характеристиками:

  • Имя myredis.
  • Версия 6.0.
  • Окружение — production.
  • Сеть default.
  • Один хост класса hm1.nano в подсети b0rcctk2rvtr8efcch64, в зоне доступности ru-central1-c и группе безопасности с идентификатором enp6saqnq4ie244g67sb.
  • С поддержкой SSL-соединений.
  • Хранилище на сетевых SSD-дисках (network-ssd) объемом 16 ГБ.
  • Пароль user1user1.
  • С защитой от случайного удаления кластера.

Запустите следующую команду:

yc managed-redis cluster create \
  --name myredis \
  --redis-version 6.0 \
  --environment production \
  --network-name default \
  --resource-preset hm1.nano \
  --host zone-id=ru-central1-c,subnet-id=b0rcctk2rvtr8efcch64 \
  --security-group-ids enp6saqnq4ie244g67sb \
  --enable-tls \
  --disk-type-id network-ssd \
  --disk-size 16 \
  --password=user1user1 \
  --deletion-protection=true

Допустим, нужно создать Redis-кластер и сеть для него со следующими характеристиками:

  • Имя myredis.
  • Версия 6.0.
  • Окружение — PRODUCTION.
  • Облако с идентификатором b1gq90dgh25bebiu75o.
  • Каталог с идентификатором b1gia87mbaomkfvsleds.
  • Новая сеть mynet.
  • Один хост класса s2.micro в новой подсети mysubnet, в зоне доступности ru-central1-c. Подсеть mysubnet будет иметь диапазон 10.5.0.0/24.
  • Новая группа безопасности redis-sg, разрешающая подключения через порт 6380 с любых адресов подсети mysubnet.
  • С поддержкой SSL-соединений.
  • Хранилище на сетевых SSD-дисках (network-ssd) объемом 16 ГБ.
  • Пароль user1user1.
  • С защитой от случайного удаления кластера.

Конфигурационный файл для такого кластера выглядит так:

terraform {
  required_providers {
    yandex = {
      source = "yandex-cloud/yandex"
    }
  }
}

provider "yandex" {
  token     = "<OAuth или статический ключ сервисного аккаунта>"
  cloud_id  = "b1gq90dgh25bebiu75o"
  folder_id = "b1gia87mbaomkfvsleds"
  zone      = "ru-central1-c"
}

resource "yandex_mdb_redis_cluster" "myredis" {
  name                = "myredis"
  environment         = "PRODUCTION"
  network_id          = yandex_vpc_network.mynet.id
  security_group_ids  = [ yandex_vpc_security_group.redis-sg.id ]
  tls_enabled         = true
  deletion_protection = true

  config {
    password = "user1user1"
    version  = "6.0"
  }

  resources {
    resource_preset_id = "s2.micro"
    disk_type_id       = "network-ssd"
    disk_size          = 16
  }

  host {
    zone      = "ru-central1-c"
    subnet_id = yandex_vpc_subnet.mysubnet.id
  }
}

resource "yandex_vpc_network" "mynet" { name = "mynet" }

resource "yandex_vpc_security_group" "redis-sg" {
  name       = "redis-sg"
  network_id = yandex_vpc_network.mynet.id

  ingress {
    description    = "Redis"
    port           = 6380
    protocol       = "TCP"
    v4_cidr_blocks = ["10.5.0.0/24"]
  }

  egress {
    description    = "Redis"
    port           = 6380
    protocol       = "TCP"
    v4_cidr_blocks = ["10.5.0.0/24"]
  }
}

resource "yandex_vpc_subnet" "mysubnet" {
  name           = "mysubnet"
  zone           = "ru-central1-c"
  network_id     = yandex_vpc_network.mynet.id
  v4_cidr_blocks = ["10.5.0.0/24"]
}

Создание шардированного кластера

Terraform

Допустим, нужно создать шардированный Redis-кластер со следующими характеристиками:

  • Имя myredis.
  • Окружение PRODUCTION.
  • Облако с идентификатором b1gq90dgh25bebiu75o.
  • Каталог с идентификатором b1gia87mbaomkfvsleds.
  • Новая сеть mynet.
  • Три подсети в сети mynet, по одной в каждой зоне доступности:
    • subnet-a с диапазоном 10.1.0.0/24;
    • subnet-b с диапазоном 10.2.0.0/24;
    • subnet-c с диапазоном 10.3.0.0/24.
  • Три хоста класса s2.micro, по одному в каждой подсети.
  • Новая группа безопасности redis-sg, разрешающая подключения через порты 6379 и 26379 (Redis Sentinel) с любых адресов подсетей.
  • Хранилище на сетевых SSD-дисках (network-ssd) объемом 16 ГБ.
  • Пароль user1user1.
  • С защитой от случайного удаления кластера.

Конфигурационный файл для такого кластера выглядит так:

terraform {
  required_providers {
    yandex = {
      source = "yandex-cloud/yandex"
    }
  }
}

provider "yandex" {
  token     = "<OAuth или статический ключ сервисного аккаунта>"
  cloud_id  = "b1gq90dgh25bebiu75o"
  folder_id = "b1gia87mbaomkfvsleds"
  zone      = "ru-central1-c"
}

resource "yandex_mdb_redis_cluster" "myredis" {
  name                = "myredis"
  environment         = "PRODUCTION"
  network_id          = yandex_vpc_network.mynet.id
  security_group_ids  = [yandex_vpc_security_group.redis-sg.id]
  sharded             = true
  deletion_protection = true

  config {
    password = "user1user1"
  }

  resources {
    resource_preset_id = "s2.micro"
    disk_type_id       = "network-ssd"
    disk_size          = 16
  }

  host {
    zone       = "ru-central1-a"
    subnet_id  = yandex_vpc_subnet.subnet-a.id
    shard_name = "shard1"
  }

  host {
    zone       = "ru-central1-b"
    subnet_id  = yandex_vpc_subnet.subnet-b.id
    shard_name = "shard2"
  }

  host {
    zone       = "ru-central1-c"
    subnet_id  = yandex_vpc.subnet.subnet-c.id
    shard_name = "shard3"
  }
}

resource "yandex_vpc_network" "mynet" { name = "mynet" }

resource "yandex_vpc_subnet" "subnet-a" {
  name           = "subnet-a"
  zone           = "ru-central1-a"
  network_id     = yandex_vpc_network.mynet.id
  v4_cidr_blocks = ["10.1.0.0/24"]
}

resource "yandex_vpc_subnet" "subnet-b" {
  name           = "subnet-b"
  zone           = "ru-central1-b"
  network_id     = yandex_vpc_network.mynet.id
  v4_cidr_blocks = ["10.2.0.0/24"]
}

resource "yandex_vpc_subnet" "subnet-c" {
  name           = "subnet-c"
  zone           = "ru-central1-c"
  network_id     = yandex_vpc_network.mynet.id
  v4_cidr_blocks = ["10.3.0.0/24"]
}

resource "yandex_vpc_security_group" "redis-sg" {
  name       = "redis-sg"
  network_id = yandex_vpc_network.mynet.id

  ingress {
    description    = "Redis"
    port           = 6379
    protocol       = "TCP"
    v4_cidr_blocks = [
      "10.1.0.0/24",
      "10.2.0.0/24",
      "10.3.0.0/24"
    ]
  }

  egress {
    description    = "Redis"
    port           = 6379
    protocol       = "TCP"
    v4_cidr_blocks = [
      "10.1.0.0/24",
      "10.2.0.0/24",
      "10.3.0.0/24"
    ]
  }

  ingress {
    description    = "Redis Sentinel"
    port           = 26379
    protocol       = "TCP"
    v4_cidr_blocks = [
      "10.1.0.0/24",
      "10.2.0.0/24",
      "10.3.0.0/24"
    ]
  }

  egress {
    description    = "Redis Sentinel"
    port           = 26379
    protocol       = "TCP"
    v4_cidr_blocks = [
      "10.1.0.0/24",
      "10.2.0.0/24",
      "10.3.0.0/24"
    ]
  }
}

Была ли статья полезна?

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Как создать кластер Redis
  • Примеры
  • Создание кластера с одним хостом
  • Создание шардированного кластера