如果不考虑有效的服务器健康检查,设置HAProxy作为负载平衡器是不完整的。实现运行状况检查有助于提高应用程序的可靠性和可用性。HAProxy支持实现健康检查,检查后端服务器,以确定它们的健康状况是否适合使用。
只有通过运行状况检查的服务器才会被添加到循环中。这样,如果服务器没有通过运行状况检查,它将不会被选择使用,从而最大限度地减少停机的可能性。在这篇文章中,我们将更深入地了解HAProxy中的健康检查是如何工作的,以及实现有效的健康检查需要什么。开始吧!
什么是HAProxy中的健康检查
配置HAProxy时,一个任务是指定应用程序使用哪些后端服务器。这样,流量将被分配到服务器,以避免任何服务器过载。然而,运行状况检查有助于确定服务器仅在正常情况下才被选择来处理流量。
在每个服务器上进行健康检查,只有那些通过的服务器才会被添加到循环中,以用于负载平衡。运行状况检查是通过向后端服务器上的预定义端点发送请求(如TCP或HTTP)来执行的。后端服务器发送回的运行状况结果决定其状态。例如,服务器的状态可以显示UP或DOWN,或者发送一个okay 200状态,以确认服务器是健康的。
在配置运行状况检查时,请确保您具有用于运行状况检查的预定义端点。您可以使用不同的选项来设置终结点。例如,您可以根据服务器的状态返回状态代码或消息。所有运行状况检查都在HAProxy配置文件的后端部分中定义。打开配置文件并创建您的前端部分。
$sudo nano/etc/haproxy/haproxy.cfg
下面是一个前端部分的基本示例,它绑定端口80,设置一个统计页面,并指定默认后端。
下一步是创建后端部分。以下是关于如何在HAProxy中实施有效运行状况检查的不同示例。
示例1:实施有效的主动健康检查
在HAProxy中实现健康检查的一个简单方法是设置活动健康检查。使用此选项,HAProxy将尝试与服务器连接。如果没有发送响应,它认为服务器不健康,并将其从循环中删除。实现主动健康检查的默认方式是在每个服务器行上添加"check"关键字,以便HAProxy检查所有服务器行。
虽然第一个示例有效,但它不是实现健康检查的最佳方式。此外,它使用默认设置。例如,检查之间的间隔(标记为intern)被设置为两秒。允许的失败检查次数被设置为3次。要调整这些设置,请指定首选的间隔时间和检查次数,如下例所示:
示例2:实现HTTP运行状况检查
通过HTTP健康检查,HAProxy将向所有服务器发送HTTP请求,并使用"check"关键字。根据响应,它总结服务器的状态。成功的服务器响应的示例范围为2xx或3xx。200 OK这样的响应意味着服务器处于良好状态。
在本例中,在您的后端中添加“Option HTTPCHK”行。
示例3:使用GET请求
HAProxy在发出HTTP请求时向路径“/”发送GET请求。但是,如果您在另一个路径中配置了您的端点,您可以指定URL路径,如“/Health”,HAProxy将向其发送GET请求。
根据您的端点,服务器将使用响应来确定服务器的状态。以下是如何实现它:
示例4:删除GET请求路径和响应状态
对于端点,您可以指定端点GET请求的成功响应,以确定服务器的状态。对于这个例子,我们的GET请求路径是"/health",我们期望一个200响应状态来确认服务器处于良好的健康状态,可以处理负载平衡和其他任务。
修改HAProxy配置文件后,重新启动HAProxy以使更改生效。
就这样!您在HAProxy上实施了有效的运行状况检查。您可以使用以下命令访问统计页面或检查日志文件,以确认运行状况检查是否按预期工作:
$ail-f/var/log/haproxy.log
结论
您可以通过不同的方式在HAProxy中实现有效的运行状况检查。健康检查是在HAProxy配置文件的后端部分实现的,本文给出了不同的例子来说明如何去做。检查你的理想方法,并在HAProxy中轻松实现一个有效的健康检查。