Управление хостами кластера Sharded PostgreSQL
Вы можете управлять хостами кластера Managed Service for Sharded PostgreSQL, в том числе:
Получить список хостов в кластере
- Перейдите в сервис Yandex Managed Service for Sharded PostgreSQL.
- Нажмите на имя нужного кластера, затем выберите вкладку Хосты.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы получить список хостов в кластере, выполните команду:
yc managed-sharded-postgresql hosts list \
--cluster-name <имя_кластера>
Результат:
+----------------------------+----------------------+---------+--------+--------------------+-----------+
| NAME | CLUSTER ID | ROLE | HEALTH | ZONE ID | PUBLIC IP |
+----------------------------+----------------------+---------+--------+--------------------+-----------+
| rc1b***mdb.yandexcloud.kz | c9qp71dk1dfg******** | PRIMARY | ALIVE | kz1-b | true |
| rc1a***mdb.yandexcloud.kz | c9qp71dk1dfg******** | PRIMARY | ALIVE | kz1-a | false |
+----------------------------+----------------------+---------+--------+--------------------+-----------+
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.ListHosts и выполните запрос, например с помощью cURL
:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.yandexcloud.kz/managed-spqr/v1/clusters/<идентификатор_кластера>/hosts' -
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.ListHosts и выполните запрос, например с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/spqr/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>" }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.spqr.v1.ClusterService.ListHosts -
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Создать хост
Количество хостов INFRA, ROUTER и COORDINATOR в кластерах Managed Service for Sharded PostgreSQL ограничено квотами на количество CPU и объем памяти, которые доступны кластерам БД в вашем облаке. Чтобы проверить используемые ресурсы, откройте страницу Квоты
Чтобы создать хост:
-
Перейдите в сервис Yandex Managed Service for Sharded PostgreSQL.
-
Нажмите на имя нужного кластера и перейдите на вкладку Хосты.
-
Нажмите кнопку Создать хост.
-
Укажите параметры хоста:
- Зону доступности.
- Подсеть (если нужной подсети в списке нет, создайте ее).
- Тип хоста —
INFRA(для кластера со стандартным шардированием),ROUTERилиCOORDINATOR(для кластера с расширенным шардированием). - Выберите опцию Публичный доступ, если хост должен быть доступен извне Yandex Cloud.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы создать хост:
-
Запросите список подсетей кластера, чтобы выбрать подсеть для нового хоста:
yc vpc subnet listРезультат:
+----------------------+-----------+----------------------+---------------+-------------------+ | ID | NAME | NETWORK ID | ZONE | RANGE | +----------------------+-----------+----------------------+---------------+-------------------+ | b0cl69q1w2e3******** | default-d | enp6rq71w2e3******** | kz1-d | [172.16.**.**/20] | | e2lkj9q1w2e3******** | default-b | enp6rq71w2e3******** | kz1-b | [10.10.**.**/16] | | e9b9v2q1w2e3******** | default-a | enp6rq71w2e3******** | kz1-a | [172.16.**.**/20] | +----------------------+-----------+----------------------+---------------+-------------------+Если нужной подсети в списке нет, создайте ее.
-
Посмотрите описание команды CLI для добавления хостов:
yc managed-sharded-postgresql hosts add --help -
Выполните команду добавления хоста:
yc managed-sharded-postgresql hosts add \ --cluster-name <имя_кластера> \ --host zone-id=<зона_доступности>,subnet-id=<идентификатор_подсети>,type=<тип_хоста>Идентификатор подсети необходимо указать, если в зоне доступности больше одной подсети, в противном случае Managed Service for Sharded PostgreSQL автоматически выберет единственную подсеть.
Возможные значения для типа хоста —
infra(для кластера со стандартным шардированием),routerилиcoordinator(для кластера с расширенным шардированием).Также вы можете указать дополнительную опцию
assign-public-ipв параметре--hostдля управления публичным доступом к хосту:true— публичный доступ включен.false— публичный доступ выключен.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.AddHosts и выполните запрос, например с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-spqr/v1/clusters/<идентификатор_кластера>/hosts:batchCreate' \ --data '{ "hostSpecs": [ { "zoneId": "<зона_доступности>", "subnetId": "<идентификатор_подсети>", "assignPublicIp": <разрешить_публичный_доступ_к_хосту>, "type": "<тип_хоста>" }, { <аналогичный_набор_настроек_для_создаваемого_хоста_2> }, { ... }, { <аналогичный_набор_настроек_для_создаваемого_хоста_N> } ] }'Где
hostSpecs— массив новых хостов. Один элемент массива содержит настройки для одного хоста и имеет следующую структуру:zoneId— зона доступности.subnetId— идентификатор подсети.assignPublicIp— доступность хоста из интернета по публичному IP-адресу:trueилиfalse.type— тип хоста:infra(для кластера со стандартным шардированием),routerилиcoordinator(для кластера с расширенным шардированием).
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.AddHosts и выполните запрос, например с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/spqr/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "host_specs": [ { "zone_id": "<зона_доступности>", "subnet_id": "<идентификатор_подсети>", "assign_public_ip": <разрешить_публичный_доступ_к_хосту>, "type": "<тип_хоста>" }, { <аналогичный_набор_настроек_для_создаваемого_хоста_2> }, { ... }, { <аналогичный_набор_настроек_для_создаваемого_хоста_N> } ] }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.spqr.v1.ClusterService.AddHostsГде
host_specs— массив новых хостов. Один элемент массива содержит настройки для одного хоста и имеет следующую структуру:zone_id— зона доступности.subnet_id— идентификатор подсети.assign_public_ip— доступность хоста из интернета по публичному IP-адресу:trueилиfalse.type— тип хоста:infra(для кластера со стандартным шардированием),routerилиcoordinator(для кластера с расширенным шардированием).
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Изменить хост
Для каждого хоста в кластере Managed Service for Sharded PostgreSQL можно изменить настройки публичного доступа.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы изменить параметры хоста в кластере, выполните команду:
yc managed-sharded-postgresql hosts update <имя_хоста> \
--cluster-name <имя_кластера> \
--assign-public-ip=<публичный_доступ_к_хосту>
Где:
cluster-name— имя кластера.assign-public-ip— публичный доступ к хосту:trueилиfalse.
Имя хоста можно запросить со списком хостов в кластере.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.UpdateHosts и выполните запрос, например с помощью cURL
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask(одной строкой через запятую).curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-spqr/v1/clusters/<идентификатор_кластера>/hosts:batchUpdate' \ --data '{ "updateHostSpecs": [ { "updateMask": "assignPublicIp", "hostName": "<имя_хоста>", "assignPublicIp": <разрешить_публичный_доступ_к_хосту> }, { <аналогичный_набор_настроек_для_изменяемого_хоста_2> }, { ... }, { <аналогичный_набор_настроек_для_изменяемого_хоста_N> } ] }'Где
updateHostSpecs— массив изменяемых хостов. Один элемент массива содержит настройки для одного хоста и имеет следующую структуру:updateMask— перечень изменяемых параметров в одну строку через запятую.hostName— имя изменяемого хоста.assignPublicIp— доступность хоста из интернета по публичному IP-адресу:trueилиfalse.
Имя хоста можно запросить со списком хостов в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.UpdateHosts и выполните запрос, например с помощью gRPCurl
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
update_mask(в виде массива строкpaths[]).Формат перечисления настроек
"update_mask": { "paths": [ "<настройка_1>", "<настройка_2>", ... "<настройка_N>" ] }grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/spqr/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "update_host_specs": [ { "update_mask": { "paths": [ "assign_public_ip" ] }, "host_name": "<имя_хоста>", "assign_public_ip": <разрешить_публичный_доступ_к_хосту> }, { <аналогичный_набор_настроек_для_изменяемого_хоста_2> }, { ... }, { <аналогичный_набор_настроек_для_изменяемого_хоста_N> } ] }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.postgresql.v1.ClusterService.UpdateHostsГде
update_host_specs— массив изменяемых хостов. Один элемент массива содержит настройки для одного хоста и имеет следующую структуру:update_mask— перечень изменяемых параметров в виде массива строкpaths[].host_name— имя изменяемого хоста.assign_public_ip— доступность хоста из интернета по публичному IP-адресу:trueилиfalse.
Имя хоста можно запросить со списком хостов в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Удалить хост
Вы можете удалить хост типа INFRA, ROUTER или COORDINATOR из кластера Sharded PostgreSQL, если он не является единственным хостом соответствующего типа. Чтобы заменить единственный хост, сначала создайте новый хост, а затем удалите старый.
Чтобы удалить хост из кластера:
- Перейдите в сервис Yandex Managed Service for Sharded PostgreSQL.
- Нажмите на имя нужного кластера и выберите вкладку Хосты.
- В строке хоста, который вы хотите удалить, нажмите на значок
, выберите пункт Удалить и подтвердите удаление.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы удалить хост из кластера, выполните команду:
yc managed-sharded-postgresql hosts delete <имя_хоста> \
--cluster-name <имя_кластера>
Имя хоста можно запросить со списком хостов в кластере.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.DeleteHosts и выполните запрос, например с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-spqr/v1/clusters/<идентификатор_кластера>/hosts:batchDelete' \ --data '{ "hostNames": [ "<имя_хоста>" ] }'Где
hostNames— массив строк, состоящий из единственного элемента с именем удаляемого хоста. Имя хоста можно запросить со списком хостов в кластере. -
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.DeleteHosts и выполните запрос, например с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/spqr/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "host_names": [ "<имя_хоста>" ] }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.spqr.v1.ClusterService.DeleteHostsГде
host_names— массив строк, состоящий из единственного элемента с именем удаляемого хоста. Имя хоста можно запросить со списком хостов в кластере. -
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.