通过本文,您可以了解与Serverless 应用引擎 SAE(Serverless App Engine)网络相关的概念,以及面对不同的网络访问需求时如何选择适配的网络类型。
概念和能力索引
一级分类 | 二级分类 |
无 | |
视频教程
阿里云网络基础概念
专有网络(VPC):基于阿里云创建的自定义私有网络,不同的专有网络之间在逻辑上彻底隔离。
说明私有网络默认不可访问公网。
交换机(vSwitch):交换机是组成专有网络的基础网络设备,对应实体物理机房。在VPC内创建云资源时,必须指定云资源所连接的交换机。
弹性公网IP(EIP):只能和一个资源(ECS、SAE实例等)绑定,绑定的资源具备出、入公网的能力。
NAT网关(NAT Gateway):支持VPC内的资源访问公网(SNAT)。区别于EIP的核心功能,公网NAT网关可用于VPC内的所有资源,而EIP只能用于VPC内的一个资源。
SAE网络访问主要场景与方式
将应用部署到SAE后,您可能会遇到以下网络访问需求。概念图如下所示。
SAE应用之间的内网互相访问(非微服务)
Serverless模式下,每次部署都会产生新的内网IP,但不支持直接基于实例的IP来互相访问应用。您可以通过以下方式实现。
SAE Service(CLB):基于阿里云负载均衡产品(私网CLB)实现的SAE服务来访问。更多信息,请参见基于CLB配置应用服务访问。
SAE ServiceName:基于SAE的K8s底座,实现的基于域名的应用访问。每个SAE的应用会有一个SAE环境中可供访问的域名。更多信息,请参见基于K8s ServiceName配置应用服务访问。
SAE Ingress(ALB/CLB):基于阿里云负载均衡产品(私网ALB/CLB)实现的网关路由,可以根据不同的域名、路径路由到不同的SAE应用。更多信息,请参见基于ALB/CLB配置网关路由(Ingress)访问。
SAE应用需要被公网访问(入口流量)
您可以通过以下方式实现。
SAE Service(CLB):基于阿里云负载均衡产品(公网CLB)实现的SAE服务访问。更多信息,请参见基于CLB配置应用服务访问。
SAE Ingress(ALB/CLB):基于阿里云负载均衡产品(公网CLB/ALB)实现的网关路由,可以根据不同的域名、路径路由到不同的SAE应用。更多信息,请参见基于ALB/CLB配置网关路由(Ingress)访问。
SAE EIP:为SAE应用的每个实例绑定一个EIP,使该实例能够同时具备出、入公网的能力。更多信息,请参见基于EIP配置SAE实例公网访问和访问公网的能力。
SAE应用需要访问公网(出口流量)
您可以通过以下方式实现。
NAT网关:为SAE应用关联的VPC或者vSwitch配置NAT网关,则所有相关的SAE应用都具备了访问公网的能力。更多信息,请参见配置NAT网关使SAE应用能访问公网。
SAE EIP:为SAE应用的每个实例绑定一个EIP,则该实例会同时具备出、入公网的能力。更多信息,请参见基于EIP配置SAE实例公网访问和访问公网的能力。
SAE需要访问VPC内的ECS、RDS、Redis等
SAE基于阿里云VPC网络,因此无需额外配置,可以直接访问同一VPC内的资源(ECS、RDS、Redis等)。反之,同一VPC内的阿里云资源也可以访问SAE。
需要确认安全组、产品白名单是否放开。如果遇到问题,请参考常见问题的步骤进行排查。
微服务应用访问注册中心以及实例互相访问
更多信息,请参见SAE微服务相关概念和能力。
SAE网络访问对比项
SAE中ServiceName和网关路由(Ingress)的区别
SAE基于阿里云SLB(CLB和ALB)实现的网关路由(Ingress),具备根据域名、路径路由到不同应用的能力(如下图),而ServiceName不具备该能力。因此,在满足需求的前提下,建议您优先考虑使用网关路由。在需要使用4层TCP协议访问或者无法通过域名访问等场景下,您可以考虑使用ServiceName。
更多信息,请参见以下文档:
基于CLB实现的服务和基于域名(ServiceName)实现的服务的区别
K8s服务有两种模式,一种是基于CLB,另一种是基于ClusterIP。SAE没有直接提供ClusterIP,而是提供了一个可供访问的域名。两者的主要区别如下。
对比项 | CLB | Domain(ClusterIP) |
费用 | 免费 | |
运维 | CLB作为一个独立的阿里云产品,支持配置相关的监控、告警以及收集访问日志到SLS,提供细粒度的问题排查能力。 | 未提供独立的监控、告警、访问日志等能力,需要应用侧本身配置告警和日志。 |
基于ALB实现的网关路由和CLB网关路由的区别
ALB(Application Load Balancer)是阿里云推出的专门面向HTTP、HTTPS和QUIC等应用层负载场景的负载均衡服务。针对网关路由场景,建议您优先考虑使用ALB。更多信息,请参见负载均衡SLB产品家族介绍。
基于NAT访问公网和EIP访问公网的区别
EIP访问公网的示例图如下,每个实例都会绑定一个EIP。如果EIP不足,则会创建失败,导致实例无法对外提供服务。
NAT和EIP两种模式的主要差异如下。
对比项 | NAT | EIP |
生效范围 | NAT可以控制在VPC或者vSwitch级别,为VPC或者vSwitch内所有无公网IP的实例提供访问公网的代理服务。一个VPC或者vSwitch只需要配置一个NAT,其所有实例将具备出公网的能力。 | EIP为实例级别,例如10个实例就需要10个EIP。一个实例绑定EIP后,将同时具备出网和入网的能力。 |
是否固定公网IP | 是。 | 否。新的实例成功绑定EIP后,SAE才会销毁原先的实例并解绑原来的EIP。因此,需保证EIP数量至少为实例数量加一。EIP是变化的,是一个IP池。 |
典型场景 | 应用会自动弹性扩缩,新的实例默认需要出公网的能力,且需要固定IP(95%的用户都适合该场景)。 | 可接受EIP可变,需要直连实例的场景(例如在线会议),另外还需要自行精细化地控制每个实例的生命周期。 |
费用 | 计费详情,请参见NAT网关计费。 | 计费详情,请参见EIP计费。实例数不超过20个时,EIP成本更优。 |
常见问题
SAE应用如何访问公网?
首先参照下图,明确您的需求是“出”公网还是“入”公网。如果是“出”流量,则参考本小节;如果是“入”流量,请参见SAE应用如何被公网访问?。
SAE可以通过配置NAT网关使SAE应用能访问公网或者基于EIP配置SAE实例公网访问和访问公网的能力两种模式访问公网,优先推荐基于NAT的访问模式。两种模式的区别,请参见基于NAT访问公网和EIP访问公网的区别。
SAE应用如何被公网访问?
首先参照下图,明确您的需求是“出”公网还是“入”公网。如果是“入”流量,则参考本篇文章;如果是“出”流量,请参见SAE应用如何访问公网?。
优先推荐基于ALB/CLB配置网关路由(Ingress)访问提供公网访问。如果网关路由方式无法满足您的需求,您可以参考基于CLB配置应用服务访问或者基于EIP配置SAE实例公网访问和访问公网的能力提供访问。主要区别如下。
对比项 | 网关路由(ALB/CLB) | 服务(CLB) | 弹性公网IP(EIP) |
是否具备路由能力 | 具备。可以根据 | 不具备。只能访问该端口背后的一个应用。 | 不具备。一般需要获取EIP列表,并自行控制访问策略。 |
是否支持7层协议 | 支持 | 支持 | 支持 |
是否支持4层协议 | 不支持 | 支持 | 支持 |
是否支持跨域/Rewrite等特性 | 支持 | 不支持。需要应用自行实现。 | 不支持。需要应用自行实现。 |
是否固定访问IP | 是 | 是 | 否 |
费用 |
SAE应用如何和公网域名绑定?
SAE本身并不处理和域名相关的操作,您可以在SAE配置ALB或CLB后,获取相关的公网IP或者域名,再到域名DNS服务进行绑定。
SAE应用无法访问短信服务API怎么办?
参考短信服务接入点,大部分地域只提供公网的接入方式。请先确认SAE应用是否已配置公网访问能力。更多信息,请参见SAE应用如何访问公网?。
SAE应用无法访问ECS怎么办?
请按照以下步骤排查。
确认SAE和ECS服务器都在同一个VPC内,并检查安全组配置是否放开相关的端口。
在容器内执行ping、telnet服务地址的命令检测连通性。如果没有这些命令,请先安装常见命令(操作步骤)再执行。
访问公网ECS地址的具体操作,请参见SAE应用如何访问公网?。
SAE应用无法访问RDS、Redis等怎么办?
请先确认SAE应用访问的RDS或者Redis地址,属于公网地址还是内网地址。内网地址的网络质量和时延都优于公网,因此同一个VPC内优先推荐内网地址。网络的费用与创建的资源类型有关,更多信息,请参见产品计费。如果属于不同VPC,在条件允许的情况下,推荐您使用云企业网CEN(Cloud Enterprise Network)打通,再采用内网地址。确认地址类型后,请按照以下步骤排查。