Qunar 是怎样处理 IDC 网络故障自愈问题的

苗宏涛,2010年参加Qunar,现在担任技能保障部运维处理作业,先后带领团队结束DNS体系,负载均衡体系和运维自动化体系,分布式存储体系的规划和建造作业。


1、布景介绍

我在2010年参加 Qunar 的时分,Qunar 的 Inginx负载均衡装备详解DC 规划还比较小,服务器nginx发动命令也只需几百台。java面试题跟着公司的打开,事务对服务器的需求也越来越大,随之 Qunar 的 IDC 规划也逐步强大起来。假设将全部服务nginx怎样读器放到一个 IDC 中,虽然处答理简略一些,可是带来的危险也是不可避免的。单个机产品房呈现缺陷的危险仍是存在的,比方电力、网络、空调,都可能影响到事务的正常运转,尤其是网络。咱们都知道,一般 ID产品质量法C 都会有很多个用户,而java言语现在的互联网用户常常会遭到侵略搅扰。另一个方面,每个 IDC 的上连运营商运维的接入方法也是不同的,java开发这又会产品运营构成运营商与 IDC,运营商自身网络的颤抖给咱们的服务带来了不稳定性。为了分管危险,咱们施行了多机房安顿计划,树立 Qunar 的骨干网,处理了机房间流量互通和链路冗余问题。

多机房安顿计划,处理了单个 IDC 扩容问题,一起供给了多个出nginx负载均衡口供给服务。可是当遇到单个机房出问题的时分,部分服务仍是会遭到影响。原有的处理方法:运维同学接收到报警,然后灵产品密钥敏翻开笔记本,联接 vpn(进入内网),查看监控影响,做出判别,切流量。整个进程关于一个运维熟行,做出活络判别,至少也要10分钟以上了,10分钟关于像咱们这种电商丢失就比java初学较大了。一起,运维同学还要保证不管走到天产品设计涯海角,都要背着本本,随时做好要战争的准备。

为了处理这些问题,Qunar 运维github怎样下载文件自主研制一套缺陷自愈体系,处理了机房网络的上行和下行两个链路的问题。


2、用户拜访-下行

用户拜访 Qunar 的产品首要是经过两种方法:客户端和 pc 端拜访,但不管是经过哪种拜访,都是基于 DNS 体系拜访的。因为咱们有多几个机房,所以咱们在每个机房安顿了一套担任均衡体系。

简略介绍下 Qunar 的负载均衡体系。咱们原有的体系也首要是以 Ngingithub是干什么的x 类为作为负载均衡体系,前期的方法也是经过 hear产品批号是生产日期吗tbeat+nginx 方法,如下图:

Qunar 是怎样处理 IDC 网络故障自愈问题的跟着nginx重启运维工程师考什么证书务的打开,单个 Nginx 成为了瓶颈。后期,咱们引github中文社区进了 ECMP 方法。Nginx 的横向扩展变得十分简略了。

Qunar 是怎样处理 IDC 网络故障自愈问题的

后期,运维是做什么的咱们还引进了 Openresty 企业版。咱们都知道,Nginx 每次加载装备,都nginx负载均衡战略需求 rjava初学eload。而这个进程,会关闭原有的 worker,发产品密钥在哪里能找到动新 worke产品批号是生产日期吗r。这个进程,就会构成部分用户拜访失利。而 Openre产品密钥sty 可以做到装备热加载,整个进程对用户无感。一起 Nginx 修改是一个串行的进java怎样读程,下一次修改还要等这一次的修改结束。跟着集群的数量添加,一次装备修改的nginx发动命令时间也随产品司理之越来越长。Openrestynginx负载均衡装备详解 Edge 正好处理了这个问题,它不只可以对 upstream 进行热加载,一起对其他装备也可以做到热加载。别的,Openresty 还结束了分区处理,使咱们串行的作业变成并行而且互补影响,使 OPS 的生产力大大的提高了。

经过这几回负载均衡体系的改造,咱们避免了一个集群单节点的缺陷。可是,单产品范畴的偏好个机房缺陷点仍是存在的。针对用户拜拜访题,咱们首要经过 DNS 解析处理。Qunar 现已开源了 DNSDB产品质量法 体系,咱们可以进入下面的网站了解和学习:

github github.com/qunginx负载均衡装备详解narcorp/o…

经过 DNSDB 体系,Qunar 运维就结束一键切换成百nginx负载均衡装备详解上千个域名。DNSDB 体系不只可以经过 web 操作,而且运维工程师需要掌握什么技能供给 API 接口。正是有了 API,使咱们的自动切换有了可能。咱们每个产品司理java开发房都有对全国链路的监控运维是做什么的

Qunar 是怎样处理 IDC 网络故障自愈问题的

Qunar 是怎样处理 IDC 网络故障自愈问题的

上面这个图是每个机房全国网络的监控汇总。单个机房内,结束30秒内对全国100多个节点的检测任务。经过 watcherjava模拟器 监控渠道,当监控阈值报警时,触发 DNSDB API 接口结束对 DNS 域java言语名地址切换。咱们设置阈值接连4个点有2个点报警再触发切换Java。这个也是一个经验值,可以有用的避免了监控体系的误报问题。当监控接连20分钟显现ok ,触发 DNSDB 体系恢复原有装备。经过这种方法,咱们彻底处理了单个机房的网络缺陷。而且,经过自动缺陷恢复机制,也避免了因为人为忽略,构成流量长期不恢复而添加了带宽本钱。Qunar 的 DNS 体系也供给view 和 EDNS 等功用,也为 OPS 调度带宽产品设计专业运维改进用户拜访质量供给了有力的支撑。


3、拜访第三方事务-上行

虽然经过 DNS 体系咱们避免了用户拜访 Qunar 的问题,可是,咱们的事务还有拜访第三方协作等协作网站的需求。当单个机房呈现问题的时分,尤其是 IDC 与上连运营商之间呈现问题的时分,咱们的事务就没有方法切换到其他出口了。

为此,OPS 和 Qunar TC组一起结束了一个 IDC 署理方法。IDC 署理处理计划,相同包括三个部分:署理模块部分、qconfig 装备署理部分和监控部分。结构如下:

Qunar 是怎样处理 IDC 网络故障自愈问题的

署理模块,咱们挑选了产品司理运用 squid 作为署理运维宝模块。开端咱们挑选过 ATS 作为nginx反向署理署理模块,功用比照nginx是什么意思 squid 有优势,而且可以利用上多核。可是,检运维工程师考什么证书验中发现到一个问题。当一个网站有多个 IP 解析时,假设有一个 IP 呈现拜访失利,ATS 将不再会去重试第二个 IP,直接回来502网关失利。而 squid 在第一个 IP 失利后,会重试第二个IP。所以咱们毕竟挑选了 squid 所作咱们署理服务器。为了最大压榨服务器的功用,咱们运用了 squigithub敞开私库d 的多线程方法。咱们nginx负载均衡的一个查验环境:32核的服务器,squid 运用超线程方法,在压测进程,CPU load 跑满的状况,qps 可以抵达50KQPS。在署理集群,咱们相同运用了 ECMP 方法,使整个集群java开发扩缩容都变得十分简略。

有了署理模块,产品密钥咱们还期望可以让事务在单机房缺陷时,署理可以java模拟器自动切换,做到对事务通明。因为咱们大部分服务是 java 服务,就请 TC 团队协助开Java发了一个hgithub直播平台永久回家tt产品密钥在哪里能找到p 模块。事务在引进这个模块后,就可以经过咱们 qconfig 装备署理模块。nginx怎样读

在事务侧,经过 qconfig,运维岗位是干什么的事务可以设置会集方法:

  • 开关。经过开关控制是否运用署理。
  • 装备白名单。只需装备了的域名才会走署理。

在运维侧,设置方java模拟器式会比事务侧多几个组合:

  • 黑名单。装备了黑名单产品密钥的域名,将不答应走运维的署理。比方,咱们会把自己的域名过滤,这样不会构成资源的糟蹋。
  • 署理规矩:可以选用域名、域名+机房、机房和默许规矩。经过这些规矩的设置,OPS 就可以做到对流量的控制了。

有了署理模块和 qconfig,咱们还需求监控体系的协作。这一块,咱们复用了在前面介绍的监控体系部分。当呈现单nginx负载均衡个机房缺陷,咱们的程序会调用 qconfig,触发署理规矩修改,从而把流量快速切换到其他java言语机房。整个进程,对事务是通明的,服务保持接连。

有了这两套体系,运运维宝维同学在休息日的时分,终于不那么紧张了。我期望可以带领运维同学们,持续完善咱们的运维体系,让更多的体系可以结束缺github官网点自愈,让同学们有更多的时间去研讨更先进的技java就业培训班能,有更多的假期时间伴随家人。

Qunar 是怎样处理 IDC 网络故障自愈问题的