|
-module(agCluster).
|
|
-include("erlArango.hrl").
|
|
|
|
-compile(inline).
|
|
-compile({inline_size, 128}).
|
|
-compile([export_all, nowarn_export_all]).
|
|
|
|
%% doc_address:https://www.arangodb.com/docs/stable/http/cluster.html
|
|
|
|
% 集群的HTTP接口
|
|
% 本章介绍了ArangoDB群集的REST API。
|
|
% 服务器ID
|
|
% 服务器角色
|
|
% 集群统计
|
|
% 集群健康
|
|
% 集群维护
|
|
% 机构
|
|
% 如何修复与坏簇distributeShardsLike集在描述修理章节。
|
|
|
|
|
|
% 了解服务器的内部ID
|
|
% GET /_admin/server/id
|
|
% 返回集群中服务器的ID。如果服务器未在集群模式下运行,则请求将失败。
|
|
% 返回码
|
|
% 200:当服务器以群集模式运行时返回。
|
|
% 500:当服务器未在群集模式下运行时返回。
|
|
serverId(PoolNameOrSocket) ->
|
|
agHttpCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_admin/server/id">>, [], undefined).
|
|
|
|
% 返回集群中服务器的角色
|
|
% GET /_admin/server/role
|
|
% 返回集群中服务器的角色。该角色在结果的role属性中返回。角色的可能返回值是:
|
|
% SINGLE:服务器是没有集群的独立服务器
|
|
% COORDINATOR:服务器是集群中的协调器
|
|
% PRIMARY:服务器是集群中的DB-Server
|
|
% SECONDARY:不再使用此角色
|
|
% AGENT:服务器是集群中的代理节点
|
|
% UNDEFINED:在集群中,如果无法确定服务器角色,则返回UNDEFINED。
|
|
% 在所有情况下均返回HTTP 200。
|
|
% error:始终为假
|
|
% code:HTTP状态码,始终为200
|
|
% errorNum:服务器错误号
|
|
% role:之一[ SINGLE,COORDINATOR,PRIMARY,SECONDARY,AGENT,UNDEFINED ]
|
|
serverRole(PoolNameOrSocket) ->
|
|
agHttpCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_admin/server/role">>, [], undefined).
|
|
|
|
% 数据库服务器的查询统计信息
|
|
% 允许查询集群中DB-Server的统计信息
|
|
% GET /_admin/clusterStatistics
|
|
% 查询参数
|
|
% DBserver(必填):查询给定DB-Server的统计信息
|
|
% 返回码
|
|
% 200:
|
|
% 400:数据库服务器的ID
|
|
% 403:
|
|
clusterStats(PoolNameOrSocket, QueryPars) ->
|
|
QueryBinary = agMiscUtils:spellQueryPars(QueryPars),
|
|
agHttpCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_admin/clusterStatistics", QueryBinary/binary>>, [], undefined).
|
|
|
|
% 返回监督(机构)评估的集群的运行状况
|
|
% GET /_admin/cluster/health
|
|
% 查询群集的运行状况以进行监视。该响应是一个JSON对象,包含标准code,error,errorNum,和errorMessage字段适当。特定于端点的字段如下:
|
|
% ClusterId:标识集群的UUID字符串
|
|
% Health:一个对象,该对象包含群集中每个节点的描述性子对象。
|
|
% <nodeID>:中的每个条目Health将由节点ID键入,并包含以下属性:
|
|
% Endpoint:代表服务器网络端点的字符串。
|
|
% Role:服务器扮演的角色。可能的值是"AGENT","COORDINATOR"和"DBSERVER"。
|
|
% CanBeDeleted:布尔值,表示是否可以安全地从群集中删除节点。
|
|
% Version:该节点使用的ArangoDB的版本字符串。
|
|
% Engine:该节点使用的存储引擎。
|
|
% Status:指示监督(机构)评估的节点运行状况的字符串。对于协调器和DB-Servers节点运行状况,应将其视为真实的主要来源。如果节点正常响应请求,则为"GOOD"。如果错过了一个心跳,那就是"BAD"。如果在缺少心跳约15秒钟后通过监督宣布它失败,则会对其进行标记"FAILED"。
|
|
% 此外,它还将具有以下属性:
|
|
% 协调器和数据库服务器
|
|
% SyncStatus:节点上次报告的同步状态。该值主要用于确定的值Status。可能的值包括"UNKNOWN","UNDEFINED","STARTUP","STOPPING","STOPPED","SERVING","SHUTDOWN"。
|
|
% LastAckedTime:ISO 8601时间戳记,指定接收到的最后一个心跳。
|
|
% ShortName:代表服务器的简称的字符串,例如"Coordinator0001"。
|
|
% Timestamp:ISO 8601时间戳记,指定接收到的最后一个心跳。(已弃用)
|
|
% Host:可选字符串,指定主机(如果已知)。
|
|
% 仅协调员
|
|
% AdvertisedEndpoint:表示已播报端点的字符串(如果已设置)。(例如,外部IP地址或负载平衡器,可选)
|
|
% 代理商
|
|
% Leader:此节点视为领导者的代理的ID。
|
|
% Leading:此座席是否为领导者(true)或不是(false)。
|
|
% LastAckedTime:自上次以来的时间(acked以秒为单位)。
|
|
% 返回码
|
|
% 200:
|
|
clusterHealth(PoolNameOrSocket) ->
|
|
agHttpCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_admin/cluster/health">>, [], undefined).
|
|
|
|
% 启用或禁用集群监督(代理)维护模式
|
|
% PUT /_admin/cluster/maintenance
|
|
% 通过此API,您可以临时启用监督维护模式。请注意,启用维护模式后,不会进行任何类型的自动故障转移。该集群监控会自动重新激活自身60分钟禁用后。
|
|
% 要启用维护模式,请求正文必须包含字符串"on"。要禁用它,请发送字符串"off"(请注意,该字符串 必须为小写并包括引号)。
|
|
% 返回码
|
|
% 200:
|
|
% 400:
|
|
% 501:
|
|
% 504:
|
|
setClusterMaintenance(PoolNameOrSocket, OnOrOff) ->
|
|
agHttpCli:callAgency(PoolNameOrSocket, ?AgPut, <<"/_admin/cluster/maintenance">>, [], OnOrOff).
|
|
|
|
%%%%%%%%%%%%%%% Agency ??????????????????????????
|
|
|
|
|
|
|
|
|
|
|