3.patroni REST API
Patroni有丰富的REST API,这些接口他们在竞争领导者的时候会有用。通过patronictl
工具实现failovers/switchovers/reinitialize/restarts/reloads
,HAProxy或任何其他类型的负载平衡器来执行HTTP运行状况检查,当然也可以用于监视。下面是Patroni REST API端点的列表
健康检查端点
对于所有运行状况检查GET
请求,Patroni将返回一个JSON文档,其中包含节点的状态以及HTTP状态代码。如果您不需要或不需要JSON文档,则可以考虑使用OPTIONS
方法而不是GET
- 仅当
Patroni
节点作为领导者运行时,对Patroni REST API
的以下请求将返回HTTP
状态代码200:GET/
GET/master
GET/leader
GET/primary
GET/read-write
GET /replica
: replica运行状况检查端点。仅当patroni节点处于running
状态角色为副本且未设置noloadbalance
标签时,他才返回HTTP状态代码200GET/read-only
:像上述端点一样,也包括主节点GET/standby-leader
:当patroni节点在"standby cluster"作为领导者运行时返回HTTP状态码200GET/synchronous
orGET/sync
:当patroni节点作为同步备库运行时返回HTTP状态码200GET/asynchronous
orGET/async
:当patroni节点作为异步备库运行时返回HTTP状态码200GET/health
当PostgreSQL启动并且处于运行状态时返回HTTP状态码200
监控端点
GET/patroni
在patroni领导者竞争时会被使用。他也会被用来监控你的系统。该端点生成的JSON文档与运行状况检查端点生成的JSON具有相同的结构。
$ curl -s http://localhost:8008/patroni | jq .
{
"state": "running",
"postmaster_start_time": "2019-09-24 09:22:32.555 CEST",
"role": "master",
"server_version": 110005,
"cluster_unlocked": false,
"xlog": {
"location": 25624640
},
"timeline": 3,
"database_system_identifier": "6739877027151648096",
"patroni": {
"version": "1.6.0",
"scope": "batman"
}
}
集群状态端点
-
GET/cluster
端点生成一个描述当前集群拓扑和状态的JSON文档$ curl -s http://localhost:8008/cluster | jq . { "members": [ { "name": "postgresql0", "host": "127.0.0.1", "port": 5432, "role": "leader", "state": "running", "api_url": "http://127.0.0.1:8008/patroni", "timeline": 5, "tags": { "clonefrom"