Redis+MongoDB
April 17, 2023
YC Redis. Create and update
В данной статье рассматриваются примеры создания и изменения для кластера Redis в YC.
- Если создавать кластер с публичным доступом, то без tls шифрования не обойтись. Его использование обязательно.
- Использовать 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