NLB产品高可用能力介绍
NLB提供多层级高可用架构,通过集群化部署、可用区多活、自动容灾和主动容灾机制,确保在单机故障、集群故障或可用区级故障场景下,服务仍能持续稳定运行,有效防止服务中断,保障业务连续性。NLB实例默认开启跨可用区流量分发,支持自动探测和DNS联动,实现故障自动切换,服务可用性SLA最高可达99.995%。
高可用设计
可用区内高可用架构
在可用区内部,每个VIP通过多个集群承载,集群内通过session同步避免单机故障。当单个集群节点发生故障时,其他节点可无缝接管流量,确保服务不中断。
可用区多活架构
NLB采用可用区多活架构设计,同一个NLB实例可以分别部署在不同的可用区内。每个可用区内的资源独立运行,互不依赖,确保一个可用区的故障不会导致整个实例停止服务。可用区多活架构不仅消除了单点故障风险,还提升了系统的扩展性和灵活性。
AZ可用性探测机制
NLB会主动探测所在AZ的VIP来判断在该AZ的可用性。当某可用区VIP探测失败时,系统会主动将DNS解析记录中该AZ的VIP(EIP)摘除,新的建连请求不会再分发至异常可用区的NLB。已建立成功的连接不受解析记录切换的影响。
跨AZ流量分发
NLB实例默认开启跨AZ流量分发。开启跨AZ转发后,负载均衡实例可以将流量均匀分发至同地域内所有已启用可用区的后端服务器,从而提升系统的高可用性和容灾能力。
容灾机制
自动容灾机制
可用区正常时
所有可用区正常时,客户端访问NLB的请求处理过程如下:
-
客户端通过自有域名向Local DNS服务发起请求,以获取自有域名与NLB DNS名称的映射关系。
-
Local DNS服务器向云解析DNS服务发起请求,以获取NLB DNS名称的解析记录。
-
云解析DNS服务向客户端返回域名解析的结果,包括:
-
A记录信息(该NLB实例多可用区中可用的EIP地址)。
-
TTL时间(默认为60秒)。
-
-
客户端根据返回的域名解析结果请求NLB,NLB按照用户设置的调度算法将流量分发至后端服务器。
可用区故障时
当阿里云机房故障或NLB集群故障等场景发生后(以可用区B故障为例),访问NLB的请求处理过程如下:
-
当可用区B故障后,NLB探测服务探测到可用区B下的私网VIP不通时,探测服务联动云解析DNS服务,删除不健康的A记录。
-
在客户端DNS缓存失效后,客户端通过自有域名重新发起请求解析NLB实例的DNS域名,此时只会返回健康的A记录地址,即可实现业务流量在多可用区之间自动容灾。
在某些极端场景下,当NLB探测服务探测到所有VIP均无法访问时,会将之前删除的所有A记录重新加回,以确保任意一个VIP恢复健康状态后,对应服务能够及时恢复。
主动容灾机制
手动摘除异常可用区
当用户使用NLB域名提供服务,并感知或被告知可用区服务异常时,可以通过DNS主动摘除操作将NLB的故障可用区立即移除,10秒内生效,确保新的业务请求不受影响。
高可用部署建议
创建多可用区NLB实例
创建NLB实例时,若目标地域支持,选择2个及2个以上可用区以实现可用区多活架构。
配置跨AZ流量分发
NLB实例默认开启跨AZ转发。建议用户将后端服务器部署在多个可用区,配合NLB的跨AZ转发,实现端到端的高可用架构。
配置CNAME解析
通过CNAME方式将自有域名指向NLB实例的DNS名称,以获得更优的容灾能力。本文以阿里云云解析DNS为例进行配置,具体以用户使用的域名解析服务商为准。
注意事项
-
通过DNS名称访问NLB实例时,影响NLB多可用区容灾的主要因素如下:
-
客户端DNS缓存:NLB实例域名的TTL默认为60秒,Local DNS服务器和客户端应依据根域名服务器返回的TTL时间,遵循DNS协议,及时失效域名缓存以获取最新的可用A记录列表。
-
连通性探测:NLB探测服务会对NLB实例的所有地址进行周期性Ping探测,为确保探测不被阻断,请在NLB实例绑定的安全组入方向放行探测地址段
100.64.0.0/10的ICMP访问。NLB探测服务覆盖的网络链路有限,当异常情况发生在公网、专线等路径时,探测结果无法准确反映每个访问源的链路状态。
-
DNS自动摘除:NLB探测服务会对每个可用区的地址进行探测,当可用区出现故障时,NLB会自动将该可用区的解析记录删除,新请求将不再转发至该可用区,整个切换操作预计在100秒内完成。
-
DNS手动摘除:若用户手动摘除某可用区的DNS记录,NLB探测服务将不再探测该可用区的VIP。
-
-
通过实例IP(对应的公网EIP或私网VIP)访问NLB时,NLB无法提供多可用区自动容灾能力。客户端需要主动实现对NLB实例IP的周期性探活和故障切换。