背景
为支撑 618、818、双十一、双十二等大促的激增流量,苏宁采购了大量的服务器;随着日常新业务增长,每年也需增加大量的服务器满足需求。
这就带来以下问题:其一,在非大促期间服务器资源的利用率相对较低,服务器长期持有成本较高;其二,新增资源需求难以快速满足;其三,每年面临大量老旧机器更换压力,这也是互联网电商企业面临的几点共性成本问题。
为解决以上矛盾,提高服务器的利用率,节约成本,苏宁考虑采用混合云的方案。在平时保有能够支撑日常业务的资源,大促期间将激增流量(10-100x)弹出到公有云以降低大促资源的投入成本,同时将缩减下来的资源投入到业务增长的需求中。
考虑到苏宁很多业务无法弹出到公有云,因此采用混合云部署方案来降低整体资源成本并支撑业务发展。
混合云规划
1 公有云部署方案选择
混合云方案主要有两种部署方案
基于 LDC 方式部署
基于扩展方式部署
LDC 部署方案
扩展部署方案
下面分别从端到端延迟、可扩展性、故障恢复以及资源成本角度进行评估:
端到端延迟:LDC 部署方式相比扩展部署方式,流量相对收敛在同一个数据中心,端到端延迟较低
故障恢复:LDC 部署方式相比扩展部署可以直接通过流量划拨快速恢复业务
可扩展性:LDC 部署可用于同城或异地部署,而扩展部署仅限于同城
资源成本:LDC 部署方式可部署数据层(比如 DB)到公有云,并缩容相应私有云的数据层资源,长期成本较低
同时考虑到苏宁私有云机房附近的公有云资源相对有限,以及提高公司 IT 系统的容灾能力(包括抵抗地震等极端场景),因此苏宁选择基于 LDC 方式的异地混合云解决方案。
2 公有云厂家选型
公有云厂家技术选型主要从以下几个方面进行考虑:
与私有云网络延迟:为了降低整体端到端业务延迟,一般需要选择跨机房 RTT 延迟在一定范围内的机房,因此一般要选择距离 1000 公里以内,为了获得较好用户体验最好选择距离 300 公里以内公有云机房。
机房等级和容灾:为了保障业务的稳定性,因此选择至少 T3 级别以上和不同地震带的公有云机房
IaaS/PaaS 能力:只有公有云强大的计算、存储、网络 IaaS 能力,以及较强的 PaaS(DB、Redis 等)能力,才能有效进行资源扩缩容,降低公有云资源持有成本
行业经验/技术支撑:较强的行业经验,特别是电商行业经验,才能有效支撑业务平稳运行
按照上面几个技术维度和商务维度,苏宁最终选择一个相对合适的公有云提供商支撑未来 3-5 年业务需求。
3 混合云上云策略
混合云上云策略基于成本、资源储备量以及技术能力考虑:
成本:优先选择大促期间流量激增性业务
资源储备量:资源储备量高,但是平时利用率低的业务
技术能力要求:初期优先选择安全性要求较低业务
综上考虑,苏宁初步对于推荐、搜索、红包等业务优先采用混合云部署方式,后续也将压测机和测试环境部署到公有云。
顶层设计
由于这是苏宁首次采用混合云部署方式,为确保方案的合理性及可实施性,项目团队首先制定顶层设计,包括目标、价值和设计原则,经过充分讨论,并最终达成一致,在总体方案以及各个业务系统方案设计过程中严格遵守,不断复盘,以保证设计不偏离主航道并且可实施。
1 目标
1)弹出去:大促期间,短期内使用公有云资源弥补私有云资源的缺口,支持大促期间业务的需要;
2)缩下来:从整体上降低私有云的持有成本,并且支持业务发展。
2 价值
1)支持业务的快速发展:苏宁每年的业务规模快速增长,所依赖的 IT 资源也成倍增长,通过混合云方案可降低资源采购周期;
2)降低持有成本:由于电商业务的特殊性,大促流量与平时流量相差上百倍,大促期间将流量划拨到公有云,实现私有云与公有云混布,降低私有云长期持有成本;同时,通过技术手段降低上云的成本。
3 原则
1)公有云与私有云的差异性尽量由 IaaS 层屏蔽,做到业务的无感知,减少 PaaS/SaaS 层的开发和运维;
2)充分合理利用公有云资源和能力,降低私有云大促成本;
3)上云的数据信息必须受到保护,避免信息泄露;且公私有云之间互访需管控并可降级;
4)降低跨机房信息传输,从而降低带宽成本和网络延迟;
5)公有云机房的可靠性需要 有 SLA 保证,并有应急预案。
基于顶层设计的要求,项目团队开始异地混合云总体方案的架构设计。
架构设计
异地混合云架构基于原有苏宁多数据中心多活架构[1],可以说,混合云架构是多活架构的演进和拓展。
1 概念介绍
Cell:业务可封闭收敛最小执行分片;业务对请求空间按一定维度(比如会员、门店等)划分分片。
LDC:逻辑数据中心,是由多个业务可封闭 cell 组成的集合单元,拥有独立的基础中间件系统(包括 RPC, MQ, DNS 等),以及出口网络等。
PDC:物理数据中心,指物理上独立的一栋建筑,一般每栋有好几层,存放一系列机柜和上千和上万服务器,构成一个 PDC。
AZ(Available Zone):可用区,具有独立的故障隔离空间,拥有独立网络设施或电力设备,由相邻的单个或多个 PDC 组成。
Region:地理区域,有多可用区所组成的集合,区域之间故障域完全隔离。
2 多活逻辑架构
按照用户分布到不同的数据中心,多个数据中心都提供服务,在一个数据中心出现问题时,可以随时将流量切到另外一个正常的数据中心。
服务规划:根据业务不同功能,将服务拆分为分片服务,共享服务,竞争服务,索引服务,控制服务以及管理服务。各服务类型单独设置路由规则,同时支持灰度路由;
统一服务路由:从接入层到服务层以及最终的数据层,都遵守统一基于 cell 的路由策略,保证同一用户的交易在一个数据中心完成;
数据高可用:多数据中心保证数据库高可用,采用数据全冗余方式,数据在任何一个数据中心都是可用的,从而保证高可用,任一数据中心故障,不影响数据的可用性。
相关服务和路由介绍,请参考原有苏宁多数据中心多活设计方案[1]
3 混合云总体架构
混合云方案是基于苏宁现有多数据中心多活方案进行的延伸和拓展,所有的请求尽量收敛在同一个 LDC,尽量避免跨机房调用,降低端到端的网络延迟,降低故障恢复时间和提升安全管控。
混合云基于对公有云的 IaaS 资源进行统一纳管,尽量使得 PaaS(中间件)和 SaaS(业务)保持不变,降低业务改造成本。
混合云的主机房设置在私有云,以便统一监控以及更好的数据保护(包括大数据处理)
所有发布和流程管控都通过私有云进行处理和管控。
4 混合云网络拓扑架构
数据中心之间网络采用环状方式连接,任何一条线路都不影响多个数据中心之间的连通性,比如原有私有云 LDC#1 跟公有云通过线路 #3 连通,当线路 #3 故障,则公有云通过线路 #4 和线路 #1/#2 跟私有云 LDC#1 进行联通。也就是说,公有云与私有云之间,以及私有云和私有云之间的网络不会出现单点故障,从而确保整个网络连通稳定性。
关键技术特性
异地混合云主要关键特性如下:
IaaS 多云管理:通过云管平台统一纳管私有云和公有云计算、网络、存储资源,从而降低上层 PaaS 和 SaaS 的变更。
安全管控:通过东西网关引入和端口管控以及数据加密存储,降低混合云安全风险
多机房拓扑管理:通过优化原有多活的拓扑管理,支持 N>=3 个机房的数据库和缓存等数据层流量切换和拓扑管理
降成本措施
一键建站:通过部署编排以及部署复用,降低人工反复部署的人力成本和租用成本
非对称部署:由于公有云相比私有云处理能力较强,因此对于 APP、DB、Redis 非对称部署,可以大大降低在公有云的租用成本
压缩传输和限速:由于异地部署带宽资源成本较高,因此通过 MySQL/HBase 等压缩传输和限速,降低跨机房带宽成本。
1 IaaS 多云管理
PaaS(比如 APP 或数据库等)通过资源编排层调用私有云 IaaS SDK 或公有云 IaaS SDK,从而创建相应的服务,资源编排层对上层 PaaS/SaaS 屏蔽对应的底层 IaaS 层差异,简化上层 PaaS 和 SaaS 的业务改造。其中公有云对接主要涉及以下三种资源:
计算资源: 根据不同业务类型选用不同的计算资源型号。
网络资源(比如 VPC/SLB/EIP/NAT 等): 对接公有云网络资源,主要涉及 VPC,子网,VPN/专线网关,SLB, EIP,NAT 等。
存储资源(比如 OSS 等): 为了降低相应的成本,镜像资源等存放到公有云的 OSS。同时为了实现部分系统计算存储分离,通过对接公有云的块存储来实现。
2 混合云数据层拓扑结构
有别于星型拓扑结构,多个 LDC 采用网状方式连接,写 LDC 写操作将同步到各个机房,从而简化整个拓扑管理。
写机房切换:当写机房故障或切换到新的机房,则所有写机房将重建复制关系到其它机房。
3 安全管控
(1)东西网关
由于目前 RPC 跨机房直接访问 APP,导致出现网状连接,并且没有固定目标端口,不利于网络安全隔离,因此需要引入东西网关进行跨机房访问安全隔离并进行管控,避免公有云与私有云请求随意访问,提升混合云的安全性。
(2)网络管控
私有云:在私有云的 DCI 交换机根据网段进行隔离,仅允许特定公有云网段访问私有云
公有云:
外部用户:所有外部用户访问公有云应用,其 SSL 证书通过公有云 SLB 进行证书卸载,确保端到端的传输安全,其次在公有云 VPC 内部,应用访问都需经过 WAF 进行过滤确保欺诈流量的剔除。确保外部流量的访问安全。
VPC:公有云与私有云之间子网根据不同子网和特定端口进行 ACL 隔离,对于特定实例访问采用安全组进一步进行 ACL 隔离,确保公私有云之间,以及实例间访问的安全性
运维:运维人员通过堡垒机才能接入到公有云的 VPC 进行运维,确保公有云的运维访问的安全。
(3)加密存储
私有云:对应数据库(MySQL、HBase 等)无需加密存储。
公有云:则根据业务需要(敏感数据加密,比如银行卡或账务数据),可以按照表级别或库级别加密存储,并加密方式备份到远程存储以及恢复。
4 降成本解决方案
(1)一键建站
建站模型主要由以下几个阶段组成:
网络资源创建与编排
物理/虚拟资源集群创建与编排
基础组件创建与编排
业务系统创建与编排
数据复制与同步
流量划拨与切换
相关资源预先申请和编排完成,建站时,一键式实现资源的创建,业务部署,数据同步,流量划拨,白名单拨测等。一键建站节省了人工的部署的成本,提升了建站的效率, 从而降低资源租用成本和人力成本。
(2)非对称部署
APP 非对称部署
由于公有云与私有云的计算资源处理能力不同,为了简化计算资源部署,公有云与私有云的部署采用相同的规格,但是针对不同流量,部署不同的实例个数,从而降低公有云资源成本。
当大促流量划拨到公有云后,可以缩容私有云 APP 的部署实例数,以降低私有云资源成本。
同时,充分利用公有云的弹性能力,在前期预热阶段,采用最小化部署,验证主要功能,在大促期间,扩容到正常规模,以减少资源成本。
数据库非对称部署
私有云:数据库的计算节点和存储是一体,弹性能力较弱,容量规划需要预留较大冗余。
公有云:在公有云可以利用公有云 IaaS 能力实现计算节点和存储节点分离,其中计算节点可以根据流量大小垂直扩缩容,这样可以大大降低公有云部署成本。
缓存非对称部署
由于公有云的处理能力较为强劲,为了降低公有云的缓存部署成本,采用非对称部署方式进行部署,对于私有云多个 Shard(分库)合并部署到公有云,降低整体部署成本。具体方案是源端通过抽取工具获取 Redis 变更数据写入到中间存储介质,然后目标端通过订阅逻辑变更数据再写入目标 Redis 集群(有别于源端的 Redis 集群拓扑结构)。
(3)缓存冷热数据分离
由于目前缓存的内存采用 1:1 复制方式,公有云和私有云缓存内存大小必须一致(即使公有云的缓存能够支持更多流量),这会导致公有云的算力资源浪费。根据苏宁缓存使用特征,热点数据一般低于 20%,大部分都是冷数据,因此对缓存采用冷热数据分离,DRAM 仅保留热数据,而对于全量数据,则写入到 SSD 盘或持久化内存,避免公有云资源浪费。
(4)数据库传输优化
由于异地传输的带宽成本相对较高,因此对传输量较高的复制操作做如下操作,以便降低相应的传输成本:
支持压缩传输:比如 MySQL,公有云与私有云跨机房使用压缩传输, 从而减少异地部署的带宽要求
不支持压缩传输:比如倒排索引或部分 HBase,对延迟不敏感,因此对于倒排索引/HBase 的传输采用限速,降低异地跨机房带宽要求
总结
当前,苏宁混合云项目经历一年左右的建设,已初具规模,能够为苏宁后续大促保驾护航,降低大促扩容成本,以及私有云资源长期持有成本;此外,利用公有云弹性能力和分时计费特性,后续规划将测试环境上云,从而进一步降低测试资源运行成本,朝着“保大促、降成本”两个核心目标继续稳步迈进。
参考文献:
陈跃泉,涂成义,马忠成,” 历时三年,苏宁如何建设多数据中心多活的实践项目”, InfoQ, 2020
作者介绍:
陈跃泉,云网万店集团 IT 总部 CTO 办公室,架构总监,苏宁多数据中心多活项目首席架构师和混合云项目总体技术负责人,拥有 16 年零售、电信、金融等超大型或大型项目架构设计经验,对大规模分布式系统 PaaS 和 IaaS 架构设计有深入的理解和思考。
涂成义,云网万店集团 IT 总部 CTO 办公室,高级架构师,曾在华为,中兴等多家 IT 公司任职架构设计,技术负责人。目前专注于云计算相关技术研究,对高并发,高可用架构有较深入的理解和思考,混合云项目核心成员。
马忠成,云网万店集团 IT 总部 CTO 办公室,高级架构师,混合云项目核心成员,在加入苏宁之前从事多年的运营商 IPTV、CDN 研发设计和规划工作。
评论 2 条评论