Описание qluster rest api API

Версия: 0.1.0

Эндпоинты

/is-leader

Метод: GET Описание: возвращает 200, если данный узел — лидер кластера Ответы:

  • 200 — данный узел — лидер кластера
  • 412
  • 417
  • 500
  • 530
  • 531

/map

Метод: GET Описание: возвращает карту кластера и настройки Ответы:

  • 200 — ok
  • 412
  • 500
  • 531

/info

Метод: GET Описание: возвращает информацию о кластере, необходимую для запуска ранее добавленного узла Ответы:

  • 200 — ok
  • 412
  • 500
  • 531

/config

Метод: GET Описание: получить конфигурацию кластера Ответы:

  • 200 — ok
  • 412
  • 500
  • 531Метод: POST Описание: обновить конфигурацию кластера
  • Тип содержимого: application/json
    • Схема: object Ответы:
  • 200 — ok
  • 410
  • 412
  • 417
  • 420
  • 500
  • 530
  • 531

/db-config

Метод: GET Описание: получить конфигурацию базы данных Ответы:

  • 200 — ok
  • 412
  • 500
  • 531

/leader

Метод: GET Описание: получить адреса лидера Ответы:

  • 200 — ok
  • 412
  • 500
  • 530
  • 531Метод: POST Описание: изменить лидера Параметры:
  • node (query, обязательный) — идентификатор нового лидера Ответы:
  • 200 — ok
  • 412
  • 500
  • 530
  • 531

/node

Метод: POST Описание: добавить новый узел к кластеру (все новые узлы вначале становятся слушателями) Параметры:

  • ip (query, обязательный) — IP-адрес узла-слушателя
  • role (query, обязательный) — роль узла Ответы:
  • 200 — ok
  • 410
  • 412
  • 417
  • 420
  • 500
  • 530
  • 531

/node/{node}

Метод: PATCH Описание: проапгрейдить слушателя в полноценный узел Параметры:

  • node (path, обязательный) — идентификатор узла
  • db-port (query, обязательный) — порт базы данных
  • api-port (query, обязательный) — порт rest api Ответы:
  • 200 — ok
  • 410
  • 412
  • 417
  • 420
  • 500
  • 530
  • 531Метод: DELETE Описание: удалить узел из кластера Параметры:
  • node (path, обязательный) — идентификатор узла Ответы:
  • 200 — ok
  • 410
  • 412
  • 417
  • 420
  • 500
  • 530
  • 531

/node-down/{node}

Метод: POST Описание: с qhb проблемы, теперь она не может участвовать в выборах и быть репликой qcp Параметры:

  • node (path, обязательный) — идентификатор узла Ответы:
  • 200 — ok
  • 410
  • 412
  • 417
  • 420
  • 500
  • 530
  • 531

/sql/readonly

Метод: GET Описание: получить хеши запросов, которые ничего в базу не пишут Ответы:

  • 200 — ok
  • 412
  • 500
  • 531

/rpc

Метод: GET Описание: человекочитаемые события кластера и rpc Ответы:

  • 200 — ok
  • 500

/events

Метод: GET Описание: события кластера Ответы:

  • 200 — ok
  • 500


Компоненты

Схемы

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 voting
  • heartbeat-interval (object): Периодичность, с которой лидер должен посылать heartbeat
  • replication-factor (integer): на сколько узлов реплицируется лог, прежде чем его можно зафиксировать (0 - слабая репликация, достаточно, чтобы лог оказался на лидере)
  • quorum-replication (boolean): если включено, то в replication_factor подставляется значение n/2 + 1
  • replication-retry-interval (object): через какое время повторно реплицировать лог, если ответ не был получен
  • autoremove-enabled (boolean): если включено, то лидер будет удалять из кластера узлы, которых не видит половина кластера
  • autoremove-minimum (integer): чтобы автоудаление работало, количество узлов кластера должно быть больше этого значения

NodeRole

  • Тип: string

Node

информация об узле кластера

  • Тип: object Поля:
  • id (object): идентификатор узла
  • ip (string): ipv4/ipv6 адрес узла
  • db-port (object): порт, на котором висит postgres
  • api-port (object): порт, на котором висит rest api
  • role (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