-
响应示例 状态码:400 BadRequest {
"error_code" : "common.01000001",
"error_msg" : "failed to read http request, please check your input, code: 400, reason: Type mismatch., cause: TypeMismatchException"
} 状态码:401 Unauthorized {
"error_code" : "APIG.1002",
"error_msg" : "Incorrect token or token resolution failed"
} 状态码:403 Forbidden {
"error" : {
"code" : "403",
"message" : "X-Auth-Token is invalid in the request",
"title" : "Forbidden"
},
"error_code" : 403,
"error_msg" : "X-Auth-Token is invalid in the request",
"title" : "Forbidden"
} 状态码:404 NotFound {
"error_code" : "common.01000001",
"error_msg" : "response status exception, code: 404"
} 状态码:408 Request Time-out {
"error_code" : "common.00000408",
"error_msg" : "timeout exception occurred"
} 状态码:500 InternalServerError {
"error_code" : "common.00000500",
"error_msg" : "internal error"
} 状态码:503 ServiceUnavailable {
"error_code" : "common.00000503",
"error_msg" : "service unavailable"
}
-
响应参数 状态码:400 表1 响应Body参数 参数 参数类型 描述 error_code String 参数解释:错误码。 约束限制:不涉及。 取值范围:长度为[8,36]个字符。 默认取值:不涉及。 error_msg String 参数解释:错误描述。 约束限制:不涉及。 取值范围:长度为[2,512]个字符。 默认取值:不涉及。 solution_msg String 参数解释:解决方案描述。 约束限制:不涉及。 取值范围:长度为[0,4096]个字符。 默认取值:不涉及。 状态码:401 表2 响应Body参数 参数 参数类型 描述 error_code String 参数解释:错误码。 约束限制:不涉及。 取值范围:长度为[8,36]个字符。 默认取值:不涉及。 error_msg String 参数解释:错误描述。 约束限制:不涉及。 取值范围:长度为[2,512]个字符。 默认取值:不涉及。 solution_msg String 参数解释:解决方案描述。 约束限制:不涉及。 取值范围:长度为[0,4096]个字符。 默认取值:不涉及。 状态码:404 表3 响应Body参数 参数 参数类型 描述 error_code String 参数解释:错误码。 约束限制:不涉及。 取值范围:长度为[8,36]个字符。 默认取值:不涉及。 error_msg String 参数解释:错误描述。 约束限制:不涉及。 取值范围:长度为[2,512]个字符。 默认取值:不涉及。 solution_msg String 参数解释:解决方案描述。 约束限制:不涉及。 取值范围:长度为[0,4096]个字符。 默认取值:不涉及。 状态码:408 表4 响应Body参数 参数 参数类型 描述 error_code String 参数解释:错误码。 约束限制:不涉及。 取值范围:长度为[8,36]个字符。 默认取值:不涉及。 error_msg String 参数解释:错误描述。 约束限制:不涉及。 取值范围:长度为[2,512]个字符。 默认取值:不涉及。 solution_msg String 参数解释:解决方案描述。 约束限制:不涉及。 取值范围:长度为[0,4096]个字符。 默认取值:不涉及。 状态码:500 表5 响应Body参数 参数 参数类型 描述 error_code String 参数解释:错误码。 约束限制:不涉及。 取值范围:长度为[8,36]个字符。 默认取值:不涉及。 error_msg String 参数解释:错误描述。 约束限制:不涉及。 取值范围:长度为[2,512]个字符。 默认取值:不涉及。 solution_msg String 参数解释:解决方案描述。 约束限制:不涉及。 取值范围:长度为[0,4096]个字符。 默认取值:不涉及。 状态码:503 表6 响应Body参数 参数 参数类型 描述 error_code String 参数解释:错误码。 约束限制:不涉及。 取值范围:长度为[8,36]个字符。 默认取值:不涉及。 error_msg String 参数解释:错误描述。 约束限制:不涉及。 取值范围:长度为[2,512]个字符。 默认取值:不涉及。 solution_msg String 参数解释:解决方案描述。 约束限制:不涉及。 取值范围:长度为[0,4096]个字符。 默认取值:不涉及。
-
如何处理健康检查导致的大量日志? 可以增加健康检查间隔时间,配置方法详见修改健康检查配置。 存在的风险:延长健康检查的间隔时间后,后端E
CS 实例出现故障时,负载均衡发现故障ECS实例的时间也会增长。 可以关闭健康检查,配置方法详见修改健康检查配置。 存在的风险:关闭健康检查后,负载均衡不再检查后端服务器,一旦某台后端服务器发生故障,则无法实现访问流量自动切换至其它正常的后端服务器。 切换健康检查协议,配置方法:进入控制台,选择产生检查日志的后端服务器组,单击配置健康检查配,切换健康检查协议。 存在的风险:负载均衡将只检查监听端口状态,不检查HTTP状态,会导致负载均衡无法实时获知HTTP应用是否出现问题。 父主题: 健康检查
-
删除健康检查 登录全球加速控制台。 在全球加速服务列表中,通过名称或ID查询需要删除健康检查的全球加速实例。 单击全球加速实例名称,默认进入“详情页”。 选择“终端节点组”,进入相应页面。 在页面左侧终端节点组列表中,单击需要删除健康检查的终端节点组名称。 在页面右侧的终端节点组基本信息中,单击“删除”。 单击“是”。 删除健康检查后,原有的配置信息将不再保留,用户可以根据业务需要重新配置健康检查。
-
关闭健康检查 登录全球加速控制台。 在全球加速服务列表中,通过名称或ID查询需要关闭健康检查的全球加速实例。 单击全球加速实例名称,默认进入“详情页”。 选择“终端节点组”,进入相应页面。 在页面左侧终端节点组列表中,单击需要关闭健康检查的终端节点组名称。 在页面右侧的终端节点组基本信息中,单击“配置”。 根据界面提示,关闭健康检查开关。 单击“确定”。 开启或者关闭健康检查,不会更改健康检查配置信息,用户可以根据业务需要重新开启。
-
操作场景 如果您在添加监听器或者终端节点组时已经配置健康检查,可以根据业务需要关闭或者删除健康检查。 关闭或者删除健康检查后,终端节点将不再收到健康检查报文,此时监听器认为终端节点状态正常。当某个终端节点健康检查异常时,全球加速实例还是会将请求转发至该终端节点上,从而造成部分业务不可访问。 在此场景下,需要用户保证主机业务端口正常,否则建议您不要关闭或删除健康检查。 本章节指导用户关闭或者删除终端节点组的健康检查配置。
-
TCP健康检查 对于四层(TCP)和七层(HTTP/HTTPS)后端协议,您可以配置TCP健康检查,通过发起TCP三次握手来获取后端服务器的状态信息,如图1所示。 图1 TCP健康检查 TCP健康检查的机制如下: 服务节点根据健康检查配置,向成员(IP+健康检查端口)发送TCP SYN报文。 成员收到请求报文后,如果相应的端口已经被正常监听,则会返回SYN+ACK报文。 如果在超时时间内没有收到成员的SYN+ACK报文,则判定健康检查失败。随后发送RST报文给成员中断TCP连接。 如果在超时时间内收到了SYN+ACK报文,则判定健康检查成功,并进一步发送ACK报文给成员。随后发送RST报文给成员中断TCP连接。 正常的TCP三次握手后,会进行数据传输,但是在健康检查时会发送RST中断建立的TCP连接。该实现方式可能会导致成员中的应用认为TCP连接异常退出,并打印错误信息,如“Connection reset by peer”。解决方案如下: 采用HTTP健康检查。 成员忽略健康检查的连接错误。
-
HTTP健康检查 对于四层(TCP)和七层(HTTP)后端协议,您可以配置HTTP健康检查,通过HTTP GET请求来获取状态信息。检查原理如图2所示。 图2 HTTP健康检查 HTTP健康检查机制如下: 服务节点根据健康检查配置,向后端服务器(IP+端口+检查路径)发出HTTP GET请求(可以选择设置
域名 )。 成员收到请求后,根据服务的情况返回相应的HTTP状态码。 如果服务节点在响应超时时间内收到了成员的响应,将HTTP状态码与预置的状态码进行对比,如果匹配则认为健康检查成功,成员运行正常。 如果服务节点在响应超时时间内没有收到成员的响应,则判定健康检查失败。 在HTTP健康检查请求中,User-Agent头字段主要用于标识此类请求为健康检查发出的探测请求。User-Agent的值可能随业务需求而动态调整,建议客户的成员请勿根据此header头做检验和判断。
-
健康检查时间窗 健康检查机制的引入,有效提高了业务服务的可用性。但是,为了避免频繁的健康检查失败引起的切换对系统可用性的冲击,健康检查只有连续多次检查成功或失败后,才会进行状态切换。 健康检查时间窗由表1中的因素决定: 表1 健康检查时间窗的影响因素 影响因素 说明 检查间隔 每隔多久进行一次健康检查。 超时时间 等待服务器返回健康检查的时间。 最大成功重试次数 判定健康检查结果正常时,所需的健康检查连续成功的次数。 最大失败重试次数 判定健康检查结果异常时,所需的健康检查连续失败的次数。 健康检查时间窗的计算方法如下: 健康检查成功时间窗 = 超时时间×最大成功重试次数 + 检查间隔×(最大成功重试次数-1) 健康检查失败时间窗 = 超时时间×最大失败重试次数 + 检查间隔×(最大失败重试次数-1) 如图3所示: 检查间隔:4s 超时时间:2s 健康检查异常阈值:3次 健康检查检测到成员从正常到失败状态,健康检查失败时间窗 = 超时时间×最大失败重试次数+检查间隔×(最大失败重试次数-1) = 2 x 3+4 x (3-1) = 14s。 图3 健康检查失败时间窗