如何用AWS进行海外数据传输

蜗牛 vps教程 2022-08-15 123 0

随着企业海外业务的扩大,尤其在电商、直播、游戏等场景,企业都面临着海内外数据传输的需求,海内外数据传输也是用户经常咨询的问题,本⽂针对常见的海内外数据传输场景的⽅案进行介绍,让⽤户在进行选择的时候有正确的思路。

文章根据不同的传输场景和需求进行了细分,给出了不同的方案建议。需要说明的是,方案的具体细节实现不在本文中阐述,如需了解方案的细节,请向解决方案架构师咨询。

注:此篇文章仅适用于数据传输场景(one to one),对于加速中国用户访问海外服务器或者加速海外⽤户访问中国服务器的需求(one to many),会在另⼀篇文章”AWS中国和海外网络加速方案“中描述。

⼀.场景说明: 批量传输vs实时传输

1. 批量传输(文件传输)

用户经常会有批量传输文件的需求,比如把几十G的DB备份从国内本地服务器传到美国EC2上,或者把几百G的图片或者视频文件从本地服务器传到欧洲的S3上,或者将公司的所有日志等备份文件传输到价格较为便宜的Region进行存档等。本文讨论的大多数情况也是这类的文件批量传输。

2. 实时传输(例如接⼝调⽤/数据同步)

⽤户如果在海内外都有服务,通常会产生接口调⽤以及数据同步的需求。例如,国内的某个服务需要把⼀些数据写到海外的某个消息队列中,又比如海外的某个数据库需要把数据实时的传递到国内的数据库,以便国内的部⻔对汇总的数据进行处理或者分析。

如接口调用/数据同步之类的实时传输通常对时延以及网络的稳定性要求比较高。我们在这⾥不去讨论如何进行接⼝调用或者进行数据同步,而是重点介绍了网络如何进行优化, 这些优化方案都写在了附录中,供用户根据自己的实际情况选择适用。

对于⽤户提出的数据库同步问题,需要判断更合适的⽅式是否是在国内外各部署⼀套系统并分别访问本地数据库。如果用户的场景确实需要进⾏数据同步,再参考附录,选择合适的优化⽹络。

⼆.批量传输具体方案

我们把⽂件传输分成以下几个子类进行讨论。服务器和服务器之间的⽂件传输。这⾥所说的服务器是指EC2或者本地数据中心以及其他云⼚商的服务器。服务器和S3之间的⽂件传输。这⾥所说的服务器是指EC2或者本地数据中心以及其他云⼚商的服务器。 海内外S3与S3之间的文件传输。 其他云⼚商对象存储向S3进行文件传输。

1. 服务器和服务器之间的⽂件传输

(1)您可以直接利⽤最适用您的传输方法进⾏传输, 不进⾏任何优化,例如SCP或者FTP。 这通常适⽤于少量数据的传输,且对传输的时效没有什么要求。但如果想达到更好的效果,可以对⽹络进⾏优化,网络的优化方式参考 “附件1 ⽹络优化说明”

(2)利⽤⼀些开源文件传输工具。例如使⽤Tsunami-udp这个开源⼯具, 这个⼯具使⽤UDP进⾏传输,通过TCP进行控制,大大加速了海内外数据之间 的传输的速度,使⽤方法可以参考官⽅博客:https://aws.amazon.com/cn/blogs/big-data/moving-big-data-into-the-cloud-with-tsunami-udp/ (注意:此博客中⽤于启动安装了Tsunami-udp的EC2的cloudformation模板已失效,关于在EC2上安装Tsunami-udp可以参考Tsunami-udp官⽅⽂ 档:http://tsunami-udp.sourceforge.net/ )

(3)利⽤⼀些商业产品级的文件传输⼯具。可以与解决方案架构师或者BD联系,选择合适的合作伙伴。例如,镭速是⼀个大文件⾼速传输软件,提供了跨境云存储文件传输管理平台,⽀持公有云企业网盘、私有化部署方案以及定制化部署⽅案,具体可参考官网:https://www.raysync.cn/ 。还有CatonNet可以通过互联⽹提供国内和国际视频传输服务,也为⼤型文件和⾼带宽数据传输提供解决方案,具体可参考官⽹: http://catontechnology.com/ 无论是直接使⽤熟悉的传输⽅法进⾏传输,还是利⽤⼀些文件传输工具,都可以对网络进行优化,网络的优化⽅式参考附录。但需要说明的是,由于⼤量数据在较短时间内进⾏传输通常需要⽐较⼤的⽹络带宽,从而带来额外的费⽤,因此, 如果能利⽤⼯具完成完成文件传输优化的话,建议尽量使⽤⼯具完成,除非优化的⽹络是免费使⽤。

2. 服务器和S3之间的⽂件传输

为了简化问题,这⾥的服务器是指单台服务器,不是指服务器集群。

(1). 利⽤S3原⽣的SDK或者CLI( s3 sync命令),适合少量数据或者对时效性没有要求的大文件传输。 建议同时开启TCP BBR(Bottleneck Bandwidth and RTT),可进⼀步大幅度提升上传速度。BBR开启⽅法:https://aws.amazon.com/cn/amazon-linux-ami/2017.09-releasenotes/

(2). 如果是少量大文件的传输,建议启动S3分段上传(AWS CLI默认情况下已经启⽤了分片上传功能,默认8MB⼀个块,可以通过设置aws cli配置⽂件进⼀步调节)。

(3). 如果是⼤量大文件的传输,可以使⽤AWS官⽅工具“S3多线程断点续传⼯具”。该⼯具通过多线程并发上传,充分利用网络带宽,并且支持超时重试 以及多级⽬录拷贝,具体参考:https://github.com/aws-samples/amazon-s3-resumable-upload

如果有稳定长期的大量文件传输,服务器到S3之间的数据传输可以利⽤DX专线进行加速。

由于服务器和S3之间的文件传输也可以转变为服务器传输至对端EC2 + 对端EC2传到S3,这⾥⾯“服务器传输至对端EC2”部分(包括⽹络优化)可参考 “1.服务器与服务器之间的⽂件传输” 的内容。

另外,如果数据量巨大,不管是大量的小文件,少量大文件, 以及⼤量大文件,都会超出单机并行传输能⼒范围, 这种情况下,建议将这些⽂件先存储在S3,再利⽤集群进⾏传输。具体参考 “3. S3和S3之间的⽂件传输“ 中的集群传输方式。

3. S3和S3之间的⽂件传输

由于我们这里讨论的是国内与海外之间的数据传输,国内和海外AWS之间是两套帐号体系,因此不像海外各个区域之间那样可以使⽤S3的跨区域传输功能。而是需要数据在服务器上中转⼀下,有以下⼏类⽅案:

(1). 如果是⼀次传递少量数据的实时同步场景,可以通过⼀个 Lambda 函数来实现海内外的 S3的传输。S3 有通知功能,每当有对象创建或者删除时,发送通知触发 Lambda,复制 S3 对象到其他区域。具体实现上,Lambda可下载 S3 对象到本地/tmp⽬录,然后上传到对端S3。

(2). 如果是少量数据传递, 或者对时效性没有⾼要求的⼤量数据传递。 可以先把本端S3的数据下载到EC2, 再从EC2 copy到对端S3。

(3). 如果是对⼤量⽂件(大量小文件,少量大文件,⼤量大文件)的批量传输,并且有时效性要求的。建议使⽤集群对数据进⾏传递,集群中的每个计算单元(虚拟机,容器,或者函数等)负责⼀部分数据的传递,⼤量的计算单元并⾏⼯作。以下是两个例⼦,具体的实施,请与AWS的技术⼈员进⾏更深⼊的讨论。

a. 使⽤分布式Lambda⾃动同步S3文件: https://aws.amazon.com/cn/blogs/china/lambda-overseas-china-s3-file/

b. 利⽤Lambda计算源s3桶中需要传输的数据分片信息,并将计算结果存放⾄消息队列。利⽤s3分片传输功能将对象分片下载⾄ecs并上传至⽬标s3桶,直至当前对象的所有分⽚均上传成功,而后触发合并分片文件的lambda,完成合并。具体参考: https://github.com/yuan00yuan/index/blob/master/content/Migration/s3_transmission.md

c. 如果是⼤量大文件的传输,可以使⽤官方⼯具“S3多线程断点续传⼯具”。该⼯具通过多线程并发上传,充分利用⽹络带宽,并且⽀持超时重 试以及多级⽬录拷贝,具体参考:https://github.com/aws-samples/amazon-s3-resumable-upload 由于S3和S3之间的⽂件传输可以转变为S3传到本端EC2 + 本端EC2上传⾄对端EC2 + 对端EC2传⾄对端S3,因此这⾥“本端EC2传⾄对端EC2”(包 括网络优化)参考以上 “1.服务器与服务器之间的⽂件传输” 的内容。

4. 其他云厂商对象存储向S3进行文件传输

(1). 其他云⼚商可能并未提供直接将⽂件传送到AWS S3的接⼝,但⼀般都提供了命令⾏或者SDK的⽅式访问对象存储的文件。因此我们可以将云厂商 对象存储上的文件下载到本地,然后参考 “2.2 服务器和S3之间的文件传输” 通过上述服务器和S3之间文件传输的方式将数据传送到S3。这种⽅式适合少量数据的传输。

a. 以阿里云为例,可以使⽤阿里云OSS CLI将⽂件下载到⼀台服务器,然后使用AWS CLI再传到S3,示例代码:

i. 从OSS到本地:./ossutil cp -r oss://aliyun-oss-old/ temp-data/ —update

ii. 从本地到S3: aws s3 sync temp-data/ s3://aws-s3-new/ —delete

(2). 如果是海量数据的传输,我们仍可以使⽤集群的⽅式实现并⾏传输, 思路与本链接中的⽅案类似: https://github.com/yuan00yuan/index/blob/master/content/Migration/s3_transmission.md 但由于数据源不是AWS, 并且数据来源多种多样,建 议在遇到此类问题时, 与AWS解决⽅案架构师逐Case的讨论解决⽅案。

(3). 如果是从阿里OSS迁移到S3,可以使⽤官方工具“S3多线程断点续传⼯具”。该⼯具通过多线程并发上传,充分利用网络带宽,并且支持超时重试 以及多级⽬录拷贝,具体参考:https://github.com/aws-samples/amazon-s3-resumable-upload

三.如何选择最优方案

从前⽂的描述可以看出,海内外数据传输是⼀个很⼤的话题,根据不同的传输场景、所需要达成的效果、和愿意付出的成本会有不同的方案,建议从以下⼏点去考虑,再进行方案的选择。方案由两方面构成,⼀是传输的方法和工具,⼆是网络链路的选择。

第⼀,需明确数据传输的场景类型。参考 【场景说明】中判断用户场景是属于批量传输(⽂件传输)还是两个系统间的实时传输(比如接⼝调⽤/ 数据同步)。实时传输场景不在本⽂的讨论范围内,但可参考 【场景说明】中的“2.实时传输”给出指导性建议;如果⽤户场景是批量文件传输,则进⼀步往下分析。

第⼆,对于批量文件传输, 明确传输的源和⽬的地。参考【批量传输具体⽅案】给不同源和⽬的地的传输场景确定具体方案(主要是传输⼯具的不 同)。

第三,选择网络优化方案。根据用户对于此次数据传输的稳定要求和时延要求以及想花的时间成本和资金成本,具体网络优化说明参考附录1。

附录

网络优化说明 海内外数据传输,都涉及到网络问题,如果对网络的稳定性, 带宽, 时延等有要求,可以对网络进行优化,主要有优化链路、专线和SDWAN三种优化方式,网络效果和适⽤场景具体参考以下说明。

1. 默认网络:

走公网这种方式受网环境影响很⼤,不仅与AWS网络有关,也与出海链路网络情况、海内外各运营商网络情况、用户本地网络情况等因素有关。建议⽤户自行观察测试网络波动情况,选择出海网络低峰期传输数据。

总体效果:传输完全取决于 Internet 情况,速度建议⽤户实测,且中间隔了 GFW,不稳定。 适用场景:One Time 的数据同步;或者每次同步数据量不⼤的情况; ⽤户不愿意做任何额外的网络投资。

优化方法:服务器开启 BBR。

2.网络优化⼀: 优化链路

优化链路说明:在AWS China EC2和部分AWS Global region EC2(北美各region、法兰克福、东京、新加坡)之前有运营商优化链路,在优化链路内可以减少网络拥堵和请求跳数。但是链路优化使用效果同样受到当前使⽤情况和网络环境的影响,建议用户实际测试来看是否能满⾜他们需求。 再回到数据传输问题,也就是说在AWS China Region EC2和有优化链路的AWS Global Region EC2之间传输数据可以⾛优化链路,这个阶段的网络情况 ⼀般情况下会⽐单纯的公网传输较快也更为稳定。

Tags: Quip2Wiki

另外:如果海外所在region没有优化链路,也可上传⾄离它较近有优化链路的region的EC2中,再通过海外region之间的⻣⼲网络传到另⼀个 region的EC2中。

总体效果:用户可以直接免费使用,因此没有 SLA,传输速度完全取决于⽤户传输时,这条优化链路实际的网络拥堵状况。数值建议⽤户实测。但是通常这种情况会⽐直接公⽹传输要快很多,是值得尝试的。

适用场景:One Time 的数据同步,或者每次同步数据量不⼤的情况(如 GB 或以下)。费⽤上多了 EC2 On-demand Running & Data transfer费⽤。

优化方法:服务器开启 BBR;EC2推荐网络性能较好的机型(比如C5.large),否则影响传输速度。

3.网络优化二:走专线

专线 Direct Connect,简称为DX。跨海内外拉专线,可以联系三大运营商或者partner。通过购买运营商或者partner的专线,可以实现北京/宁夏Region到Global Region的加速访问,而AWS Global各个region之间的传输就可以走AWS骨干网络。

总体效果:独占,稳定,快速。但需要⽤户投资比较大的时间&成本。

适用场景:频繁,大量且长期的数据同步情况;对于低延迟实时性同步有较高要求的用户。

专线选择:

专线的位置选择:有两种可选,⼀种是直接从AWS China拉到海外本地机房或者AWS region,另外⼀种是从AWS China拉专线到就近的 区域,例如: ⾹港,新加坡或者东京等,然后剩下的线路走AWS全球骨干网, 这会利用到AWS的Direct Connect gateway。因海内外的传输瓶颈很大程度上在于GFW 以及国内 region 的独立,没有和海外的骨干网相连,因此后者也可以很大程度的解决传输问题。可involve partner咨询两种方式具体报价,带宽和SLA,让用户选择。

专线类型选择:⼀种是用户dedicate的专线,有1Gbps和10Gbps两种带宽可以选择;另外⼀种是NNI专线,是 partner 提供的,带宽选择⽐较丰富。

4.网络优化三:SDWAN

租用 partner 已经搭建好的全球网络基建,去做⽹络加速。注意,这里的全球网络基建底层实现不⼀定是专线,也有可能是不同网络方案的结合。并且不同的partner有不同的方案,有partner的edge点到AWS Region(包括China Region和Global Region),这种情况⼀般partner会放⼀个加速设备在⽤户的数据中心,也有从AWS China Region到AWS Global Region的,比如网宿和中国移动。有关于具体的方案,合同,报价,和周期需要 involve 具体的 partner。

总体效果:相比Internet来说,可以极⼤降低丢包率,但是网络延迟则不⼀定有改善(受物理距离及提供商Pop点影响),需要实际测试,⼀般可以 有效降低访问HK及东南亚区域的延迟;租用时间有极大的灵活性;交付时间快(设备到货1-2天就能交付),比起专线来,工期有很⼤程度的缩短。

适⽤场景:短期的数据传输,租用起来比较方便;有⼀定的经费但不⾜以拉专线;项⽬着急,需要尽快使⽤等。

来源:亚马逊云科技

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论Telegram