Создание Redis-кластера
Redis-кластер — это один или несколько хостов базы данных, между которыми можно настроить репликацию. Репликация работает по умолчанию в любом кластере из более чем 1 хоста: хост-мастер принимает запросы на запись, асинхронно дублируя изменения в репликах.
Количество хостов, которые можно создать вместе с Redis-кластером, зависит от выбранного типа хоста:
-
В кластере с типом хостов high-memory можно создать неограниченное число хостов (от 1 до пределов текущей квоты).
-
В кластере с типом хостов burstable можно создать только один хост.
Как создать кластер Redis
-
В консоли управления выберите каталог, в котором нужно создать кластер БД.
-
Выберите сервис Managed Service for Redis.
-
Нажмите кнопку Создать кластер.
-
Введите имя кластера в поле Имя кластера. Имя кластера должно быть уникальным в рамках Yandex.Cloud.
-
Выберите окружение, в котором нужно создать кластер (после создания кластера окружение изменить невозможно):
PRODUCTION
— для стабильных версий ваших приложений.PRESTABLE
— для тестирования, в том числе самого сервиса Managed Service for Redis. В Prestable-окружении раньше появляются новая функциональность, улучшения и исправления ошибок. При этом не все обновления обеспечивают обратную совместимость.
-
Выберите версию СУБД.
-
Если требуется, включите шардирование кластера.
Важно
Включить шардирование можно только при создании нового кластера. Шардировать уже созданный нешардированный кластер невозможно, как и отключить шардирование кластера, для которого оно включено.
-
Настройте класс хостов кластера:
- Выберите тип хостов — он определяет их гарантированную долю vCPU. Хосты типа high-memory работают с полным использованием ядра, а burstable — с частичным.
- Выберите объем оперативной памяти для хоста.
- Выберите размер диска. Доступный размер диска зависит от объема оперативной памяти и ограничен квотами и лимитами. Минимальный размер диска в 2 раза больше выбранного объема оперативной памяти, максимальный — в 8 раз больше.
-
В блоке Настройки кластера в поле Пароль укажите пароль пользователя, от 8 до 128 символов.
-
В блоке Сеть выберите сеть, к подсетям которой будут подключены хосты.
-
В блоке Хосты нажмите на кнопку Добавить хост и выберите зону доступности и подсеть, к которой будет подключен хост. Создайте необходимое количество хостов. Для изменения зоны доступности и добавленного хоста нажмите на значок карандаша в строке хоста.
Если вы включили шардирование, укажите названия шардов.
-
При необходимости задайте дополнительные настройки кластера:
-
Начало резервного копирования (UTC) — время по UTC, когда требуется начать резервное копирование кластера (в 24-часовом формате). Если время не задано, резервное копирование начнется в 22:00 UTC.
-
Окно обслуживания — настройки окна технического обслуживания. С их помощью вы можете указать предпочтительное время начала проведения операций по техническому обслуживанию хостов кластера (например, можно выбрать время, когда кластер наименее нагружен запросами):
- Чтобы указать предпочтительное время начала окна технического обслуживания, выберите пункт по расписанию и задайте нужные день недели и час дня в UTC (Coordinated Universal Time), выбрав значения из выпадающих списков.
- Чтобы разрешить проведение операций технического обслуживания в любое время, выберите пункт произвольное.
Операции по техническому обслуживанию могут включать в себя: обновление версии СУБД, применение патчей и так далее.
-
-
Нажмите кнопку Создать кластер.
Если у вас еще нет интерфейса командной строки Yandex.Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать кластер:
-
Проверьте, есть ли в каталоге подсети для хостов кластера:
$ yc vpc subnet list
Если ни одной подсети в каталоге нет, создайте нужные подсети в сервисе VPC.
-
Посмотрите описание команды CLI для создания кластера:
$ yc managed-redis cluster create --help
-
При создании кластера с помощью CLI нельзя напрямую указать тип хоста и объем оперативной памяти. Вместо этого выберите подходящий класс хостов. Чтобы просмотреть доступные классы хостов, выполните команду:
$ yc managed-redis resource-preset list
-
Укажите параметры кластера в команде создания (в примере приведены не все флаги):
$ yc managed-redis cluster create \ --name <имя кластера> \ --environment <окружение, prestable или production> \ --network-name <имя сети> \ --host zone-id=<зона доступности>,subnet-id=<идентификатор подсети> \ --resource-preset <класс хоста> \ --disk-size <размер хранилища в гигабайтах> \ --password=<пароль пользователя> \ --backup-window-start <время начала резервного копирования в формате ЧЧ:ММ:СС>
Идентификатор подсети
subnet-id
необходимо указывать, если в выбранной зоне доступности создано 2 и больше подсетей.
Terraform позволяет быстро создать облачную инфраструктуру в Yandex.Cloud. Состав инфраструктуры определяется с помощью конфигурационных файлов, в которых указываются требуемые облачные ресурсы и их параметры.
Если у вас ещё нет Terraform, установите его и настройте провайдер.
Чтобы создать кластер:
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
- Кластер базы данных — описание кластера и его хостов.
- Сеть — описание облачной сети, в которой будет расположен кластер. Если подходящая сеть у вас уже есть, описывать ее повторно не нужно.
- Подсети — описание подсетей, к которым будут подключены хосты кластера. Если подходящие подсети у вас уже есть, описывать их повторно не нужно.
Пример структуры конфигурационного файла:
resource "yandex_mdb_redis_cluster" "<имя кластера>" { name = "<имя кластера>" environment = "<окружение>" network_id = "<идентификатор сети>" config { password = "<пароль>" } resources { resource_preset_id = "<класс хоста>" disk_size = <размер диска> } host { zone = "<зона доступности>" subnet_id = "<идентификатор подсети>" } } resource "yandex_vpc_network" "<имя сети>" { name = "<имя сети>" } resource "yandex_vpc_subnet" "<имя подсети>" { name = "<имя подсети>" zone = "<зона доступности>" network_id = "<идентификатор сети>" v4_cidr_blocks = ["<диапазон>"] }
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера.
-
Проверьте корректность конфигурационных файлов.
- В командной строке перейдите в каталог, в котором вы создали конфигурационный файл.
- Выполните проверку с помощь команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет. Это проверочный этап: ресурсы не будут созданы.
-
Создайте кластер.
- Если в конфигурации нет ошибок, выполните команду:
terraform apply
- Подтвердите создание ресурсов.
После этого в указанном каталоге будут созданы все требуемые ресурсы, а в терминале отобразятся IP-адреса виртуальных машин. Проверить появление ресурсов и их настройки можно в консоли управления.
- Если в конфигурации нет ошибок, выполните команду:
Примеры
Создание кластера с одним хостом
Чтобы создать кластер с одним хостом, следует передать один параметр --host
.
Допустим, нужно создать Redis-кластер со следующими характеристиками:
- С именем
myredis
. - В окружении
production
. - В сети
default
. - С одним хостом класса
hm1.nano
в подсетиb0rcctk2rvtr8efcch64
, в зоне доступностиru-central1-c
. - С быстрым сетевым хранилищем (
network-ssd
) объемом 16 ГБ. - C паролем
user1user1
.
Запустите следующую команду:
$ yc managed-redis cluster create \
--name myredis \
--environment production \
--network-name default \
--resource-preset hm1.nano \
--host zone-id=ru-central1-c,subnet-id=b0rcctk2rvtr8efcch64 \
--disk-size 16 \
--password=user1user1
Допустим, нужно создать Redis-кластер и сеть для него со следующими характеристиками:
- С именем
myredis
. - В окружении
production
. - В облаке с идентификатором
b1gq90dgh25bebiu75o
. - В каталоге
myfolder
. - В новой сети
mynet
. - С одним хостом класса
hm1.nano
в новой подсетиmysubnet
, в зоне доступностиru-central1-c
. Подсетьmysubnet
будет иметь диапазон10.5.0.0/24
. - С быстрым сетевым хранилищем (
network-ssd
) объемом 16 ГБ. - C паролем
user1user1
.
Конфигурационный файл для такого кластера выглядит так:
provider "yandex" {
token = "<OAuth или статический ключ сервисного аккаунта>"
cloud_id = "b1gq90dgh25bebiu75o"
folder_id = "${data.yandex_resourcemanager_folder.myfolder.id}"
zone = "ru-central1-c"
}
resource "yandex_mdb_redis_cluster" "myredis" {
name = "myredis"
environment = "PRODUCTION"
network_id = "${yandex_vpc_network.mynet.id}"
config {
password = "user1user1"
}
resources {
resource_preset_id = "hm1.nano"
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_subnet" "mysubnet" {
name = "mysubnet"
zone = "ru-central1-c"
network_id = "${yandex_vpc_network.mynet.id}"
v4_cidr_blocks = ["10.5.0.0/24"]
}