理解阿里云服务的internal endpoint

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
公网NAT网关,每月750个小时 15CU
简介: 阿里云服务提供的产品中,一般都涉及到endpoint的概念,其中分为internal endpoint和internet(external)endpoint。在阿里云VPC环境中使用这些服务,一般都是建议使用内部endpoint。

阿里云服务提供的产品中,一般都涉及到endpoint的概念,其中分为internal endpoint和internet(external)endpoint。在阿里云VPC环境中使用这些服务,一般都是建议使用内部endpoint。下面就介绍下它们之间的区别,理解了这个机制,在开发使用中更好的使用阿里云服务。

VPC的工作机制及一般产品架构

我们产品是运行在阿里云VPC环境中的,VPC中在各个AZ(Available Zone可用区)中创建了几个vSwitch,然后有一个路由表来进行相关的路由设置。VPC内的程序如果需要访问外网,会通过NAT Gateway来进行。同时产品对外提供的服务是通过SLB(Load Balancer 负载均衡器)来完成。见下面的示意图。
21
图1:VPC and Product Architecture

阿里云的很多服务都提供两种访问方式,一种是internal endpoint即内部访问点,一种是public的internet endpoint。在VPC内部要访问阿里云服务时,比如OSS,RDS,Table Store,MNS等,有2条路径可以使用,一条是通过阿里云内部访问,这样不会经过NAT gateway,路由表直接到系统到阿里云服务;另一条是公网外部访问,那么就要经过NAT gateway转到阿里云服务。下面的图是从路由表中提取出来的,0.0.0.0/0表示不在路由表中的条目会通过NAT gateway出去。而100.64.0.0/10这个地址恰恰是阿里云服务的内部访问点的IP地址段,是通过阿里云内部系统直接到达对应服务,不会经过NAT gateway。
1
图2:VPC路由表设置

以OSS为例,内部endpoint是oss-cn-shanghai-internal.aliyuncs.com,外网的endpoint是oss-cn-shanghai.aliyuncs.com。下面分别ping它们,得到IP地址。而100.118.102.33就属于100.64.0.0/10网段。
2
图3:内部endpoint和外部endpoint IP地址

VPC内通过internal/internet endpoint访问阿里云服务的区别

通过图一的示意图,我们理解了internal 访问阿里云服务是不会经过NAT gateway的,直接通过内部系统路由到了阿里云特定服务器;而通过internet访问阿里云服务就会通过NAT网关。那么这两者具体有什么区别和影响呢?我列举以下几点:
1.NAT带宽占用。NAT是有一定的带宽限制的,具体是根据NAT实例类型来决定。负载比较大的情况会把NAT带宽占满,影响正常服务的外网访问性能。
2.NAT连接数的占用,因为NAT能提供的连接数也是有限制的。
3.访问速度的不同。前面提了外网访问会占用NAT带宽,而阿里云内网的带宽相较于NAT外网带宽会高很多。所以访问速度性能高很多。
4.外网访问流量费用。访问外网需要收取流量费。
既然访问阿里云服务通过NAT有这么多弱势,那么它有什么优势吗?答案是,没有。正是因为如此,所以VPC内访问阿里云服务都是建议通过内部访问点去访问的。

访问阿里云服务的方式

目前我们用到的很多阿里云服务都有提供内网访问点,比如docker registry (ACR,Ali Cloud Registry)、OSS、Loghub、RDS、Redis、MNS、MQ、Table Store等等。开发人员一般通过相应服务提供的SDK来使用对应的服务,如果阿里云没有对应的SDK,开发会通过第三方的一些库来使用,或者直接使用阿里云的API。有些调用是明确需要我们提供endpoint的,所以大家比较容易提供相应的内网endpoint给SDK/API,比如通过环境变量配置的方式传递过去。而有些SDK或者第三方的库没有明确要求我们提供endpoint,这个时候我们就要额外注意了,要检查以下代码到底用的是什么类型的endpoint。

比如下面的代码就是MNS service的NodeJS 库的实现。在构造MNS的时候,如果只是传一个region字符串的参数,它就会用Public的网络方式来使用MNS,如果要想使用内网的endpoint,要先构造Region实例并改成内网访问。
3
图4:MNS NodeJS库

下面列几个常用service的内网和公网endpoint:
Docker registry:
registry-vpc.cn-shanghai.aliyuncs.com
registry.cn-shanghai.aliyuncs.com

OSS:
http://oss-cn-shanghai-internal.aliyuncs.com
http://oss-cn-shanghai.aliyuncs.com

MNS:
http://xxxx.mns.cn-shanghai-internal.aliyuncs.com/
http(s)://xxxx.mns.cn-shanghai.aliyuncs.com/

Table Store:
https://xxxx.cn-shanghai.ots-internal.aliyuncs.com
https://xxxx.cn-shanghai.ots.aliyuncs.com

总结

通过上面的介绍,我们知道使用内部endpoint来访问阿里云服务的优势。使用阿里云service时能够注意一下这个问题,明确到底使用了什么类型的endpoint,做到心里有数。

相关文章
|
29天前
|
Arthas 弹性计算 运维
阿里云ECS监控服务
阿里云ECS监控服务
398 2
|
1月前
|
监控 网络协议 API
阿里云BssOpenAPI是一个基于阿里云开放API的服务
【2月更文挑战第24天】阿里云BssOpenAPI是一个基于阿里云开放API的服务
135 6
|
1月前
|
自然语言处理
阿里云百炼大模型服务--企业知识检索问答指南
阿里云百炼提供的企业知识检索问答应用可以帮助大家实现让大模型瞬间“开挂”的技能。结合上传的知识数据,大模型识别解析学习文档内容,最终给出生成式回复。我们在通义千问-Turbo/Max大模型基础上,将文件上传、读取、切片、向量化等过程都开发好预置在应用中,实现开箱即用,更能满足您的日常需求。
|
1月前
|
弹性计算 负载均衡 网络协议
这种情况可能是由于阿里云的API服务出现了短暂的故障或者网络波动导致的
【2月更文挑战第20天】这种情况可能是由于阿里云的API服务出现了短暂的故障或者网络波动导致的
53 1
|
2月前
|
文字识别 API 开发工具
阿里云文字识别OCR服务确实支持将识别结果以键值对(key-value)的形式返回
【2月更文挑战第5天】阿里云文字识别OCR服务确实支持将识别结果以键值对(key-value)的形式返回
47 3
|
2月前
|
存储 数据可视化 数据管理
基于阿里云服务的数据平台架构实践
本文主要介绍基于阿里云大数据组件服务,对企业进行大数据平台建设的架构实践。
697 0
|
1月前
|
弹性计算 NoSQL Redis
阿里云ECS使用docke搭建redis服务
阿里云ECS使用docke搭建redis服务
150 1
|
1月前
|
弹性计算 关系型数据库 MySQL
阿里云ECS使用docker搭建mysql服务
阿里云ECS使用docker搭建mysql服务
147 1
|
3天前
|
网络协议 Java 物联网
阿里云服务器上搭建 MQTT服务
阿里云服务器上搭建 MQTT服务
|
3天前
|
域名解析 网络协议 应用服务中间件
阿里云服务器配置免费https服务
阿里云服务器配置免费https服务