健康检查机制的引入,有效提高了业务服务的可用性。但是,为了避免频繁的健康检查失败引起的切换对系统可用性的冲击,健康检查只有在健康检查时间窗内连续多次检查成功或失败后,才会进行状态切换。健康检查时间窗由以下三个因素决定:
1、健康检查间隔(每隔多久进行一次健康检查)。
2、响应超时时间 (等待服务器返回健康检查的时间)。
3、检查阈值(健康检查连续成功或失败的次数)。
健康检查时间窗的计算方法如下:健康检查失败时间窗=响应超时时间×不健康阈值+检查间隔×(不健康阈值-1)。
健康检查成功时间窗= (健康检查成功响应时间x健康阈值)+检查间隔x(健康阈值-1),说明 健康检查成功响应时间是一次健康检查请求从发出到响应的时间。当采用TCP方式健康检查时,由于仅探测端口是否存活,因此该时间非常短,几乎可以忽略不计。当采用HTTP方式健康检查时,该时间取决于应用服务器的性能和负载,但通常都在秒级以内。
健康检查状态对请求转发的影响如下:
1、如果目标ECS的健康检查失败,新的请求不会再分发到相应ECS上,所以对前端访问没有影响。
2、如果目标ECS的健康检查成功,新的请求会分发到该ECS上,前端访问正常。
3、如果目标ECS存在异常,正处于健康检查失败时间窗,而健康检查还未达到检查失败判定次数(默认为三次),则相应请求还是会被分发到该ECS,进而导致前端访问请求失败。