HTTP API для работы с кластером¶
В этом разделе приведен список HTTP-адресов, через которые выполняется взаимодействие с кластером Tarantool DB.
/sync¶
Доступно с версии 1.2.6.
POST /sync
Задать синхронный режим для пользовательских и системных спейсов кластера.
Это означает, что для каждого спейса указывается опция space_opts.is_sync
со значением true.
При этом асинхронными остаются системный спейс _sequence_data, а также локальные и временные спейсы
(space_opts.is_local=true и
space_opts.temporary=true).
Синхронный режим для спейсов будет задан при соблюдении условий ниже:
в наборе реплик задан параметр
failover.replicasets.*.synchro_mode=true;в наборе реплик есть владелец синхронной очереди – значение box.info.synchro.queue.owner() не равно 0.
Запрос может быть отправлен на любой экземпляр кластера. Запрос возвращает список и состояние спейсов для каждого набора реплик в следующем формате:
status– состояние, указывающее успешность включения синхронной репликации в наборе реплик. Возможные статусы:success– синхронная репликация включена;skipped– включение синхронной репликации пропущено на данном наборе реплик. Возможные причины:набор реплик не владеет синхронной очередью;
набор реплик состоит из одного экземпляра;
набор реплик имеет параметр
all_rwсо значениемtrue;
error– произошла ошибка при включении синхронной репликации. Возможные ошибки:"tarantool-storage-1:3301": timed out– не удалось подключиться к мастер-узлу;Instance is no longer the leader (reason: synchro)– узел больше не является лидером;synchro_mode is enabled, but synchro queue is not claimed– для координатора отказоустойчивости включен параметрsynchro_mode=true, но синхронная очередь не захвачена;
async_spaces– список асинхронных спейсов в наборе реплик;sync_spaces– список синхронных спейсов в наборе реплик;error– сообщение об ошибке, возвращается при получении состоянияstatus=error.
Запрос возвращает один из статусов ниже:
HTTP-статус
200– в случае успеха возвращает состояниеstatus=successилиstatus=skipped;HTTP-статус
500– при выполнении запроса возникла ошибка, получено состояниеstatus=error.
Пример запроса:
curl -X POST "http://localhost:8081/sync"
Пример успешного ответа:
{
"storage-1": {
"status": "success",
"async_spaces": [
"_sequence_data",
"vinyl_defer_delete",
"some_local_space"
],
"sync_spaces": [
"_space",
"_bucket"
]
},
"storage-2": {
"status": "success",
"async_spaces": [
"_sequence_data",
"vinyl_defer_delete",
"some_local_space"
],
"sync_spaces": [
"_space",
"_bucket"
]
},
"storage-3": {
"status": "success",
"async_spaces": [
"_sequence_data",
"vinyl_defer_delete",
"some_local_space"
],
"sync_spaces": [
"_space",
"_bucket"
]
}
}
Пример ошибки:
{
"storage-1": {
"status": "error",
"async_spaces": [],
"sync_spaces": [],
"error": "\"tarantool-storage-1-spb:3301\": timed out"
}
}