如何利用腾讯云BGP网络提升客户外网出口的冗余

背景:

最近几年,互联网公司发展迅速,有很多互联网公司本身的基础架构都构建在一些公有云厂商之上,除了节省初期投资之外,另外也是借助于一些大的云厂商本身的网络能力,实现业务更好的覆盖。

另外,也有一些公司,自己的业务系统都构建在自己的IDC或者一些机房托管服务商上,例如国内有很多的托管IDC,但是随着业务的发展,外网的网络带宽和服务质量,对现有业务带来了很多的制约。例如经常会遇到:

  1. 网络出口光纤挖断,客户访问的唯一外网出口故障。
  2. 由于多个客户公用同一个IDC托管出口,其中一个客户遭受DDOS攻击,如果外网出口带宽有瓶颈,会影响其他用户。
  3. 中国不同的区域,存在众多中小服务商,经常会存在跨网访问,访问质量差的问题。

由于这些问题的存在,如果云厂商能够提供更好的网络服务质量,可以帮助众多客户减少上述问题的发生。在我们接触的众多客户中,也遇到多个场景,需要对于外网和前端业务做一个冗余。

现状说明:

某场景下,客户的业务都托管在深圳某IDC,该IDC建设较久,遇到过几次网络质量的问题,并且当前提供的带宽有些,因此考虑提供外网访问的冗余,在网络质量异常的情况下,能够提供外网访问的备份功能。

①用户通过DNS解析,用户请求接入到EN(External Network),通过自建的的Haproxy + Array做前端业务转发,后端内网IN也基于Haproxy + Array做内部的业务转发。

②在DCN区部署业务逻辑,包括应用服务器JBoss/Tomcat,以及中间件Dubbo。

③消息队列主要使用Kafka,承载业务系统以及日志业务,并且使用了少量的RabbitMQ。

④缓存使用Redis,当前存在集群版和主从版。

⑤数据库主要基于MySQL,MongoDB

客户规划主要几个阶段:

第一阶段:构建外网的冗余能力

第一阶段,建立腾讯云上的外网入口:

①用户通过运营商网络,接入腾讯BGP网络。

②用户接入使用BGP高防IP(10G+90G)提供外网DDoS防护。

③BGP高防接入腾讯云后端负载均衡(四层),将流量转发到Nginx集群,通过Nginx将流量转发到xx现有数据中心。

④建立xx和腾讯云之间的专线,用户的访问请求通过专线接入xx现有数据中心的业务逻辑。

⑤主动外访出口暂时通过现有的出口访问。

第二阶段:主动外访切换到腾讯云

第二阶段将,现有外访出口全部切换到腾讯云:

①在腾讯云上创建NAT网关,配置EIP,作为用户主动外访的出口。

②在xx现有需要主动访问的业务逻辑上,配置外访的静态路由,通过创建的NAT转发。

③在腾讯云上的专线网关配置到NAT的路由。

第三阶段:建立在腾讯云上的业务容灾系统:

第三阶段,建立腾讯云上的业务逻辑,缓存以及数据库层。

①部署全量业务逻辑,实现对现有xx业务的完全容灾。

a)建立Redis缓存/MQ在腾讯云上的灾备平面。

b)MySQL使用DTS,和腾讯云CDB建立主从关系,在腾讯云上建立Tdata(Oracle一体机),通过Dataguard建立到腾讯云的同步。

②部署部分业务逻辑作为测试环境,新建独立的CDB。

功能验证和测试:

针对第一和第二阶段,如何实现功能的验证,需要和客户一起配合,来建立和实现一个测试的环境和系统:

第一步:打通专线

https://console.qcloud.com/dc/dc

1)到腾讯云专线控制界面,填写创建专线申请,由客户拉裸纤,因此选择客户自建。

2)腾讯云后端负责分配专线接入点。

3)客户负责拉裸纤到腾讯云接入点。

4)专线建好以后,配置专线网关,打通腾讯云和IDC数据中心。

第二步:搭建nginx环境,简单验证:

基于Nginx实现业务转发,将业务通过Nginx转发到丰巢现有数据中心服务器 1)安装nginx:yum install nginx

2)查询nginx安装目录,修改nginx转发配置,实现业务7层转发:

通过nginx实现反向代理,将业务请求转发到后端的丰巢业务服务器。(具体的配置策略和参数以丰巢实际业务为主,例如权重,轮询策略。下图中的地址是测试地址,是个样例。)

第三步:配置LB监听器,配置转发逻辑:

第四步:配置外网访问逻辑(出口主动外访)

①方案说明如下: QCloud VPC中申请两个在同一个子网的CVM,并创建VIP和EIP,EIP和VIP绑定,建立Keepalived主备配置,配置过程参见 https://www.qcloud.com/document/product/215/5850

注意在创建的时候,选择创建公网网关类型,并配置公网网关优化参数。

①用户IDC需要把流量汇聚到一个统一的GRE网关,GRE网关和QCloud VPC中的VIP建立GRE Tunnel。GRE网关可以选择设备或单独的物理机

②用户把服务器访问公网的流量路由到GRE网关上,然后通过专线到达主CVM,主CVM内配置iptables规则,把来源是用户IDC网段的流量做SNAT,源IPSNAT为VIP,通过TGW出公网

③在主CVM中配置路由,把目的IP是用户IDC网段的流量下一跳指向GRE设备 5.在主备切换的时候,记得要在CVM内添加指向GRE设备的路由

实现GRE Tunnel

基于Linux GRE tunnel功能,打通客户内部GRE网关和腾讯云Keepalived的CVM之间的tunnel,实现数据包的隧道封装。

实际过程中,主动出访通过GRE封装逻辑比较复杂,容易出问题,不建议这么操作。

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

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT大咖说

测试人员必看:传统测试向工程效能转型的最佳实践

内容来源:2018 年 5 月 20 日,eBay中国研发中心技术主管茹炳晟在“2018全球技术周暨第四届南京(全球)软件大会”进行《Quality Engin...

52500
来自专栏developerHaoz 的安卓之旅

Android 谈谈自动化测试

最近,手头上的项目基本开发完成,优化也做的差不多了,本以为可以安心准备上线。然而老板却反映说测试人员发现 App 总会出现一些莫名的 bug.

30130
来自专栏phodal

【图说】全栈工程师的 18 项基本技能,你会多少?

30分钟了解《Growth:Web开发思想》 本文总结了正在撰写的《Growth:Web开发思想》里提出的一系列实践,为18个步骤。 任务切分 即将目标切换成...

25370
来自专栏Data Analysis & Viz

用Zhihu-OAuth库轻松爬取知乎各类数据

去年(手动滑稽)某日想爬取知乎特定话题下的全部回答数据,于是翻出以前写的知乎话题爬虫跑运行了下,没想到遇到一个一直没能解决的bug,貌似是抓包到的API返回的J...

12430
来自专栏编程

用Zhihu-OAuth库轻松爬取知乎各类数据

好久没更新,没赶在2018年的第一天内推送,出师不利 ? 去年(手动滑稽)某日想爬取知乎特定话题下的全部回答数据,于是翻出以前写的知乎话题爬虫跑运行了下,没想到...

652100
来自专栏ThoughtWorks

登录工程:现代Web应用的典型身份验证需求|洞见

朋友就职于某大型互联网公司。前不久,在闲聊间我问他日常工作的内容,他说他所在部门只负责一件事,即用户与登录。 ? 而他的具体工作则是为各个业务子网站提供友好的登...

36250
来自专栏程序你好

如何从传统单体架构转向微服务

15940
来自专栏即时通讯技术

扫盲贴:认识MQTT通信协议

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部...

47730
来自专栏网络

资深女程序员告诉你:微服务架构如何实践?80%以上男程序员点赞

上篇文章给大家介绍了什么是微服务架构,本文将会讲到如何实践微服务。 不知道微服务架构的,可以看我上一篇文章 微服务听上去好像不错,具体怎么落地啊?这需要回答下面...

42370
来自专栏杨建荣的学习笔记

Active Data Guard初探(一) (r10笔记第76天)

对于Active Data Guard,我是这样想的,可能会有很多不对的地方,互相讨论,一起补充吧。 如果有一天我成了Oracle的产品架构师,时光倒退...

34190

扫码关注云+社区

领取腾讯云代金券