Переключение мастера
В отказоустойчивом кластере Yandex Managed Service for Valkey™ из нескольких хостов вы можете переключить роль мастера с текущего хоста-мастера на хост-реплику. После этой операции текущий хост-мастер станет хостом-репликой для нового мастера.
Переключение в среднем занимает несколько минут, кластер в это время доступен.
Шардированный кластер содержит один или несколько хостов-мастеров — по одному на каждый шард. Переключение мастера для шардированного кластера осуществляется поочередно для каждого шарда.
Чтобы переключить мастер в нешардированном кластере:
- В консоли управления
перейдите в каталог с нешардированным кластером. - Выберите сервис Yandex Managed Service for Valkey™.
- Нажмите на имя нужного кластера, затем выберите вкладку Хосты.
- В строке хоста с ролью
MASTER
нажмите значок и выберите Переключение мастера. - В открывшемся окне выберите опцию Я хочу переключить мастер и нажмите кнопку Переключить.
Чтобы переключить мастер в шардированном кластере:
- В консоли управления
перейдите в каталог с шардированным кластером. - Выберите сервис Yandex Managed Service for Valkey™.
- Нажмите на имя нужного кластера, затем выберите вкладку Хосты.
- В строке хоста с ролью
MASTER
нажмите значок и выберите Переключение мастера. - В открывшемся окне нажмите кнопку Переключить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы переключить мастер в нешардированном кластере, выполните команду:
yc managed-redis cluster start-failover \
--name <имя_кластера>
Чтобы переключить мастер в шардированном кластере, выполните команду:
yc managed-redis cluster start-failover \
--name <имя_кластера> \
--hostnames <имя_текущего_мастера>
Имя кластера можно запросить со списком кластеров в каталоге, имя мастера для нужного вам шарда — со списком хостов в кластере.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом Cluster.StartFailover и выполните запрос, например, с помощью cURL
:Чтобы переключить мастер в нешардированном кластере:
curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.cloud.yandex.net/managed-redis/v1/clusters/<идентификатор_кластера>:startFailover'
Чтобы переключить мастер в шардированном кластере:
curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-redis/v1/clusters/<идентификатор_кластера>:startFailover' \ --data '{ "hostNames": [ "<имя_текущего_мастера>" ] }'
Идентификатор кластера можно запросить со списком кластеров в каталоге, имя текущего мастера — со списком хостов в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом ClusterService.StartFailover и выполните запрос, например, с помощью gRPCurl
:Чтобы переключить мастер в нешардированном кластере:
grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/redis/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.redis.v1.ClusterService.StartFailover
Чтобы переключить мастер в шардированном кластере:
grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/redis/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "host_names": [ "<имя_текущего_мастера>" ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.redis.v1.ClusterService.StartFailover
Идентификатор кластера можно запросить со списком кластеров в каталоге, имя текущего мастера — со списком хостов в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.