Skip to content

KunlunBase集群管理接口

kunlundb edited this page Jul 13, 2022 · 1 revision

KunlunBase在0.9版本之后,增加了运维监控平台(Xpanel), 通过集群管理(Cluster_mgr)的HTTP命令接口,可以实现对整个集群环境进行管理和监控。

以下是详细的命令接口介绍:

获取cluster工作状态,POST接口:

curl -d "{\"job_type\":\"get_status\",\"job_id\":\"uuid999\"}" 
http://127.0.0.1:57000

由于创建集群,和恢复一个新集群,会生成新的集群名称,通过get_status这个命令获取状态时,如果返回result为succeed,那info就是新集群的名称。

命令接收:

{"result":"accept"}

成功返回:

{"result":"done","info":"something done"}

正在工作:

{"result":"ongoing","info":"something ongoing"}

失败返回:

{"result":"failed","info":"something error"}

1. 创建机器, 异步,需要查询,不阻塞其他操作。

  • 返回result=done/failed, info:create machine succeed(或者错误信息)。

  • 操作表记录:info:create machine succeed(或者错误信息)。

  • 路径为根路径,必须存在,total_mem单位是Mbyte。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"create_machine",
"hostaddr":"127.0.0.1",
"rack_id":"1",
"datadir":"/home/kunlun;/nvme2",
"logdir":"/home/kunlun;/nvme3",
"wal_log_dir":"/home/kunlun",
"comp_datadir":"/nvme2",
"total_mem":"1024",
"total_cpu_cores":"8",
"user_name":"zhangsan"
}

2. 更新机器, 异步,需要查询,不阻塞其他操作。

  • 返回result=done/failed时, info:update machine succeed(或者错误信息)。

  • 操作表记录:info:update machine succeed(或者错误信息)。

  • 路径为根路径,必须存在,total_mem单位是Mbyte。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"update_machine",
"hostaddr":"127.0.0.1",
"rack_id":"1",
"datadir":"/home/kunlun;/nvme2",
"logdir":"/home/kunlun;/nvme3",
"wal_log_dir":"/home/kunlun",
"comp_datadir":"/nvme2",
"total_mem":"4096",
"total_cpu_cores":"8",
"user_name":"zhangsan"
}

3. 删除机器, 异步,需要查询,不阻塞其他操作。

  • 返回result=done/failed时, info:delete machine succeed(或者错误信息)。

  • 操作表记录:info:delete machine succeed(或者错误信息)。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"delete_machine",
"hostaddr":"127.0.0.1",
"user_name":"zhangsan"
}

4. 创建集群, 异步,需要查询。

  • 返回result=done时, info:集群名称。

  • 操作表记录:info:create cluster succeed(或者错误信息)。

  • max_storage_size单位是G, innodb_size单位是G。

  • innodb_size按要求先默认1G吧,范围1-16G。

  • user_name为网页端使用,保存到操作记录里面。

  • machine为指定安装机器,以machine0开始。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"create_cluster",
"ha_mode":"mgr",
"shards":"2",
"nodes":"1",
"comps":"1",
"max_storage_size":"20",
"max_connections":"6",
"cpu_cores":"8",
"innodb_size":"1",
"user_name":"zhangsan",
"machinelist":
[
{"hostaddr":"127.0.0.2"},
{"hostaddr":"127.0.0.3"}
]
}

5. 删除集群, 异步,需要查询。

  • 返回result=done时, info:集群名称。

  • 操作表记录:info:delete cluster succeed(或者错误信息)。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"delete_cluster",
"cluster_name":"cluster001",
"user_name":"zhangsan"
}

6. 在现有集群上,新增分片,可以增加多个。

  • 返回result=done时, info:shard2;shard3。

  • 操作表记录:info:add shards succeed(或者错误信息)。

  • 分片名称排列,分隔符改为分号,因为之前创建机器的路径也是分号,统一了比较好。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"add_shards",
"cluster_name":"cluster001",
"shards":"2",
"user_name":"zhangsan",
"machinelist":
[
{"hostaddr":"127.0.0.2"},
{"hostaddr":"127.0.0.3"}
]
}

7. 在现有集群上,删除分片,只能一个一个删

  • 返回result=done时, info:删除分片名。

  • 操作表记录:info:delete shard succeed(或者错误信息)。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"delete_shard",
"cluster_name":"cluster001",
"shard_name":"shard1",
"user_name":"zhangsan"
}

8. 在现有集群上,新增计算节点,可以增加多个。

  • 返回result=done时, info:comp2;comp3。

  • 操作表记录:info:add comps succeed(或者错误信息)。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"add_comps",
"cluster_name":"cluster001",
"comps":"2",
"user_name":"zhangsan",
"machinelist":
[
{"hostaddr":"127.0.0.2"},
{"hostaddr":"127.0.0.3"}
]
}

9. 在现有集群上,删除计算节点,只能一个一个删。

  • 返回result=done时, info:删除计算节点名。

  • 操作表记录:info:delete shard succeed(或者错误信息)。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"delete_comp",
"cluster_name":"cluster001",
"comp_name":"comp1",
"user_name":"zhangsan"
}

10. 为集群所有分片增加node, 异步,需要查询。

  • 带有shard_name字段,只增加该分片,否则所有分片都增加。

  • 返回result=done时, info:ip:port;ip:port,分隔符分号。

  • 操作表记录:info:add nodes succeed(或者错误信息)。

  • 该操作只能是MGR模式,先备份分片,创建出新NODE, 把备份恢复到新NODE, 将新NODE加入分片。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"add_nodes",
"cluster_name":"cluster001",
"shard_name":"shard1",
"nodes":"2",
"user_name":"zhangsan",
"machinelist":
[
{"hostaddr":"127.0.0.2"},
{"hostaddr":"127.0.0.3"}
]
}

11. 某个分片删除node, 异步,需要查询。

  • 返回result=done时, info:ip:port,分隔符分号。

  • 操作表记录:info:delete node succeed(或者错误信息)。

  • 该操作只能是MGR模式,先备份分片,创建出新NODE, 把备份恢复到新NODE, 将新NODE加入分片。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"delete_node",
"cluster_name":"cluster001",
"shard_name":"shard1",
"ip":"127.0.0.1",
"port":"57338",
"user_name":"zhangsan"
}

12. 备份集群, 异步,需要查询。

  • 返回result=done时, info:备份的时间。

  • 操作表记录:info:backup cluster succeed(或者错误信息)。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"backup_cluster",
"backup_cluster_name":"cluster001",
"user_name":"zhangsan"
}

13. 恢复集群, 异步,需要查询,该命令关闭,不给客户执行。

  • 返回result=done时, info:恢复集群名称。

  • 操作表记录:info:restore cluster succeed(或者错误信息)。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"restore_cluster",
"timestamp":"2021-12-20 19:22:20",
"backup_cluster_name":"cluster003",
"restore_cluster_name":"cluster004",
"user_name":"zhangsan"
}

14. 恢复出新集群, 异步,需要查询

  • 返回result=done时, info:新集群名称。

  • 操作表记录:info:restore new cluster succeed(或者错误信息)。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"restore_new_cluster",
"timestamp":"2021-12-20 19:22:20",
"backup_cluster_name":"cluster003",
"user_name":"zhangsan",
"machinelist":
[
{"hostaddr":"127.0.0.2"},
{"hostaddr":"127.0.0.3"}
]
}

15. 获取元数据MGR模式,同步返回。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"get_meta_mode"
}

16. 获取元数据节点列表,同步返回。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"get_meta"
}

17. 获取所有集群列表,同步返回。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"get_cluster"
}

18. 获取集群存储节点列表,同步返回。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"get_storage",
"cluster_name":"cluster003"
}

19. 获取集群计算节点列表,同步返回。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"get_computer",
"cluster_name":"cluster003"
}

20. 获取实例变量,同步返回。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"get_variable",
"variable":"innodb_buffer_pool_size",
"ip":"127.0.0.1",
"port":"57338"
}

21. 设置实例变量,同步返回。

  • 优先整型value_int, 找不到再找字符串value_str
{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"set_variable",
"variable":"innodb_buffer_pool_size",
"value_int":"134217728",
"value_str":"134217728",
"ip":"127.0.0.1",
"port":"57338"
}

22. 控制实例,异步,需要查询。

  • 包括停止(stop)/启动(start)/重启(restart)三个操作。
{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"control_instance",
"control":"stop",
"ip":"127.0.0.1",
"port":"57338",
"user_name":"zhangsan"
}

23. 更新prometheus数据,异步,需要查询。

  • 机器IP,从元数据表读取,PORT从配置文件读取。
{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"update_prometheus",
"user_name":"zhangsan"
}

24. prometheus连接到PostgreSQL。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"postgres_exporter",
"ip":"127.0.0.1",
"port":"57030",
"user_name":"zhangsan"
}

25. prometheus连接到MySQL。

{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"mysqld_exporter",
"ip":"127.0.0.1",
"port":"57330",
"user_name":"zhangsan"
}

END

Clone this wiki locally