我们需要确保 HAProxy 日志确实成功写入磁盘,然后再将即将到来的请求移交给其背后的服务器。换句话说,我们需要 HAProxy 同步记录并阻塞,直到日志安全写入磁盘。这可能吗?如何做到?
谢谢你!
答案1
@geeko,
HAProxy 不会将任何数据记录到磁盘,只会记录到系统日志。
来自 1.7 管理手册,但所有版本都相同:
对于日志记录,HAProxy 始终依赖于 syslog 服务器,因为它不执行任何文件系统访问。使用它的标准方法是通过 UDP 将日志发送到日志服务器(默认情况下在端口 514 上)。通常将其配置为 127.0.0.1,本地 syslog 守护程序正在其中运行,但它也通过网络用于将日志记录到中央服务器。
答案2
由于日志不会从 HAProxy 本地写入磁盘,而只能通过 syslog(通常通过 UDP)发送,因此没有真正的方法可以绝对保证haproxy 看到的每一个日志都已写入。
事实上,当您开始将每个负载均衡器的数千万个请求发送到单点时,您可能会发现 syslog 接收器上的垃圾收集甚至会导致日志丢失。
例如,我们估计每天由于垃圾收集大约会丢失 30,000 条日志条目(这只是我们从 haproxy 机器上看到的一小部分,我们认为它在可接受的误差范围内)