数据中心多活运营的核心问题是在解决有状态服务的高可用管理。我们设计流量控制层的一阶段目标是当主机房发生大面积服务故障时,具备能够快速将外部用户流量切换至备机房的能力。
信也流量控制,分为DNS流控与Nginx流控。通过DNS解析与Nginx内部流量转发控制,实现对外部用户请求的机房级切换,可规避单机房负载均衡/中间件/应用等核心组件与服务异常时,对业务的连续性影响,提升系统的容灾能力。
DNSPod是中国第一大DNS解析服务提供商,其最早提供智能DNS产品。信也通过DNSPod对互联网域名进行秒级的按大洲、国家、大区、省、运营商、搜索引擎、云厂商多维度组合的流量的配置策略,实现用户流量精准分配级别的多纬度的细化流量分配管理,实现按比例或全量切换机房级流量的能力。
通过DNS流量控制已经可以实现外部流量的按需分配,但解析记录的生效时间受到很多客观因素的影响。运营商、递归服务器、以及客户端上的缓存失效时间的不可控会影响用户无法及时获得最近的解析记录,导致流量管理的失控。而Nginx流量控制很好的弥补了这方面的不足,在不影响公网解析结果的前提下Nginx流控可以以站点/域名纬度再次完成流量分配,并且流控策略的更新调整也能够秒级完成。
Nginx流控针对不同的场景,可以灵活的实现流量切换:
默认形态:此形态下本机房流量默认转发至本地机房,请求转发效率最高与响应最快
机房级按比例分发流量:在单边机房变更、故障或蓝绿发布场景下,按比例分发流量非常有用。与“落本地”策略方式不同,每个流控层节点都会通过计算,将请求按预期比例分发到后端集群,会出现主机房流控服务器访问备机房后端服务器的情况,反之亦然。
单域名流量策略:在日常的工作中必然会遇到一些服务异常,或从设计初期就不支持双活机房。针对这些域名(站点)我们设计了优先级优于全局流量策略的单域名策略,可在不影响全局策略的情况下实现单个域名的流量分配策略。
当机房流量入口侧出现异常,请求无法准确进入主机房。我们可以通过以下几步实现全量用户请求切换至备机房,由备机房承载全量业务流量。
修改主机房对应CDN配置,将回源IP切换为备机房入口IP
通过DNSPOD修改DNS记录,将解析记录修改至备机房的CDN
单机房流控集群与后端应用通讯异常,可通过流控层策略调整切换至备机房,快速规避生产异常
通过DNSPod对DNS解析记录按大洲、国家、大区、省、运营商、搜索引擎、云厂商多维度组合的流量的配置策略,实现用户流量精准分配。例如,在新版本投放测试阶段,将浙江电信用户切换至新版本(备机房),而其余用户不受影响。
蓝绿发布场景下,Nginx流控按比例分发流量非常有用。与“落本地”策略方式不同,每个Nginx流控层节点都会通过流控策略按一定的条件计算,将请求按预期比例分发到后端集群。如果新版本在逐步放量的过程中出现严重的BUG,那么我们只需将流量全部切回至旧版本,大大缩短故障恢复的时间。待新版本完成 BUG 修复并重新部署之后,再将旧版本的流量切换到新版本。
信也双活机房项目如火如荼的进行中,流量控制作为其中一个环节尤为重要。通过DNS与Nginx双重流量控制实现对机房级、应用级快速灵活的切换方案,可极大的提高系统的可用性与容灾能力。
招聘信息
Java、大数据、前端、测试等各种技术岗位热招中,欢迎扫码了解~