Описание qluster rest api API
Версия: 0.1.0
Эндпоинты
/is-leader
Метод: GET
Описание: возвращает 200, если данный узел — лидер кластера
Ответы:
200— данный узел — лидер кластера412—417—500—530—531—
/map
Метод: GET
Описание: возвращает карту кластера и настройки
Ответы:
200— ok412—500—531—
/info
Метод: GET
Описание: возвращает информацию о кластере, необходимую для запуска ранее добавленного узла
Ответы:
200— ok412—500—531—
/config
Метод: GET
Описание: получить конфигурацию кластера
Ответы:
200— ok412—500—531— Метод:POSTОписание: обновить конфигурацию кластера- Тип содержимого:
application/json- Схема:
objectОтветы:
- Схема:
200— ok410—412—417—420—500—530—531—
/db-config
Метод: GET
Описание: получить конфигурацию базы данных
Ответы:
200— ok412—500—531—
/leader
Метод: GET
Описание: получить адреса лидера
Ответы:
200— ok412—500—530—531— Метод:POSTОписание: изменить лидера Параметры:node(query, обязательный) — идентификатор нового лидера Ответы:200— ok412—500—530—531—
/node
Метод: POST
Описание: добавить новый узел к кластеру (все новые узлы вначале становятся слушателями)
Параметры:
ip(query, обязательный) — IP-адрес узла-слушателяrole(query, обязательный) — роль узла Ответы:200— ok410—412—417—420—500—530—531—
/node/{node}
Метод: PATCH
Описание: проапгрейдить слушателя в полноценный узел
Параметры:
node(path, обязательный) — идентификатор узлаdb-port(query, обязательный) — порт базы данныхapi-port(query, обязательный) — порт rest api Ответы:200— ok410—412—417—420—500—530—531— Метод:DELETEОписание: удалить узел из кластера Параметры:node(path, обязательный) — идентификатор узла Ответы:200— ok410—412—417—420—500—530—531—
/node-down/{node}
Метод: POST
Описание: с qhb проблемы, теперь она не может участвовать в выборах и быть репликой qcp
Параметры:
node(path, обязательный) — идентификатор узла Ответы:200— ok410—412—417—420—500—530—531—
/sql/readonly
Метод: GET
Описание: получить хеши запросов, которые ничего в базу не пишут
Ответы:
200— ok412—500—531—
/rpc
Метод: GET
Описание: человекочитаемые события кластера и rpc
Ответы:
200— ok500—
/events
Метод: GET
Описание: события кластера
Ответы:
200— ok500—
Компоненты
Схемы
NodeId
идентификатор узла
- Тип:
integer
Term
логическое время кластера
- Тип:
integer
LogIndex
lsn логов кластера
- Тип:
integer
Port
- Тип:
integer
Duration
промежуток времени в человекочитаемом формате
- Тип:
string
Config
настройки кластера
- Тип:
objectПоля: node-timeout(object): Если в течение этого времени узел не находит лидера, то он инициирует предвыборыpre-voting-timeout(object): В течение этого времени должны завершиться предвыборыleader-voting-timeout(object): Если в течение этого времени выборы не дают лидера, то переходим на стадию pre votingheartbeat-interval(object): Периодичность, с которой лидер должен посылать heartbeatreplication-factor(integer): на сколько узлов реплицируется лог, прежде чем его можно зафиксировать (0 - слабая репликация, достаточно, чтобы лог оказался на лидере)quorum-replication(boolean): если включено, то в replication_factor подставляется значение n/2 + 1replication-retry-interval(object): через какое время повторно реплицировать лог, если ответ не был полученautoremove-enabled(boolean): если включено, то лидер будет удалять из кластера узлы, которых не видит половина кластераautoremove-minimum(integer): чтобы автоудаление работало, количество узлов кластера должно быть больше этого значения
NodeRole
- Тип:
string
Node
информация об узле кластера
- Тип:
objectПоля: id(object): идентификатор узлаip(string): ipv4/ipv6 адрес узлаdb-port(object): порт, на котором висит postgresapi-port(object): порт, на котором висит rest apirole(object): роль узла в кластере
ClusterMap
карта кластера
- Тип:
objectПоля: leader(object): лидер кластераnodes(object): все узлы кластера
ClusterLog
- Тип:
objectПоля: index(object): lsn логаterm(object): логическое время кластераpayload(object):
ClusterInfo
- Тип:
objectПоля: term(object): логическое время кластераapplied-index(object): lsn кластера, примененный к машине состоянийconfig(object): настройки кластераlogs(array): логи кластера
ReadonlyStatements
- Тип:
array