HTTP API для работы с кластером
В этом разделе приведен список HTTP-адресов, через которые выполняется взаимодействие с кластером Tarantool DB.
Доступно с версии 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"}}