10. REST API
REST API используется, как внутри кластера, так и извне. Внутри кластера API в основном используется, как инструмент получения оперативной информации о репликации и получения файлов архива. Извне, такие сервисы, как HA-Proxy или Gobetween могут получать статус узла, для корректного проксирования запросов.
По-умолчанию порт API находится на 5030.
10.1. Внешнее REST API
10.1.1. /master
Код возврата 200, если узел находится в режиме master или 503
В JSON также возвращается текущий статус узла.
{
"mode": "master"
}
10.1.2. /slave
Код возврата 200, если узел находится в режиме slave или 503
В JSON также возвращается текущий статус узла.
{
"mode": "slave"
}
10.1.3. /status
Возвращает json со статусом узла:
Пример:
{
"allow_failover": true,
"api_url": "http://127.0.0.1:5030",
"databases": {
"491a3e52-41e6-461b-9b10-aa7e2f8ea1bb": {
"alias": "testdb1",
"dsn": "127.0.0.1/3050:testdb1",
"generation": 1,
"guid": "491a3e52-41e6-461b-9b10-aa7e2f8ea1bb",
"in_sync": true,
"initializing": false,
"master_guid": "ED881F74-47E6-49BC-BA72-4B18FEE7B7B6",
"mode": "master",
"path": "/tmp/cook/sync_node0/database1.fdb",
"progress": 0,
"progress_total": 0,
"replication_status": {
"async_dir": "/tmp/cook/sync_node0/replication/6dbfcb0f-b9f7-4611-b987-5a2bea241f7a/logs/1/491a3e52-41e6-461b-9b10-aa7e2f8ea1bb/",
"db_sequence": 0,
"mode": 1,
"sequence": 0,
"sync_targets": {
"127.0.0.1/3051:testdb1": 1
}
},
"sequence": 0
},
"8d20765b-3510-4582-8e63-e9272e6d493e": {
"alias": "testdb2",
"dsn": "127.0.0.1/3050:testdb2",
"generation": 1,
"guid": "8d20765b-3510-4582-8e63-e9272e6d493e",
"in_sync": true,
"initializing": false,
"master_guid": "991F93A9-FB00-4B4C-9D50-197D5AE09212",
"mode": "master",
"path": "/tmp/cook/sync_node0/database2.fdb",
"progress": 0,
"progress_total": 0,
"replication_status": {
"async_dir": "/tmp/cook/sync_node0/replication/6dbfcb0f-b9f7-4611-b987-5a2bea241f7a/logs/1/8d20765b-3510-4582-8e63-e9272e6d493e/",
"db_sequence": 0,
"mode": 1,
"sequence": 0,
"sync_targets": {
"127.0.0.1/3051:testdb2": 1
}
},
"sequence": 0
}
},
"in_sync": true,
"maintenance": false,
"master": true,
"mode": "master",
"priority": 0,
"rdb_aux_port": 3060,
"rdb_endpoint": "127.0.0.1/3050",
"rdb_host": "127.0.0.1",
"rdb_pending_restart": false,
"rdb_port": 3050,
"rdb_version": "5.0.0.0",
"restrict_master": [
false,
""
],
"sync_cluster": true,
"sync_node": true,
"sync_targets_nodes": [
"node1.cook.red-soft.ru"
]
}
10.2. Внутреннее REST API
10.2.1. /archive/<GUID>/<generation>/<sequence>
Копирование существующего архива с любого узла.
GUID - GUID базы данных в кластере
generation - номер поколения архивов
sequence - порядковый номер архива
Если архив существует, возвращает бинарный поток с файлом архива репликации, иначе - 404
10.2.2. /database/<GUID>
Копирование базы данных с master.
GUID - GUID базы данных в кластере
Если база данных готова для копирования, возвращает бинарный поток с файлом базы данных, иначе - 503
10.2.3. /database/add
Добавление базы данных в кластер c текущего master узла.
В POST запросе должны быть передан json для создания новой базы данных:
{
"alias": "database",
"database": "/path/to/database",
"properties": {
"property": "value"
},
"replication_options": {
"option": "value"
}
}
10.2.4. /database/<GUID>/rm
Удаление базы данных из кластера c текущего master узла.