应用交付网络方案

更新时间:
复制为 MD 格式

业务系统服务端部署于阿里云上,访问者如何找到服务并流畅地访问服务,本文重点阐述访问者和服务端之间的网络方案,即应用交付网络方案。

1 背景和概念

1.1 什么是应用交付网络?

“移动互联网和微服务化,催熟了应用交付网络技术”。我们使用的每一个互联网应用背后,都依赖应用交付网络技术支撑。

  • 首先,请从客户端-服务端访问模型的宏观角度感受一下什么是应用交付网络:

image

1)客户端,20年前没有无线智能终端设备,终端基本就是个人PC、里面基本也就是一个浏览器客户端;10年前(2014年)中国正式进入4G移动网络时代(带宽、速率提升到足以支撑应用、视频等App的使用),客户端种类变得丰富起来;现在我们的移动客户端上应用安装的数量可达几个屏幕、可以说只有你想不到的、没有你下载不到的。各种社交App、支付App、购物App、视频App等。
2)服务端,一个App的功能越来越多(短视频App里面有直播、电商、评论等,电商App里面有各种频道等等),这意味着服务端从单线程→多线程→微服务演进。
那么,这么多的客户端App、这么多的服务端微服务,二者异地分隔、遥遥相望,如何能让你在客户端上的每一次点击和滑动都能快速地找到服务端的服务并得到响应?---------这就依赖于连接客户端和服务端的应用交付网络实现网络加速、负载均衡、安全防护、可观测性等关键特性。

  • 我们再从微观分解看看:

image

从客户端到服务端的一次请求的报文(数据包)之旅来看:客户端App要投递的数据报文需经过源端的TCP/IP协议栈(应用层、传输层、网络层)、再经过中间的互联网络和网络设备、到达服务端后再通过TCP/IP协议栈一层一层送达到服务端进程或微服务程序。那么这个传输过程中,如何找到服务IP(服务器)、服务端口(服务进程)、URL(服务处理组件)等,并快速、准确地投递送达过去?这个就要靠应用交付网络技术。

1.2 应用交付网络的作用?

1)服务发现(Service Discovery)

根据服务端(Server)不同的类型(ECS、容器POD、IDC内服务器等)和不同的网络层级(L4TCPUDP、L7HTTPHTTPS等),服务发现所用的技术和产品也不相同。

image.png

2)服务连通(Service Connectivity)

IP层的网络连通是靠路由寻址和选路来实现的,IP层之上的网络连通主要依靠“代理”来实现,因为代理除了能实现网络连通之外,还具备以下应用交付所需的能力:

• TLS termination

• Load balancing

• Authentication/authorization

• Tracing, logging

• Security

• Application traffic capture

• 加速

image

阿里云上,有不同的“网络代理”产品来实现服务连通:

image

所以,针对不同服务端(Server)类型(ECS、容器POD、IDC内服务器等)、应用服务所处的不同网络层级(L4TCPUDP、L7HTTPHTTPS等),使用不同的“网络代理”产品来构建不同的应用交付网络方案。

注:本文介绍的应用交付网络方案专指和互联网服务相关的,企业内部的内网应用交付网络不具备典型性在此不做介绍。

2 本方案目标客户

互联网行业客户

即通过互联网进行信息交流、服务提供、产品销售等一系列活动的产业集合。如:电子商务、社交媒体、搜索引擎、在线娱乐、物联网(IoT)、金融科技(Fintech)等。

这类客户首先需要解决客户端如何发现互联网上的这些服务、并且能够流畅地访问服务的问题。

非互联网行业(传统泛企业)但使用互联网访问企业内部信息化系统的客户

随着互联网技术的发展,企业内部的信息化系统(企业资源规划(ERP)、客户关系管理(CRM)、供应链管理(SCM)、办公自动化(OA)等),越来越多地依赖于互联网接入来提升对客户端网络的覆盖。

这类客户同样也是互联网访问,也需要解决服务发现和服务连通的问题。

3 方案介绍

根据服务端(Server)类型(ECS、IDC内服务器、容器POD等)和应用服务所处的不同网络层级(L4TCPUDP、L7HTTPHTTPS等),我们提供不同应用交付网络方案。

3.1 云服务器ECS的应用交付网络方案

image

1、场景方案选择

  • 用阿里云上ECSWeb Server,即:Application安装在ECS中。NLB挂载ECS、通过NLBEIP+4PORT提供互联网访问。上图1

  • 用阿里云上ECSWeb Server,即:Application安装在ECS中。ALB挂载ECS、通过ALB7层监听和转发提供互联网的Url访问。上图2

  • 用阿里云上ECSWeb Server,即:Application安装在ECS中。如果7层自研和定制化有较高要求,选择4NLB+自建7层代理方式。NLB挂载自建的7层代理、通过NLBEIP+4PORT提供互联网访问,7URL的转发由自建7层代理完成。上图3

2、NLB/ALB物理位置选择

  • Region:尽量和ECS在同地,如果有贴近客户端加速需求或跨地域公网出口容灾需求时可以跨地域部署

  • 可用区:多可用区,尽量和ECS相同以便于同可用区转发时延最短

  • NLB/ALB的访问尽量使用其自带的域名方式:可用区故障后可以自动摘除故障的VIP

3、NLB/ALB和后端Real Server之间的网络

  • 尽量同VPC、可以支持跨VPC或跨地域中间使用TR等方式使私网路由可达,具体参见VPC内网络设计和全球互联网络设计

4、安全防护设计【可选】

  • 安全组:NLB/ALB可以加入安全组实现黑白名单策略

  • VPCNACL:可以支持到私网NLB/ALBVIP的访问流量过滤

  • DDoS&WAF:公网NLB/ALBEIP前端可以挂DDoSWAF防护

3.2 IDC服务器(公网出口用阿里云)的应用交付网络方案

image.png

场景方案选择

  • IDC服务器做Web Server,即:Application安装在IDC服务器、通过4PORT暴露服务,互联网服务入口使用阿里云。NLB通过EIP或域名承接互联网访问、转发请求到IDC服务器。上图1

  • IDC服务器做Web Server,即:Application安装在IDC服务器、通过URL暴露服务、互联网服务入口使用阿里云。ALB直接挂载IDC服务器、通过ALB7层监听和转发提供互联网的Url访问,ALB通过EIP或域名承接互联网访问。上图2

  • IDC服务器做Web Server,即:Application安装在IDC服务器、通过URL暴露服务、互联网服务入口使用阿里云。NLB挂载自建的7层代理(在阿里云上)、通过NLBEIP+4PORT提供互联网访问,7URL的转发由自建7层代理完成。NLB通过EIP或域名承接互联网访问。上图3

  • IDC服务器做Web Server,即:Application安装在IDC服务器、通过URL暴露服务、互联网服务入口使用阿里云。NLB挂载自建的7层代理(在IDC)、通过NLBEIP+4PORT提供互联网访问,7URL的转发由自建7层代理完成。NLB通过EIP或域名承接互联网访问。上图4

1、NLB/ALB物理位置选择

  • Region:尽量和ECS在同地,如果有贴近客户端加速需求或跨地域公网出口容灾需求时可以跨地域部署

  • 可用区:多可用区,尽量和ECS相同以便于同可用区转发时延最短

  • NLB/ALB的访问尽量使用其自带的域名方式:可用区故障后可以自动摘除故障的VIP

2、NLB/ALB和后端Real Server之间的网络

  • 尽量同VPC、可以支持跨VPC或跨地域中间使用TR等方式使私网路由可达,具体参见VPC内网络设计和全球互联网络设计

  • NLB直接挂载IDC服务器时,不能直接透传报文源IP,需要使用Protocol ProxyTOA方式携带

  • ALB直接挂载IDC服务器时,不能直接透传报文源IP,需要使用HTTP头的XFF字段携带

3、安全防护设计【可选】

  • 安全组:NLB/ALB可以加入安全组实现黑白名单策略

  • VPCNACL:可以支持到私网NLB/ALBVIP的访问流量过滤

  • DDoS&WAF:公网NLB/ALBEIP前端可以挂DDoSWAF防护

3.3 容器POD的应用交付网络方案

image.png

image

场景方案选择

  • 用阿里云上容器ACKPODWeb Server,即:Application安装在ACKPOD中、 4层服务通过LoadBalancer暴露。NLBLoadBalancer角色,被ACK集群的Cloud-Controller-Manager纳管。上图1

  • 用阿里云上容器ACKPODWeb Server,即:Application安装在ACKPOD中、 7层服务通过ALB Ingress暴露,ALB通过EIP或域名,承接互联网访问。上图2

  • 用阿里云上容器ACKPODWeb Server,即:Application安装在ACKPOD中、7层服务通过Nginx Ingress暴露。NLB做南北网关,对外暴露EIP或域名,将互联网访问引流到Nginx Ingress上。用Nginx自建Ingress、定制化能力强,适合需要复杂功能且技术实力深厚的客户。上图3

  • 用阿里云上容器ACKPODWeb Server,即:Application安装在ACKPOD中、7层服务通过MSE Ingress暴露。NLB做南北网关,对外暴露EIP或域名,将互联网访问引流到MSE上。适合需要复杂Ingress功能、又不想自己运维的客户。上图4

1、NLBLoadBalancer类型Service,提供L4层服务

2、ALBIngress类型Service,提供L7层服务

  • ACK集群的Alb-Ingress-Controller通过AlbConfig(CRD)来管理ALB。ALB配置词典:ALB Ingress配置词典

  • 因为ALB自身具备南北流量入口、负载均衡、高可靠能力,所以不需要额外创建LoadBalancer Service

  • 注意ALB配额限制:ALB配额计算方式

3、NLB做南北网关,引流到Nginx Ingress Controller提供L7层服务

  • ACK集群的Nginx-Ingress-Controller管理NLB,以NLB实例创建LoadBalancer Service,作为南北网关(南北流量入口、4层流量负载分发、跨可用区高可靠)

4、NLB做南北网关,引流到MSE提供L7层服务

  • ACK集群的MSE-Ingress-Controller管理NLB,以NLB实例创建LoadBalancer Service,作为南北网关(南北流量入口、4层流量负载分发、跨可用区高可靠)

3.4 客户端到负载均衡SLB的广域网加速

负载均衡仅仅解决了访问请求进入阿里云之后如何到达后端服务的服务发现和服务连通问题,某些情况下为了改善客户端到负载均衡之间的网络质量,还需要广域网加速方案。

【方案概述】全球加速GA在加速区域(上车点)部署反向代理、将客户端流量就近吸入、利用阿里云全球网络(专线互联:丢包少、抖动小、时延低)传送回Server,同时对TCP、HTTP等协议自动调优。

image

1、GA实例付费类型选择

  • 用量稳定选包年包月,无法预估用量或用量波动明显选按量付费

2、接入方式选择

  • CNAME方式【推荐】:将业务域名的权威DNS的默认解析记录CNAMEGA的加速域名(1、加速域名会按地域智能解析;2、如果加速IP不可达,GA会摘除此IP的解析记录实现自动容灾切换)

  • 加速IP方式:1、客户端直接访问加速IP(无域名业务);2、权威DNSA记录解析到加速IP,需要DNS支持按地域智能解析、当加速IP不可达时手动删除此A记录或使用带健康检查的DNS实现自动容灾切换)

3、加速区域设计

  • 加速区域选择:就近客户端选择一个或多个,当无法判断时可以使用NIS产品控制>性能观测>互联网访问性能工具进行公网质量测量

  • 公网质量类型选择:默认为BGP(多线),需要海外公网回国优化时可以选择BGP(精品)

  • 公网付费方式:用量稳定选按带宽,无法预估用量或用量波动明显选按流量

4、监听设计

  • 监听协议选择:支持tcp/udp/http/https。不同域名/路径到不同源站时选http[s]、到相同源站时可选择tcp

  • 监听路由选择:1)默认选择智能路由类型;2)自定义路由类型可以实现监听端口到后端源站IP+端口的精确映射转发(如游戏、会议根据端口分房)

  • 高级特性:1)同一服务多源站时可以使用客户端亲和性设置将同一客户端请求路由到同一源站;2)附加HTTP头字段可以附带更多客户端信息(如客户端源IP)

5、回源站设计

  • 同一业务多地域源站部署时(如多地域源站主备容灾、多地域源站负载分担、多地域源站就近覆盖客户端、源站跨地域平滑迁移等),使用多地域终端节点组+优先级配置+流量调度百分比+源站健康检查实现

6、高级转发策略设计

  • 创建监听后,系统会自动创建一条默认的转发策略关联到默认终端节点组

  • 如果需要更精细的转发条件(域名、路径、HTTP标头、HTTP请求方法、Cookie、SourceIP、查询字符串)或更多的转发动作(转发至、重定向至、返回固定响应、重写、写入Header、删除Header、丢弃(阻断流量)),可以自定义转发策略及匹配优先级

7、跨境网络选择

  • 跨境:加速区域和源站,一端中国内地、另一端非中国内地。GA提供2种跨境网络:

    • 精品带宽:使用BGP精品线路轻负载、拥塞少的网络跨境

    • 联通专线:比BGP精品线路效果好,需要向联通申请跨境业务合规认证、并且源站域名要在中国内地有ICP备案

  • 网络使用按流量计费时,默认使用精品带宽跨境,符合条件的业务可以手动切换到联通专线跨境来提升加速效果

  • 网络使用按带宽计费时,符合条件的业务需要手动购买联跨域带宽包(通专线跨境)来提升加速效果;不符合条件的业务购买基础带宽包-精品加速带宽

8、运维设计【可选&推荐】

  • GA的访问日志:可以针对监听+终端节点组开启访问日志,客户端源IP、客户端源端口、目的IP、目的端口、加速地域等字段信息会记录到sls中(SLS有费用)

  • 监控及告警:GA实例可以开启流量、带宽等监控并配置告警

  • 探测与诊断:GA实例配置部署完成后,可以使用实例诊断确认部署是否正确。业务运行期间,开启源站探测可以监控业务可用度,当业务可用度下降时可以开启网络诊断确定是否是网络问题

9、安全防护设计【可选】

  • GA的访问控制列表:每个监听可以绑定访问控制策略组实现黑白名单机制

  • 关联DDoS:全球加速实例的加速IP默认免费开启了DDoS基础防护,在实例详情页,单击加速区域页签,找到目标加速IP,在加速IP或安全防护列可以查看防护阈值

  • 关联WAF:在GA和源站之间可以部署WAF防护

4 产品选型

4.1 SLB产品选型对比

SLB选型

对比

传统型负载均衡CLB

应用型负载均衡ALB

网络型负载均衡NLB

产品定位

  • 第一代负载均衡(停止功能演进)

  • 同时具备一定的4层和7层处理能力
    支持TCP/UTP/HTTP/HTTPS等协议

  • 可挂载ECS/ENI/ECI实例

  • 第二代负载均衡(面向7层应用交付)

  • 强大的7层处理能力与丰富的高级路由功能
    聚焦HTTP、HTTPSQUIC应用层协议

  • 可挂载ECS/ENI/ECI实例、私网IP、函数计算

  • 第二代负载均衡(面向4层应用交付)

  • 强大的4层处理能力及丰富的挂载能力
    支持TCP/UDP/TCP SSL等协议

  • 可挂载ECS/ENI/ECI实例、私网IP

性能

  • 基于物理机架构
    单实例最大支持100万并发连接

  • 单实例最大支持5万 QPS

  • 单实例最大支持5G 带宽

  • 单实例最大可挂服务器数:200

  • 基于NFV虚拟化平台,支持弹性伸缩
    单实例支持100万 QPS

  • 单实例最大支持100G带宽

  • 单实例最大可挂服务器数:1000

  • 基于NFV虚拟化平台,支持弹性伸缩
    单实例支持1亿并发链接

  • 单实例最大支持100G带宽

  • 单实例最大可挂后端服务器数:1000

功能特性

  • 4、7层基础能力

  • 高级特性弱

  • 丰富7层特性,基于内容的路由

  • HTTP标头改写、重定向、重写、限速等

  • 丰富4层特性,支持大规模TCP SSL卸载

  • 支持全端口转发、IP target挂载、连接限速等

可靠性

  • 主备可用区

  • SLA 99.95%

  • 主主可用区

  • SLA 99.995%

  • 主主可用区

  • SLA 99.995%

云原生支持

  • 可适配阿里云ACK/ASK,做LoadBalancer

  • 云原生Ingress网关

  • 支持流量拆分、镜像、灰度发布和蓝绿测试

  • 可适配阿里云ACK/ASK

  • 可适配阿里云ACK/ASK,做LoadBalancer

典型应用场景

  • 场景1:网站/系统同地域业务高可靠场景
    场景2:四/七层复用业务场景
    场景3:同城双活/主备容灾场景

  • 场景1:互联网应用7层高性能自动弹性场景
    场景2:音视频应用大流量低时延场景
    场景3:云原生应用金丝雀蓝绿发布场景

  • 场景1:互联网大流量/高并发业务入口

  • 场景2:车联网、智能家居等IOT业务入口
    场景3:多活容灾/IDC云上出入口场景

4.2 容器入口Ingress服务选型对比

维度

Nginx Ingress

ALB Ingress

定位

  • 用户自有组件,自行运维

  • 用户可根据自身需求进行定制

  • 阿里云全托管组件,超大容量、自动弹性、高可靠、免运维

  • 功能丰富,和多种云产品深度集成

  • 同时兼做LoadBalancer,节省负载均衡成本;不需要占用POD节省集群成本

性能

  • 依赖手动调优,需要进行系统参数和Nginx参数调优

  • 需要配置合理的副本数和资源限制

  • 单实例支持100QPS

  • 单实例支持千万级最大连接

  • 默认使用SSL硬件加速

配置

  • 证书变更需要Reload进程,对长连接有损

  • 非证书变更使用Lua热更新,Lua插件变更需要Reload进程

  • 采用OpenAPI机制动态配置,时效性高

  • ALB支持完全的热配置、变配无需Reload,长连接转发无损

功能

  • 支持HTTPHTTPS协议

  • 支持按域名/URL/HTTP标头路由、支持金丝雀和蓝绿发布等

  • 支持HTTP/HTTPS/QUIC/Websocket/WSS/gRPC协议

  • 支持header、Cookie、Weight多种转发条件和动作组合,支持路由优先级、双向的转发规则,支持金丝雀和蓝绿发布等

安全

  • 支持HTTPS协议

  • 支持黑白名单

  • 支持全链路HTTPS、SNI多证书、RSA/ECC双证书、TLS 1.3TLS算法套件选择

  • 默认集成DDoS防护,可一键开启WAF防护,支持ACL黑白名单

  • l控制与转发分离,避免共用容器所引发的安全漏洞风险

运维

  • 用户自行运维

  • 需要主动配置规格和调优

  • 通过配置HPA进行扩缩容

  • 全托管、免运维、超高SLA

  • 无需配置规格,默认支持超大容量

  • 自动弹性,处理能力随业务峰值自动伸缩

5 应用场景

满足如下2个条件的所有场景:

  • 客户服务端部署在阿里云或IDC、通过阿里云接入互联网;

  • 让他的用户能够通过互联网流畅、安全、可靠地访问到服务端。