我目前有一个中等大小的集群(15台服务器),其中有3个节点使用ip_hash运行nginx负载平衡。 被平衡的协议是非常高的连接速度,所以我把我的max_fails设置得相当高,以避免误报服务器停机信息。
有没有一种方法可以监视nginx将服务器标记为脱机状态,以及何时将其标记为联机状态? 访问/错误日志是巨大的,我找不到任何具体的错误消息来grep /parsing出来,找出当一个服务器被认为是“坏”。
我们也试图对我们的nginx这样做,最终得知NGiNX保持每个工人的上游地位,所以除非你只有一个工人,否则使用模块很难/很难跟踪。
但是,我们注意到,如果你的日志中有上游数据,那么当nginx命中多于一个后端时,这个日志格式将会指出:
log_format main '$status:$request_time:$upstream_response_time:$pipe:$body_bytes_sent $connection $remote_addr $host $remote_user [$time_local] "$request" "$http_referer" "$http_user_agent" "$http_x_forwarded_for" $upstream_addr $upstream_cache_status';
通常会产生如下行:
304:0.001:0.001:.:0 26572217 ...
但是,如果两个上游失败,它将开始显示:
304:20.537:10.001, 10.002, 0.534:.:0 26572217 ...
它也将所有的上游放在$ upstream_addr,所以你可以看到哪些是失败的。