掌桥专利:专业的专利平台
掌桥专利
首页

一种基于FUSE技术的云存储出网流量控制方法及系统

文献发布时间:2023-06-19 19:30:30


一种基于FUSE技术的云存储出网流量控制方法及系统

技术领域

本发明属于云计算技术领域,涉及一种基于FUSE技术的云存储出网流量控制方法及系统。

背景技术

在IT系统之中,需要存储的内容,比如图片、音乐、视频等,通常都会直接存储在云存储。典型的比如AWS的Simple Storage Service,业界通常简称S3。当用户需要看图片、听音乐、看视频的时候,都需要从云存储之中下载对应的文件。而文件的下载会产生出网流量,并且云厂商通常都按照出网流量进行计费。

目前主要通过以下几种方式来控制出网流量,从而降低一些出网流量产生的费用。

1、使用云厂商自带的CDN

以海外AWS为例,AWS提供的CDN名为CloudFront。从S3流入CloudFront的费用为0,但是从CloudFront流出的费用并未明显降低。CDN的主要作用为提高用户访问的速度。

2、使用第三方CDN

海外使用最广泛的CDN尝试为CloudFlare,其提供每天2TB的免费出网流量。在免费额度范围之中,用户从CloudFlare获取内容的费用为0,但是从AWS S3流出至CloudFlare的费用仍然需要计费。也就是说,从云存储流向CloudFlare的数据仍然根据流量计费,并且CloudFlare向用户输出数据,每天只有2T的免费流量,超出额度仍然需要计费。

3、使用CDN+Lightsail

Lightsail为AWS提供的出网流量非常便宜的虚拟机服务,其出网流量费用相比云存储的出网费用降低了非常多。

目前已经有实践直接将文件存储在服务器之上,但是Lightsail机型的磁盘无法动态伸缩,需要提前准备大磁盘容量的机型。但是,大容量机器的价格很贵,同时最大容量也只有640GB,无法满足大多数应用场景,需要流量扩容的时候,存储成本也会成倍增加。

4、自行编码,动态从S3请求文件并向请求端输出

S3有非常完善的API,支持自行编码完成文件转发的工作,包括:提供文件列表展示、翻页、查询的功能;提供文件读取到本地磁盘并输出给请求客户端的功能。同时Lightsail为共享CPU与磁盘,特别是磁盘性能较低。但是,自行编码较为复杂,需要较大的开发工作量;文件需要在机器上读写并转发,但是Lightsail机型性能较弱,会降低获取文件的性能;为了保持程序稳定运行,大幅增加了系统复杂度。

发明内容

本发明提供一种基于FUSE技术的云存储出网流量控制方法,当文件服务器出网流量达到阈值时,可以快速切换到新的文件服务器。

本发明提供的基于FUSE技术的云存储出网流量控制方法,包括以下步骤:

(1)在文件服务器上安装Docker容器,拉取云存储的镜像,即,将云存储服务器的目录挂接到Docker容器的内部目录,Docker容器上运行有基于FUSE技术的文件系统;

(2)在文件服务器上创建挂接点目录;

(3)运行Docker镜像,将挂接点目录挂接到Docker容器的内部目录;

(4)在文件服务器上安装Nginx,安装有Nginx的服务器即为文件服务器;

(5)监控文件服务器的出网流量,如果出网流量达到设定的阈值,则根据步骤(1)至(4)创建新的文件服务器。

本发明通过FUSE技术直接将云存储文件映射到文件服务器本地磁盘,用户访问时不需要进行文件服务器本地磁盘读写,不占用文件服务器实际存储,当文件服务器出网流量达到阈值时,可以快速切换到新的文件服务器。由于文件不需要实际在文件服务器存储,对文件服务器的容量进行动态伸缩非常方便。

优选地,将根据步骤(1)至(4)创建的文件服务器制作为系统镜像,当出网流量达到设定的阈值,通过复用系统镜像的方式创建新的文件服务器,大大方便了新建文件服务器。

优选地,在新的文件服务器正常使用后,删除旧的文件服务器。

优选地,在文件服务器创建完成后,调整访问文件服务器的服务器的DNS设置,将文件服务器的IP地址添加到访问文件服务器的服务器中。

优选地,云存储为AWS S3,Docker容器上运行的文件系统为S3FS,所述文件服务器为Lightsail服务器。目前,Lightsail的出网费用为2.5USD/TB,AWS S3直接出网费用为90USD/TB,其降价幅度约为97%,可以极大幅度降低流量费用。

本发明还提供一种基于FUSE技术的云存储出网流量控制系统,用于连接云存储服务器,包括文件服务器和监控与调度系统;所述文件服务器通过以下方式创建:在所述文件服务器安装Docker容器,并拉取云存储的镜像,即,将云存储服务器的目录挂接到Docker容器的内部目录,Docker容器上运行有基于FUSE技术的文件系统,在文件服务器上创建挂接点目录,运行Docker镜像,将挂接点目录挂接到Docker容器的内部目录,在文件服务器上安装Nginx;所述监控与调度系统用于监控文件服务器的出网流量,当出网流量达到设定的阈值,则创建新的文件服务器。

优选地,将搭建好的文件服务器制作成系统镜像,当出网流量达到设定的阈值,所述监控与调度系统通过复用所述系统镜像的方式创建新的文件服务器。

优选地,所述监控与调度系统还用于访问文件服务器的服务器的DNS设置,将文件服务器的IP地址添加到访问文件服务器的服务器中。

优选地,当新的文件服务器正常使用后,所述监控与调度系统删除旧的文件服务器。

优选地,所述云存储为AWS S3,Docker容器上运行的文件系统为S3FS,所述文件服务器为Lightsail服务器。

本发明通过FUSE技术直接将云存储文件映射到文件服务器本地磁盘,用户访问时不需要进行文件服务器本地磁盘读写,不占用文件服务器实际存储,当文件服务器出网流量达到阈值时,可以快速切换到新的文件服务器。由于文件不需要实际在文件服务器存储,对文件服务器的容量进行动态伸缩非常方便。使用CloudFlare进行文件转发服务,将云储存服务的文件转发给用户,不需要额外开发文件转发服务,对性能影响小。使用现有成熟技术,包括FUSE、Docker、Nginx等,系统稳定性高。

附图说明

图1为本发明控制系统架构图;

图2为本发明文件服务器架构图;

图3为本发明控制方法流程图。

具体实施方式

云存储是一种网上在线存储(Cloud storage)的模式,即把数据存放在通常由第三方托管的多台虚拟服务器,而非专属的服务器上。托管(hosting)公司运营大型的数据中心,需要数据存储托管的人,则透过向其购买或租赁存储空间的方式,来满足数据存储的需求。数据中心营运商根据客户的需求,在后端准备存储虚拟化的资源,并将其以存储资源池(storage pool)的方式提供,客户便可自行使用此存储资源池来存放文件或对象。实际上,这些资源可能被分布在众多的服务器主机上。

FUSE:用户空间文件系统(Filesystem in Userspace),是Linux中用于挂载某些网络空间,如SSH,到本地文件系统的模块。

S3FS:是基于FUSE的文件系统,允许Linux和Mac Os X挂载S3的存储桶在本地文件系统,S3fs能够保持对象原来的格式,S3FS是POSIX的大子集,包括读/写文件、目录、符号链接、模式、uid/gid和扩展属性,与AmazonS3、Google云存储和其他基于S3的对象存储兼容。

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Nginx是HTTP和反向代理web服务器。

Cloudflare以向客户提供网站安全管理、性能优化及相关的技术支持为主要业务。通过基于反向代理的内容分发网络(CDN,Content Delivery Network)、任播(Anycast)技术、基于Nginx+lua架构的Web应用防火墙(WAF,Web Application Firewall)及分布式域名解析服务(Distributed Domain Name Server)等技术,Cloudflare可以帮助受保护站点抵御包括分布式拒绝服务攻击(DDoS,Distributed Denial of Service)在内的大多数网络攻击,确保该网站长期在线,同时提升网站的性能、访问速度以改善访客体验。

本发明在云存储服务器与用户之间设置文件服务器以及CloudFlare,文件服务器安装了Docker容器和Nginx,将云存储服务器上的文件映射到文件服务器。由于文件服务器搭建在云存储服务商的云服务器上,云存储服务器上的文件映射到文件服务器时不存在出网流量,用户只需要支付租用服务器空间的费用即可。而文件服务器至CloudFlare的出网流量,云存储服务商提供免费或优惠额度,只要控制好文件服务器至CloudFlare的出网流量,即可控制流量费用,而通过CloudFlare提供将文件服务器数据输送至用户的服务,CloudFlare收取的出网流量费用较低。当文件服务器至CloudFlare的出网流量即将超过免费额度或优惠额度时,则搭建并使用新的文件服务器,又可获得新的免费额度或优惠额度,从而大大节约了成本。

本发明的控制方法步骤如下:

(1)在服务器上安装Docker容器,并拉取云存储的镜像,将云存储服务器的目录挂接(mount)到Docker容器的内部目录。Docker容器上运行基于FUSE技术的文件系统。

(2)在服务器创建一个挂接点(mountpoint)目录。

(3)运行Docker镜像,将服务器上创建的挂接点目录与相应的云存储上的文件目录对应起来,即,将挂接点目录挂接(mount)到Docker容器的内部目录。

(4)在服务器上安装Nginx并进行配置,将安装有Nginx的服务器作为文件服务器。宿主机的目录(即挂接点目录)对于Nginx来说就是普通本地磁盘,Nginx可以直接读取文件并通过HTTP协议输出给CloudFlare。

(5)将通过步骤1-4搭建好的文件服务器制作成系统镜像,以便在免费出网流量或优惠流量即将超出时,可以复用系统镜像创建一个新的文件服务器。

(6)调整CloudFlare的DNS设置,使得CloudFlare可以访问文件服务器。本发明构建有监控与调度系统,实时监控文件服务器的出网流量,当出网流量即将超过云存储服务商提供的免费额度或优惠额度时,创建新的文件服务器,调整CloudFlare的DNS设置,将新的文件服务器的IP地址添加到CloudFlare中,确认新的文件服务器正常工作后,删除旧的文件服务器。

通过FUSE技术,可以直接将云存储文件映射到本地磁盘,并且不需要直接进行磁盘读写,CloudFlare实际上是从云存储上直接访问文件,不占用文件服务器实际存储。

下面以AWS S3为例,详细说明本发明提供的基于FUSE技术的云存储出网流量控制方法及控制系统。数据存储在云存储AWS S3上,AWS S3使用的是基于FUSE技术的文件系统S3FS。

如图1、2所示,控制系统包括作为文件服务器的Lightsail服务器,Lightsail服务器由AWS提供,Lightsail服务器上安装有Docker容器,Docker容器运行S3FS文件系统,Lightsail服务器还安装了Nginx,Lightsail服务器相关文件目录对于Nginx来说就是普通本地磁盘,Nginx可以直接读取文件并通过HTTP协议输出给CloudFlare,再由CloudFlare输出给用户。控制系统还包括监控与调度系统,由监控与调度系统实时监控文件服务器的出网流量,当出网流量达到设定的阈值(一般设置为快达到AWS提供的免费出网流量额度),监控与调度系统就会创建新的文件服务器,并修改CloudFlare的DNS设置,使得CloudFlare可以访问新的文件服务器,在新的Lightsail服务器正常运行后,删除旧的Lightsail服务器。

如图3所示,本发明控制方法如下:

1、在Lightsail服务器上安装Docker容器,并拉取S3FS相关镜像,Docker容器上运行S3FS文件系统。利用S3FS文件系统将AWS S3的Bucket挂接(mount)到Docker容器的内部目录“/opt/s3fs/bucket”。

示例代码如下:

Bash

#抓取安装脚本

curl-fsSL https://get.docker.com-o get-docker.sh

#执行安装脚本

sudo sh get-docker.sh

#拉取对应的镜像

docker pull efrecon/s3fs:1.91

2、在Lightsail服务器创建一个挂接点(mountpoint)目录。

示例代码如下:

Bash

mkdir-p/home/ubuntu/s3dir

3、在LIghtsail服务器上运行Docker镜像,将本地文件目录“/home/ubuntu/s3dir”与相应的AWS S3 Bucket对应,即,通过Docker容器将宿主机目录(即,挂接点目录)“/home/ubuntu/s3dir”挂接(mount)到Docker容器的内部目录“/opt/s3fs/bucket”。

假设AWS S3 Bucket的名称为xxxx,示例代码如下:

对于其他云厂商的云存储,也支持通过类似的FUSE技术将云存储映射到本地目录。

4、在Lightsail服务器上安装Nginx并进行配置,将安装有Nginx的Lightsail服务器作为文件服务器。宿主机目录(即挂接点目录)对于Nginx来说就是普通本地磁盘,Nginx可以直接读取文件并通过HTTP协议输出给CloudFlare。

安装命令如下:

Bash

sudo apt install-y nginx

关键配置如下:

假设域名为files.test.com,需要访问文件在Bucket之中的目录为bucket_name/dir1/dir2/filename.jpg,那么实际的访问路径即为:files.test.com/dir1/dir2/filename.jpg。

5、完成步骤1-4后,将搭建好的Lightsail服务器制作成系统镜像,以便在免费出网流量或优惠流量即将超出时,可以复用系统镜像创建一个新的Lightsail服务器。本步骤可以使用云存储服务商的系统服务,不需要额外开发。

6、由监控与调度系统调整CloudFlare的DNS设置,将Lightsail服务器的IP地址添加到CloudFlare中,使得CloudFlare可以访问Lightsail服务器。监控与调度系统实时监控Lightsail服务器的出网流量,如果达到设定的阈值,则创建新的Lightsail服务器,将新的Lightsail服务器的IP地址添加到CloudFlare中,确认新的Lightsail服务器正常工作后,删除旧的Lightsail服务器。CloudFlare是常用文件转发服务器平台,也可以从其他现有的服务器进行转发。

以上是以AWS为例进行的说明,本发明提供的方案同样可以应用于阿里云、腾讯云等云存储服务,阿里云、腾讯云提供“轻量型服务器”作为文件服务器使用,可以将本发明的Docker容器、Nginx等部署在轻量型服务器上。

技术分类

06120115938967