我正在使用此库的修改版本(https://github.com/kamermans/HAProxyAPI)来连接到我的所有loadbalancer实例。 但是,要知道连接的服务器是活动实例还是备份实例,我需要从统计信息中添加“bck”属性。 (我无法使用以下方法访问它:$ loadbalancer ['haproxy_stats'] - > info-> line-> data-> bck)
请注意,此属性:$ loadbalancer ['haproxy_stats'] - > health-> backup。不是我需要的,这只表示备份服务器是否存在于此负载均衡器中。
如何访问此属性?
示例Haproxy Stats来自:HAProxy_Stats :: get($ exec) - > getServiceStats($ interface,$ server);
结果(print_r)如下所示:
HAProxy_Stats_Service对象 ( [info] => HAProxy_Stats_Info对象 ( [map:protected] =>排列 ( [pxname] => proxy_name [svname] =>服务名称 [重量] =>重量 [pid] => PROCESS_ID [iid] => proxy_id [sid] => service_id为 [tracked] =>追踪 [type] =>类型 )
[type] => 2
[proxy_name] => core_loadbalancer
[service_name] => Core03
[process_id] => 1
[proxy_id] => 2
[service_id] => 3
[weight] => 1
[tracked] =>
[line:protected] => HAProxy_Stats_Line Object
(
[data:protected] => Array
(
[pxname] => core_loadbalancer
[svname] => Core03
[qcur] => 0
[qmax] => 0
[scur] => 0
[smax] => 0
[slim] => 20000
[stot] => 0
[bin] => 0
[bout] => 0
[dreq] =>
[dresp] => 0
[ereq] =>
[econ] => 0
[eresp] => 0
[wretr] => 0
[wredis] => 0
[status] => UP
[weight] => 1
[act] => 0
[bck] => 1
[chkfail] => 6
[chkdown] => 0
[lastchg] => 523133
[downtime] => 0
[qlimit] =>
[pid] => 1
[iid] => 2
[sid] => 3
[throttle] =>
[lbtot] => 0
[tracked] =>
[type] => 2
[rate] => 0
[rate_lim] =>
[rate_max] => 0
[check_status] => L4OK
[check_code] =>
[check_duration] => 0
[hrsp_1xx] => 0
[hrsp_2xx] => 0
[hrsp_3xx] => 0
[hrsp_4xx] => 0
[hrsp_5xx] => 0
[hrsp_other] => 0
[hanafail] => 0
[req_rate] =>
[req_rate_max] =>
[req_tot] =>
[cli_abrt] => 0
[srv_abrt] => 0
[] =>
)
)
)
对象继续但有一个字符限制......
答案 0 :(得分:0)
如果是issue was created for it,这个问题会得到更快的回答,但是我觉得迟到的时间要晚得多:)
这确实是正确的财产:
$loadbalancer['haproxy_stats']->health->backup
但是,如果您正在检查负载均衡器BACKEND的统计信息,它将只返回备份节点的数量。如果您想知道单个节点是活动的还是备份的,您需要像这样迭代它们:
foreach ($stats->getBackendNames() as $backend) {
foreach ($stats->getServerNames($backend) as $server) {
$service = $stats->getServiceStats($backend, $server);
echo "$backend:$server\n";
echo " Active: {$service->health->active}\n";
echo " Backup: {$service->health->backup}\n";
echo " Health: {$service->health->status}\n\n";
}
}
这将产生如下输出:
foo-cloud:FRONTEND
Active:
Backup:
Health: OPEN
production-nodes:hiphop-node01-us.foocloud.com
Active: 1
Backup: 0
Health: UP
production-nodes:apache-node01-us.foocloud.com
Active: 0
Backup: 1
Health: UP
production-nodes:hiphop-node02-us.foocloud.com
Active: 1
Backup: 0
Health: UP
production-nodes:apache-node02-us.foocloud.com
Active: 0
Backup: 1
Health: MAINT
production-nodes:BACKEND
Active: 2
Backup: 2
Health: UP
stats:FRONTEND
Active:
Backup:
Health: OPEN
stats:BACKEND
Active: 0
Backup: 0
Health: UP