首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >跨园区容灾,升级不停服:高可用负载均衡集群实践

跨园区容灾,升级不停服:高可用负载均衡集群实践

原创
作者头像
腾讯云中间件团队
修改于 2017-08-18 01:46:38
修改于 2017-08-18 01:46:38
4.7K0
举报

作者:方坤丁

对于云计算行业来说,云服务的可用性和可扩展性是的检测其服务质量的重要标准,也是最受用户关注的两大难题。各云计算厂商针对容灾、升级等需求的解决方案,最能够体现其底层架构的实力。腾讯云基于基础架构的优势,为分期乐、微信红包等平台提供技术支持,可以完美满足如下三点需求:

1. 高可用能力,容灾能力强,升级不停服

2. 可扩展性强,功能丰富,性能超高

3. 避免重复造轮子,性价比之王

近期,针对一些客户对腾讯云产品可用性的问询,腾讯云基础产品团队对负载均衡产品的原理做出详细阐述,并希望通过对腾讯负载均衡集群底层架构的实现的讲解分析,揭示其强劲性能、高可用性的根源所在。

一、什么是负载均衡

单台 web 服务器如 apache、nginx 往往受限于自身的可扩展硬件能力。在面对海量的 web 请求时,需要引入load balance将访问流量均匀的分发到后端的web集群,实现接入层的水平扩展。

Tencent 所有业务的负载均衡都是基于内部 Tencent GateWay 实现的,运行在标准x86服务器上,优点包括:自主研发、代码可控。Tencent GateWay 对外的版本为 Cloud load balance,是多机 active 部署的,通过 BGP 发布VIP、local adress 路由、同步 DNS 信息等,实现集群负载通过路由 OSPF 将流量分发到不同的服务器上。

Load balance 作为 IT 集群的出入口、咽喉要塞。开发商使用负载均衡器看中的无非是高可用能力、分发性能以及产品功能的丰富程度,咱先从高可用说起。

二、高可用能力

a. 单集群容灾能力

集群容灾,简单来说就是一个集群中一台服务器倒掉不会影响整个集群的服务能力。LVS是国内厂商常用的开源框架,常用Keepalived完成主备模式的容灾。有3个主要缺点:

1、主备模式利用率低。一个集群同时只有一半的服务器在工作,另外一半的机器处于冷备状态,主节点不可用之后的切换速度相对较慢;

2、横向平行扩展能力差。LVS服务集群扩展后转发效率大幅下降;

3、依赖的VRRP协议存在脑裂的风险,需引入第三方仲裁节点,在金融领域、跨园区容灾领域备受挑战。

CLB在设计之初就考虑到这个问题,采用自研的ospf动态路由协议来实现集群的容灾,若一台机器倒掉,ospf协议可以保证在10s以内把机器从集群中剔除。

CLB一个集群放在两个接入交换机下,并且保证跨机架的容灾,这样保证在即便有单边的交换机出故障或者单边机架掉电时,本集群的服务不受影响。同事实现了集群内session连接定期同步。这样在别的服务器接管故障机器的包时,client端的用户体验不受影响(如未登录的账户,在电商购物车里的未付款商品不丢失)

b. 跨园区容灾能力

为了满足金融核心客户,24小时核心业务持续服务的要求。腾讯云负载均衡已在各金融专区(region)部署了多可用区(zone)容灾套件,从路由器、交换机和服务器以及布线是全冗余的,任意一个路由器、交换机或者服务器接口挂掉之后,流量会从冗余组件提供服务。

当client端请求,经过CLB代理,访问到后端CVM时,负载均衡的源 ip、目的ip、转发策略、会话保持机制,健康探测机制等业务配置。会实时的同步到另一个zone的集群。当主可用区的机房故障、不可用时,负载均衡仍然有能力在非常短的时间内(小于10s)切换到另外一个备可用区的机房恢复服务能力,而业界产品的切换时间一般在分钟级别。当主可用区恢复时,负载均衡同样会自动切换到主可用区的机房提供服务。目前包括webank、富途证券等金融开发商已启用跨园区容灾能力。

容灾演练实测:

1、协议切换(模拟交换机、CLB集群任何一层故障导致整个机房外网LB不可用),切换时间ping丢包不超过1秒,但长链接会瞬断,结果符合预期。

2、在高可用机房的LB外网完全瘫痪发生切换,恢复后不主动回切,过程中瘫痪机房的任何操作不应影响另外一边,结果符合预期。

3、模拟(与CLB开发商沟通好以后)流量回切操作,流量回切时间ping丢包不超过1秒,但长链接发生瞬断,结果符合预期。

c. 升级不停服

CLB内核升级、Linux 内核缺陷、安全漏洞等原因,免不了要做后端集群的重启升级,如果服务器每年由于维护等原因重启一次,1小时的恢复时间就已经达不到99.99%的可用性了。

目前CLB已能做到客户无感知的,完成服务器升级。升级时会选取集群一半负载均衡器,停掉OSPF协议,实行“温暖关机”。将其权重设置为0,从而保证数据包不会在经过这几台LB。另一半LB集群会接管预备关机LB的流量,集群内连接同步,负责接管的LB上具有全量的连接信息,连接不会中断。升级完成后的LB将重新启动ospf,加入集群,正常服务。

三、高可扩展性

a. 性能强劲

1)流量分发

腾讯云负载均衡内部实现,利用了intel DPDK提供的高性能多核开发框架、hugepage内存管理及ring buffer共享队列方案,CLB团队将DPDK常见的逻辑设计框架run-to-completion与pipeline结合。极大提升了流量分发的效率。

2017年1月28日,微信公布了用户在除夕当天收发微信红包的数量:142亿个,而其收发峰值也已达到76万每秒。面对亿级的用户数及百亿级的红包,系统的性能至关重要。而承载新年红包的手机QQ和微信都接入了腾讯云负载均衡集群,得到了有效的性能保障。CLB单集群可承受的TCP最大并发连接数超过1.2亿,处理峰值40Gb/s的流量,每秒处理包量(QPS)可达600万。为广大用户提供了流畅、愉快的抢红包体验,实现了除夕夜系统零故障。

2)Https加速

CLB性能上最大的一个难题是如何提升HTTPS的效率。同样的物理设备下cpu满负载,nginx SSL完全握手的性能不到普通HTTP性能的10%,如果说HTTP的性能是QPS 1万,HTTPS可能只有几百。为什么会这么低呢?

1、主要是RSA算法,它对性能的影响占了75%左右;

2、ECC椭圆曲线如果使用最常用的ECDHE算法,这部分约占整体计算量的7%;

3、对称加解密和MAC计算,它们对性能影响比较小,是微秒级别的。

有了这些分析结论,优化的方向就很明确了:

1、减少完全握手(采用分布式session cache、全局Session ticket、自定义session ticket)

2、RSA异步代理计算

3、对称加密优化

经过以上努力CLB团队通过异步代理、减少完全握手等方式,释放了CPU负载,。经过优化后,https请求的访问时延与http请求相差无几。单集群的单台云服务器完全握手性能可达到65000QPS,长连接时单台服务器性能可以达到300000QPS。完美的支撑了红包业务对SSL卸载的性能要求

b. 均衡能力丰富

我们来看看另一个case。分期乐一家专注于大学生分期购物的在线商城及金融服务提供商,提供分期贷款和还款服务。原分期乐(fenqile.com)的电商门户,有三十多个业务模块,通过多个二级域名、公网IP来分隔业务模块。门户的日PV超过亿次,峰值带宽超过5GB。

随着访问量的增多,其自建的nginx负载均衡集群已无法承载海量的请求,频繁出现丢包、SSL卸载慢等额问题。为了保证其业务在九月开学大促、双十一大促中平稳运行,分期乐引导部分流量到云端架构中,通过负载均衡进行业务整合:

1)Content base的流量转发

为了实现业务分离,分期乐使用七层负载均衡获取HTTP/HTTPS头部信息,并根据企业业务的实际需要,将请求路由到不同的后端服务器集群,从而让负载均衡基于内容进行路由转发。此外,采用了细致到转发组级别的健康检查,具有更强灵活性,满足更多业务场景。

分期乐业务架构中,通过自定义域名/URL,实现了基于内容的路由转发。根据业务类型,分期乐配置了a.fenqile.com/image 和a.fenqile.com/text 两个URL路径。通过识别请求内容,将后缀带有/image的请求转发到后端服务器群组1,并将后缀带有/text的请求转发到后端服务器群组2,从而保证了流量分发到不同的服务器群组中,减轻单个节点的负载。原来以上配置都需要在自建的nginx location中配置完成,转发请求时消耗大量的cpu资源,现在交给CLB就好了。

CLB同时提供多元化的重定向能力,可以满足电商的两种场景:A.浏览器发起的http请求,强制转换为https请求,加密更可靠。B.电商中商品更替、库存售罄、后端某服务器负载过高(限制连接数、请求)等场景,常见的做法是直接拉黑页面,给client端返回404、503。但这种体验太差了,CLB支持智能重定向,将超负载的请求,转发到其它页面,如门户首页。

2)专线接入

迁移上云从不是一蹴而就的,腾讯云强大的专线互联能力,满足客户逐步从自建IDC将业务迁移上云的能力:

a.分期乐首先逐步将业务迁移到云端,例如mall.fenqile.com这个域名会同时部署在自建idc及腾讯云负载均衡集群中。首先通过weight权重的配比,将30%的流量迁移到腾讯云,70%的流量回IDC。在稳定运营后,再逐步增加腾讯云端的权重,替换原有数据中心IDC的服务。

b.当业务流量增大时,clb负载均衡无性能瓶颈,需要注意的时候后端的apache、nginx接入层需要做到无状态,并借用autoscaling能力实现弹性伸缩

大促当天,CLB支持了海量的并发访问,分期乐门户的日PV超过亿次,峰值带宽超过5Gbps,支持了过亿的交易额。

四、性价比之王

传统的硬件负载均衡,以F5为例,其缺点非常明显, 从商业角度来说,硬件负载均衡产品过于昂贵,高端产品动辄五十万甚至数百万的价格对于用户是几乎不可承受的负担,如下图所示:

从使用角度来说,硬件负载均衡是黑盒,有BUG需要联系厂商等待解决,时间不可控、新特性迭代缓慢且需资深人员维护升级,也是变相增加昂贵的人力成本。

腾讯云在2015年起,将内部的负载均衡服务,正式对外商业化服务,单实例1个月的开销为30元(费用节省达99%以上)。您还有什么理由购买硬件负载均衡,或使用开源方案造轮子呢?快来试用吧:)

相关推荐

腾讯云负载均衡的使用

腾讯云容器服务的滚动升级使用简介

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
scrapy分布式爬虫scrapy_redis一篇
可以看到,scrapy单机模式,通过一个scrapy引擎通过一个调度器,将Requests队列中的request请求发给下载器,进行页面的爬取。
周小董
2019/03/25
1.6K0
scrapy分布式爬虫scrapy_redis一篇
某管1个月迅速赚钱经验及colly实战爬取美女图片站点源码级细节分享,绝对不容错过golang技能buff加成!
本文总共分为四部分,直接从第二部分开始,嘻嘻。第二部分,主要是讲colly之前的引子,用大名鼎鼎的scrapy做开胃菜,帮你系统了解一下scrapy是如何实现自己的爬虫代理的!正所谓殊途同归,只有举一返三,方能融会贯通!第三部分,我们的主角colly该出场了,把实现它代理的方式通通告诉你,保证你的golang开发功力又会提高一大截!第四部分,牵扯到爬虫,那些必然面对的问题一个跑不了,而最关键的怕就是重复过滤了,于是我把我在colly里使用redis做布隆过滤的方案分享给你,相信你如果有爬虫需求,这也是迟早都用得上的不时之需,顺便也提了下我对colly实现分布式的理解!
用户1413827
2023/12/02
4610
用 Python 写你的第一个爬虫:小白也能轻松搞定数据抓取(超详细包含最新所有Python爬虫库的教程)
用 Python 写你的第一个爬虫:小白也能轻松搞定数据抓取(超详细包含最新所有Python爬虫库的教程)
猫头虎
2025/06/02
2.3K0
用 Python 写你的第一个爬虫:小白也能轻松搞定数据抓取(超详细包含最新所有Python爬虫库的教程)
不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据
Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫、学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这样的编程语言提供越来越多的优秀工具,让爬虫变得简单、容易上手。 利用爬虫我们可以获取大量的价值数据,从而获得感性认识中不能得到的信息,比如: 知乎:爬取优质答案,为你筛选出各话题下最优质的内容。 淘宝、京东:抓取商品、评论及销量数据,对各种商品及用户的消费场景进行分析。 安居客、链家:抓取房产买卖及租售信息,分析房价变化趋势、做不同区域的房价分析。
机器学习AI算法工程
2018/03/30
2.5K1
不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据
一文学会爬虫技巧
作为冷数据启动和丰富数据的重要工具,爬虫在业务发展中承担着重要的作用,我们业务在发展过程中积累了不少爬虫使用的经验,在此分享给大家,希望能对之后的业务发展提供一些技术选型方向上的思路,以更好地促进业务发展
kunge
2020/08/09
1.1K0
分布式架构-SpringCloud如何实现CAP
SpringCloud是现阶段最火的微服务治理框架,那么SpringCloud如何实现服务治理的CAP,这里我只想谈谈我对SpringCloud架构思想的理解。
35岁程序员那些事
2020/02/24
1.1K0
Python面试题大全(三):Web开发(Flask、爬虫)
193.scrapy和scrapy-redis有什么区别?为什么选择redis数据库?
不吃西红柿
2022/07/29
1.2K0
资深程序员骆昊:Python从新手到大师,100天完整学习路线
摘要:最近后台有些小伙伴在问我Python入门的问题,我推荐这个学习路线资料,可能你们有些已经在使用它,的确它是我见过最全的、最富有逻辑体系的Python技术栈总结,含有Python基础语法、前端、后端、Python做数据分析、数据挖掘,Python机器学习,Python深度学习等。真正做到“一文在手,打遍天下无敌手”!
double
2019/08/20
4.9K0
资深程序员骆昊:Python从新手到大师,100天完整学习路线
Python 爬虫面试题 170 道:2019 版
最近在刷面试题,所以需要看大量的 Python 相关的面试题,从大量的题目中总结了很多的知识,同时也对一些题目进行拓展了,但是在看了网上的大部分面试题不是很满意。
用户1737318
2019/08/20
9020
爬虫总结 | 爬虫的那点事第一篇一、在(反)爬虫路上的心得和解决方案二、分布式爬虫的经验三、对于后期的内容精准推送有什么建议四、爬虫中遇到的一些坑五、视频落地和精准推送六、数据落地,后期做用户画像考虑
现在慢慢开始对爬虫的一些工作做一个总结,这是第一篇文章,整理聊下做一个爬虫系统时的一些感悟。 一、在(反)爬虫路上的心得和解决方案 在讲反爬之前,先说阐明我的一个观点:反反爬的过程其实是一个和我们的客
黄小怪
2018/06/22
1.3K0
王老板Python面试(9):整理的最全 python常见面试题(基本必考)
1)迭代器是一个更抽象的概念,任何对象,如果它的类有next方法和iter方法返回自己本身。对于string、list、dict、tuple等这类容器对象,使用for循环遍历是很方便的。在后台for语句对容器对象调用iter()函数,iter()是python的内置函数。iter()会返回一个定义了next()方法的迭代器对象,它在容器中逐个访问容器内元素,next()也是python的内置函数。在没有后续元素时,next()会抛出一个StopIteration异常
Python之道
2018/08/02
1.8K0
王老板Python面试(9):整理的最全 python常见面试题(基本必考)
如何设计真正高性能高并发分布式系统(万字长文)
“世间可称之为天经地义的事情没几样,复杂的互联网架构也是如此,万丈高楼平地起,架构都是演变而来,那么演变的本质是什么?”
玄姐谈AGI
2019/11/25
2.4K0
分布式系统在 Kubernetes 上的进化
本文译自 The Evolution of Distributed Systems on Kubernetes[1]。作者 Bilgin Ibryam,译者张晓辉。
CNCF
2021/04/21
1.3K0
Kubernetes 上分布式系统的演化
作者 | Bilgin Ibryam 译者 | 张卫滨 策划 | 丁晓昀 1 现代分布式应用 我想为这次演讲预先设置一些背景,在这里当我提到分布式系统时,我所指的是由多个组件组成的系统,可能会有数百个这样的组件。这些组件可能是有状态的、无状态的或者是无服务器的。除此之外,这些组件可以使用不同的语言创建,运行在混合环境之中,开发时使用的是开源技术和开发标准,支持互操作性。我相信你也可以使用闭源的软件创造这样的系统,或者在 AWS 和其他的地方创建它们。具体到这次演讲,我会特别关注 Kubern
深度学习与Python
2023/04/01
5830
Kubernetes 上分布式系统的演化
腾讯分布式数据库TDSQL金融级能力的架构原理解读
为帮助开发者更好地了解和学习分布式数据库技术,2020年3月,腾讯云数据库、云加社区联合腾讯TEG数据库工作组特推出为期3个月的国产数据库专题线上技术沙龙《你想了解的国产数据库秘密,都在这!》,邀请数十位鹅厂资深数据库专家每周二和周四晚上在线深入解读TDSQL、CynosDB/CDB、TBase三款鹅厂自研数据库的核心架构、技术实现原理和最佳实践等。三月为TDSQL专题月,本文将带来直播回顾第一篇《腾讯自研分布式数据库TDSQL核心架构及特性拆解》。
分布式数据库TDSQL
2020/03/18
6.9K0
腾讯分布式数据库TDSQL金融级能力的架构原理解读
SDN实战团分享(三十三):Hurricane分布式实时处理系统架构及SDN领域的应用
嘉宾简介:卢誉声,Autodesk软件研发工程师,从事平台架构方面的研发工作。 在此之前,他曾在思科系统(中国)研发中心云产品研发部工作,并参与了大规模分布式系统的服务器后端、前端以及SDK的设计与研发工作,在分布式系统设计与实现、性能调优、高可用性和自动化等方面积累了丰富的敏捷实践与开发经验。他主要从事C/C++开发工作,致力于高性能平台架构的研究与开发。此外,对JavaScript、Lua以及移动开发平台等也有一定研究。著有《分布式实时处理系统:原理、架构和实现》,并译有《Storm实时数据处理》《
SDNLAB
2018/03/29
1.4K0
GopherChina2020 个人总结
之前去过几次相关 go 的线下 meetup,这次相对来说比较大型一些,两天的听下来还是比较烧脑的,光是记录的笔记都有近千行了,整体来说收获很大。
LinkinStar
2022/09/01
4080
不吹不擂,你想要的Python面试都在这里了【315+道题】
来源:Python编程 ID:LovePython 各位大佬暂时先来315道题尝尝吧,后面有时间再继续补充。 有缘人如果看到这些题,不妨留言一下答案,来证明下你到底有多水,哈哈哈哈哈哈哈哈哈哈哈 第一部分 Python基础篇(80题) 1、为什么学习Python? 2、通过什么途径学习的Python? 3、Python和Java、PHP、C、C#、C++等其他语言的对比? 4、简述解释型和编译型编程语言? 5、Python解释器种类以及特点? 6、位和字节的关系? 7、b、B、KB、MB、GB 的关系?
小小科
2018/06/20
3.8K0
史上最全Java面试266题:算法+缓存+TCP+JVM+搜索+分布式+数据库
以上是总结出的最全Java面试题目,以下是最新总结出的BAT面试java必考题目和答案。
Java
2018/09/13
1.6K0
史上最全Java面试266题:算法+缓存+TCP+JVM+搜索+分布式+数据库
怒肝半月!Python 学习路线+资源大汇总
视频地址:https://www.bilibili.com/video/BV133411C7u5/
程序员鱼皮
2021/10/12
1.1K0
推荐阅读
scrapy分布式爬虫scrapy_redis一篇
1.6K0
某管1个月迅速赚钱经验及colly实战爬取美女图片站点源码级细节分享,绝对不容错过golang技能buff加成!
4610
用 Python 写你的第一个爬虫:小白也能轻松搞定数据抓取(超详细包含最新所有Python爬虫库的教程)
2.3K0
不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据
2.5K1
一文学会爬虫技巧
1.1K0
分布式架构-SpringCloud如何实现CAP
1.1K0
Python面试题大全(三):Web开发(Flask、爬虫)
1.2K0
资深程序员骆昊:Python从新手到大师,100天完整学习路线
4.9K0
Python 爬虫面试题 170 道:2019 版
9020
爬虫总结 | 爬虫的那点事第一篇一、在(反)爬虫路上的心得和解决方案二、分布式爬虫的经验三、对于后期的内容精准推送有什么建议四、爬虫中遇到的一些坑五、视频落地和精准推送六、数据落地,后期做用户画像考虑
1.3K0
王老板Python面试(9):整理的最全 python常见面试题(基本必考)
1.8K0
如何设计真正高性能高并发分布式系统(万字长文)
2.4K0
分布式系统在 Kubernetes 上的进化
1.3K0
Kubernetes 上分布式系统的演化
5830
腾讯分布式数据库TDSQL金融级能力的架构原理解读
6.9K0
SDN实战团分享(三十三):Hurricane分布式实时处理系统架构及SDN领域的应用
1.4K0
GopherChina2020 个人总结
4080
不吹不擂,你想要的Python面试都在这里了【315+道题】
3.8K0
史上最全Java面试266题:算法+缓存+TCP+JVM+搜索+分布式+数据库
1.6K0
怒肝半月!Python 学习路线+资源大汇总
1.1K0
相关推荐
scrapy分布式爬虫scrapy_redis一篇
更多 >
交个朋友
加入HAI高性能应用服务器交流群
探索HAI应用新境界 共享实践心得
加入[游戏服务器] 腾讯云官方交流站
游戏服运维小技巧 常见问题齐排查
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档