通过全球加速实现FTP文件传输服务加速
应用场景
FTP(File Transfer Protocol)是一种文件传输协议,基于客户端和服务器架构,支持以下两种工作模式:
- 主动模式(Active Mode):客户端向FTP服务器发送端口信息,由服务器主动连接该端口。
工作流程
描述
①双方建立控制连接
客户端向21端口发送控制连接请求,建立控制连接。
②同步客户端数据传输端口
客户端向21端口报告可以用于数据传输的端口2100。
③传输数据
服务端20端口主动连接客户端的2100端口,进行数据传输。
④关闭连接
数据传输完成后,服务端主动关闭连接。
- 被动模式(Passive Mode):FTP服务器开启并发送端口信息给客户端,由客户端连接该端口,服务器被动接受连接。
工作流程
描述
①双方建立控制连接
客户端向21端口发送控制连接请求,建立控制连接。
②同步客户端数据传输端口
服务端告知客户端数据传输端口为2120。
③传输数据
客户端重新开启一个端口连接服务端的数据传输端口2120,并进行数据传输。
④关闭连接
数据传输完成后,服务端主动关闭连接。
GA目前仅支持FTP的被动模式。
FTP支持以下三种认证模式:
- 虚拟用户模式(推荐):FTP服务器的专有用户。虚拟用户只能访问Linux系统为其提供的FTP服务,而不能访问Linux系统的其他资源,进一步增强了FTP服务器的安全性。
- 本地用户模式:通过Linux系统本地账号进行验证的模式,相较于匿名用户模式更安全。
- 匿名用户模式(存在安全隐患,不推荐):任何人无需密码验证就可以直接登录到FTP服务器。这种模式最不安全,一般只用来保存不重要的公开文件,不推荐在生产环境中使用。
前提条件
配置流程
本文以华为云弹性服务器(Elastic Cloud Server)作为FTP服务器。关于华为云弹性云服务器如何配置安全组和公网IP,请参见安全组概述和获取EIP。
步骤 |
说明 |
---|---|
在购买全球加速实例、EIP、ECS等资源之前,请先注册华为账号并开通华为云、完成实名认证、为账户充值。 |
|
以华为云弹性云服务器Linux操作系统为例,安装并配置vsftpd。 当您使用不同操作系统和vsftpd软件版本时,可能需要根据实际情况调整命令和参数配置。 |
|
全球加速服务为全球化业务用户提供应用加速服务,使用全球加速服务前,用户必须先创建全球加速实例。 |
|
创建全球加速实例后,您需要为全球加速实例配置监听器。监听器负责监听连接请求,并根据流量转发策略将请求流量分发至终端节点。 |
|
将具有相同特性的终端节点放在一个终端节点组组内,每个终端节点组都与特定的区域关联,全球加速实例进行流量分发时,流量分配策略以终端节点组为单位生效。 |
|
在本场景中,全球加速服务的监听器配置的是TCP协议,可以使用curl命令方式验证配置结果。 |
准备工作
如果用户已注册华为云,可直接登录管理控制台,访问全球加速服务。如果用户没有登录管理控制台的账号,请先注册华为云。
- 注册账号并实名认证。
详细请参见注册华为账号并开通华为云、实名认证。
如果您已开通华为云并进行实名认证,请忽略此步骤。
- 为账户充值。
请保证账户有足够的资金,以免购买资源失败。详细请参见账户充值。
步骤一:安装FTP软件并配置FTP服务器
本节介绍在华为云弹性云服务器Linux操作系统安装并配置vsftpd。当您使用不同操作系统和vsftpd软件版本时,可能需要根据实际情况调整命令和参数配置。
- 远程登录弹性云服务器Linux操作系统。
详细请参见登录Linux ECS。
- 执行以下命令安装vsftpd。
yum install -y vsftpd
- 使用本地用户模式进行认证,创建用户。
# 创建linux用户 useradd ftpdemo # 修改用户ftpdemo的密码 passwd ftpdemo # 创建一个供FTP服务使用的文件目录 mkdir /var/ftp/demo # ftpdemo用户拥有此目录 chown -R ftpdemo:ftpdemo /var/ftp/demo
- 配置vsftpd。
vim /etc/vsftpd/vsftpd.conf
- 修改配置文件。
# 除下面提及的参数外,其他参数保持默认值即可 # 修改下列参数的值 # 禁止匿名登录FTP服务器 anonymous_enable=NO # 允许本地用户登录FTP服务器 local_enable=YES # 监听IPv4 sockets listen=YES # 关闭监听IPv6 sockets # listen_ipv6=NO # 添加下列参数 # 设置本地用户登录后所在目录 local_root=/var/ftp/demo # 开启被动模式 pasv_enable=YES # 关闭控制和数据连接IP地址的一致性检查,需配置为YES,否则FTP客户端不能上传文件到FTP服务器 pasv_promiscuous=YES # 设置被动模式下,建立数据传输可使用的端口范围的最小值 pasv_min_port=2100 # 设置被动模式下,建立数据传输可使用的端口范围的最大值 pasv_max_port=2120 # 设置被动模式下,使用GA的Anycast IP进行数据传输 pasv_address=GA Anycast IP
在FTP被动模式下,以FileZilla工具为例,客户端开启调试模式后,可以查看到服务器接收到PASV命令后返回的响应信息:
227 Entering Passive Mode (h1,h2,h3,h4,p1,p2)
- 按Esc退出编辑模式。
- 输入“:wq”并回车,保存并关闭文件。
- 执行以下命令启动vsftpd服务。
# 重启vsftpd服务 systemctl restart vsftpd.service # 查看vsftpd服务的状态 systemctl status vsftpd
步骤二:创建全球加速实例
全球加速服务为全球化业务用户提供应用加速服务,使用全球加速服务前,用户必须先创建全球加速实例。
- 登录全球加速控制台。
- 在全球加速服务页面,单击“购买全球加速服务”。
- 根据界面提示配置相关参数,详细请参见表1。
图1 创建全球实例
表1 创建全球加速实例 参数
示例
说明
名称
ga-test
用户将要创建的全球加速实例的名称。
只能由中文、英文字母、数字、中划线组成。
长度范围:1-64个字符。
企业项目
default
企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理。
您可以使用已有企业项目,也可以新建企业项目。
加速区域
中国大陆
加速区域指需要进行访问加速的区域。
支持选择“中国大陆以外”或“中国大陆”。
默认:中国大陆以外。
本实践选择“中国大陆”。
IP地址类型
IPv4
全球加速实例的地址类型。
“加速区域”选择“中国大陆”时,支持选择“IPv4”或“IPv4+IPv6”。
本实践选择“IPv4”。
标签
example_key1
example_value1
为全球加速实例绑定标签,用来标识资源,支持修改。
描述
test
全球加速实例描述。
长度范围:不超过255个字符。
- 单击“下一步”,进入监听器配置页面。
步骤三:配置监听器
创建全球加速实例后,您需要为全球加速实例配置监听器。监听器负责监听连接请求,并根据流量转发策略将请求流量分发至终端节点。
- 根据界面提示配置相关参数,详细请参见表2。
图2 添加监听器
表2 添加监听器 参数
示例
说明
名称
listener-test
监听器名称。
只能由中文、英文字母、数字、中划线组成。
长度范围:1-64个字符。
前端协议
TCP
客户端与监听器建立流量分发连接的协议。
取值范围:TCP、UDP。
前端端口
21,2100-2120
客户端与监听器建立流量分发连接的端口。
端口取值在1-65535之间,端口范围用“-”连接,多个端口或端口范围以逗号隔开。
例如:1-10,11-50,51,52-200
本实践输入“21,2100-2120”。
客户端亲和性
按源IP保持会话
会话保持。
支持选择“关闭”或“按源IP保持会话”。
TCP和UDP协议仅支持“按源IP保持会话”。
按源IP保持会话:基于源IP地址的简单会话保持,将请求的源IP地址作为散列键(HashKey),从静态分配的散列表中找出对应的服务器。即来自同一IP地址的访问请求会被转发到同一台后端服务器上进行处理。
本实践选择“按源IP保持会话”。
标签
-
监听器的标识,包括键和值。可以为监听器创建20个标签。
描述
-
监听器描述。
长度范围:不超过255个字符。
步骤四:配置终端节点组和终端节点
FTP协议在客户端和服务器之间建立了两条通信链路:控制链路和数据链路。控制链路用于传输FTP命令,而数据链路则负责数据的传输。
在服务所在地域(终端节点组所属地域),全球加速实例有多个终端节点出公网IP,但部分FTP服务器配置了连接检查,要求控制链路和数据链路的客户端IP必须相同。这时,您可以选择关闭FTP服务端的源IP检查。
- 根据界面提示配置相关参数。详细请参见表3。
图3 添加终端节点组
表3 添加终端节点组 类型
参数
示例
说明
终端节点组
名称
endpointgroup-test
终端节点组名称。
每个监听器下每个区域只允许关联一个终端节点组。
只能由中文、英文字母、数字、中划线组成。
长度范围:1-64个字符。
区域
华北-北京四
终端节点组所属区域。
描述
-
终端节点组描述。
长度范围:不超过255个字符。
流量调度
1
配置到不同终端节点组的流量比例。
如果增加流量调度比例,将有更多的请求分发到此终端节点组。
如果将流量调度比例设置为0,则不会将任何请求分发到此终端节点组。
取值范围为:[0-100]。
说明:如果监听器中有多个终端节点组,分配流量时优先选择时延最低的终端节点组,并按照该终端节点组的流量调度值分配流量,然后再向其他终端节点组分配其余流量。
终端节点
1.92.xx.xx
终端节点充当客户端的接触点,加速实例跨正常运行的终端节点分发传入流量。
本实践选择“自定义IP”,输入FTP服务器的公网IP。
健康检查配置
是否开启
开启
开启或者关闭健康检查。
关闭健康检查可能会导致业务请求转发至异常的后端服务器。
前端协议
TCP
健康检查目前支持选择TCP协议或UDP协议。
默认:TCP协议。
前端端口
21
健康检查端口号。
取值范围:[1,65535]。
高级配置
检查间隔(秒)
5
每次健康检查响应的最大间隔时间。
取值范围:[1-60]。
超时时间(秒)
5
每次健康检查响应的最大超时时间。
取值范围:[1-60]。
最大重复次数
3
健康检查最大的重试次数。
取值范围:[1-10]。
- 单击“保存”,保存配置信息。
- 单击“下一步”,确认监听器、终端节点组、终端节点信息。
- 单击“提交”。
- 等待页面提示“创建加速器实例xxx成功”后,单击“完成”。
步骤五:配置验证
本文以Windows Server 2022系统的弹性云服务器作为FTP客户端,使用FileZilla进行文件传输。
- 远程连接Windows实例。
详细请参见登录Windows ECS。
- 通过FileZilla官网下载安装并启动FileZilla软件。
- 在站点管理器对话框,单击“新站点”,根据界面提示设置站点名称。
- 在站点管理器对话框右侧的“常规”区域,为新站点配置传输信息。
- 单击“连接”,登录FTP服务器。
- 可以通过FileZilla工具查看文件上传下载时间,对比加速前后的数据,验证全球加速的加速效果。