Redis+MongoDB
April 17, 2023

YC Redis. Create and update

В данной статье рассматриваются примеры создания и изменения для кластера Redis в YC.

Полезные заметки.

  1. Если создавать кластер с публичным доступом, то без tls шифрования не обойтись. Его использование обязательно.
  2. Использовать Sentinel с одним хостом нет необходимости.

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

С внешним доступом, включённой персистентностью, версией 7.0, двумя хостами и включённым tls.

export FOLDER=$(yc config get folder-id)
export ZONE=ru-central1-a
export SG=$(yc vpc sg get cam-db --format json | jq -r '.id')
export NETWORK=$(yc vpc network get cameda-test --format json | jq -r '.id')
export SUBNET=$(yc vpc subnet get subnet-a --format json | jq -r '.id')
yc managed-redis cluster create \
  --name cam-redis-test \
  --description "Redis test cluster" \
  --environment production \
  --network-id $NETWORK \
  --redis-version 7.0 \
  --password=MyBigPassw0rd \
  --host zone-id=$ZONE,subnet-id=$SUBNET,assign-public-ip \
  --host zone-id=$ZONE,subnet-id=$SUBNET,assign-public-ip,replica-priority=20 \
  --resource-preset hm1.nano \
  --disk-size 33 \
  --disk-type-id network-ssd \
  --backup-window-start 21:00:00 \
  --enable-tls \
  --persistence-mode ON \
  --security-group-ids $SG \
  --deletion-protection=false \
  --async

Без внешнего доступа, выключенной персистентности, версией 7.0, двумя хостами.

export FOLDER=$(yc config get folder-id)
export ZONE=ru-central1-a
export SG=$(yc vpc sg get cam-db --format json | jq -r '.id')
export NETWORK=$(yc vpc network get cameda-test --format json | jq -r '.id')
export SUBNET=$(yc vpc subnet get subnet-a --format json | jq -r '.id')
yc managed-redis cluster create \
  --name cam-redis-test \
  --description "Cameda Redis test" \
  --environment prestable \
  --network-id $NETWORK \
  --redis-version 7.0 \
  --password=MyBigPassw0rd \
  --host zone-id=$ZONE,subnet-id=$SUBNET \
  --host zone-id=$ZONE,subnet-id=$SUBNET,replica-priority=20 \
  --resource-preset hm1.nano \
  --disk-size 33 \
  --disk-type-id network-ssd \
  --backup-window-start 21:00:00 \
  --persistence-mode OFF \
  --security-group-ids $SG \
  --deletion-protection=false \
  --async

С внешним доступом, включённой персистентностью, версией 6.2, одним хостом.

export FOLDER=$(yc config get folder-id)
export ZONE=ru-central1-a
export SG=$(yc vpc sg get cam-db --format json | jq -r '.id')
export NETWORK=$(yc vpc network get cameda-test --format json | jq -r '.id')
export SUBNET=$(yc vpc subnet get subnet-a --format json | jq -r '.id')
yc managed-redis cluster create \
  --name cam-redis-test \
  --description "Cameda Redis test" \
  --environment production \
  --network-id $NETWORK \
  --redis-version 6.2 \
  --password=MyBigPassw0rd\
  --host zone-id=$ZONE,subnet-id=$SUBNET,assign-public-ip \
  --resource-preset hm1.nano \
  --disk-size 33 \
  --disk-type-id network-ssd \
  --enable-tls \
  --backup-window-start 21:00:00 \
  --persistence-mode ON \
  --security-group-ids $SG \
  --deletion-protection=false \
  --async

Подключение извне контура.

Подключение можно создать с ВМ Ubuntu, но не смог добиться того, чтобы работало с MacOS.

mkdir ~/.redis && \
wget "https://storage.yandexcloud.net/cloud-certs/CA.pem" \
--output-document ~/.redis/YandexInternalRootCA.crt && \
chmod 0655 ~/.redis/YandexInternalRootCA.crt
#Ubuntu
sudo apt-add-repository ppa:redislabs/redis && \
sudo apt update && sudo apt install --yes redis-tools

#MacOS
brew install redis-tools
redis-cli -h c-c9qi5goh69v6corpd1i4.rw.mdb.yandexcloud.net -a MyBigPassw0rd -p 6380

Подключение изнутри контура.

redis-cli \
   -h c-c9qn7e9nthuc4ha7tura.rw.mdb.yandexcloud.net \
   -a MyBigPassw0rd

Изменение кластера.

Включение/отключение персистентности.

yc redis cluster update --persistence-mode=OFF <cluster-id> --force --async
yc redis cluster update --persistence-mode=ON <cluster-id> --force --async

Время окна обновления.

При создании кластера нельзя указать время проведения обновления. Но это можно сделать через изменение кластера.

yc redis cluster update <cluster-id> --maintenance-window type=weekly,day=sat,hour=9

Время ТО будет: суббота 08:00 - 09:00

Установить/Удалить deletion protection с кластера.

yc redis cluster update <cluster-id> --deletion-protection=true --async
yc redis cluster update <cluster-id> --deletion-protection=false --async