背景:
最近几年,互联网公司发展迅速,有很多互联网公司本身的基础架构都构建在一些公有云厂商之上,除了节省初期投资之外,另外也是借助于一些大的云厂商本身的网络能力,实现业务更好的覆盖。
另外,也有一些公司,自己的业务系统都构建在自己的IDC或者一些机房托管服务商上,例如国内有很多的托管IDC,但是随着业务的发展,外网的网络带宽和服务质量,对现有业务带来了很多的制约。例如经常会遇到:
由于这些问题的存在,如果云厂商能够提供更好的网络服务质量,可以帮助众多客户减少上述问题的发生。在我们接触的众多客户中,也遇到多个场景,需要对于外网和前端业务做一个冗余。
现状说明:
某场景下,客户的业务都托管在深圳某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封装逻辑比较复杂,容易出问题,不建议这么操作。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有