理解阿里云服务的internal endpoint

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: 阿里云服务提供的产品中,一般都涉及到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

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,做到心里有数。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
7月前
|
存储 网络协议 网络安全
oss自定义域名绑定(Custom Domain Binding)
阿里云OSS支持自定义域名绑定,让用户可通过自有域名访问存储文件。步骤包括:1) 确保域名已备案并在阿里云验证;2) 在OSS控制台选择Bucket,绑定自定义域名并验证备案号;3)(可选)配置SSL证书;4) 在DNS服务商处设置CNAME记录;5)(可选)启用CDN加速。此功能有助于提升品牌识别度、安全性和文件预览体验。
1504 1
|
7月前
|
运维 API 开发工具
当你下载并运行阿里云OpenAPI的工程时遇到“runtime error: invalid memory address or nil pointer
【1月更文挑战第8天】【1月更文挑战第38篇】当你下载并运行阿里云OpenAPI的工程时遇到“runtime error: invalid memory address or nil pointer
350 2
|
4月前
|
存储 Java 开发工具
【Azure 存储服务】Java Azure Storage SDK V12使用Endpoint连接Blob Service遇见 The Azure Storage endpoint url is malformed
【Azure 存储服务】Java Azure Storage SDK V12使用Endpoint连接Blob Service遇见 The Azure Storage endpoint url is malformed
|
6月前
|
分布式计算 DataWorks 调度
DataWorks操作报错合集之提示 FAILED: com.aliyun.odps.meta.exception.MetaException,是什么原因
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
63 0
|
6月前
|
SQL 运维 DataWorks
DataWorks操作报错合集之同步任务同步到OSS,报错:Caused by: com.aliyun.oss.ClientException: The target server failed to respond,如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
7月前
|
算法 API Nacos
nacos 单节点Caused by: com.alibaba.nacos.api.exception.NacosException: failed to req API:/nacos/v1/ns/s
nacos 单节点Caused by: com.alibaba.nacos.api.exception.NacosException: failed to req API:/nacos/v1/ns/s
428 2
|
7月前
|
网络安全 Docker 容器
Docker常见问题1: driver failed programming external connectivity on endpoint
Docker常见问题1: driver failed programming external connectivity on endpoint
|
存储 对象存储
【阿里云OSS】You have no right to access this object because of bucket acl.
【阿里云OSS】You have no right to access this object because of bucket acl.
10186 1
【阿里云OSS】You have no right to access this object because of bucket acl.
|
机器学习/深度学习 DataWorks
DataWorks kpermissiondenied:ODPS-1220095: Access denied - You are not allowed to submit PAI task, Please activate the PAI service on aliyun.com first. Thanks.
DataWorks kpermissiondenied:ODPS-1220095: Access denied - You are not allowed to submit PAI task, Please activate the PAI service on aliyun.com first. Thanks.
109 0