有奖捉虫:行业应用 & 管理与支持文档专题 HOT
文档中心 > 最佳实践 > 数据加速器 GooseFS > GooseFS 通过 MinIO 操作 COS

简介

本文提供了 GooseFS 集成 MinIO 的步骤。由于 GooseFS、MinIO 和 COS 三者均支持 AWS S3 协议,因此 GooseFS 可以很方便地与 MinIO 集成,下面将详细介绍操作步骤。

前提条件

1. 安装 golang1.17 以上。
2. 确保 make 命令可用。
3. 安装 Java 8。
4. 安装 SSH,确保能通过 SSH 连接到 LocalHost,并远程登录。
5. 安装 Git
6. COS 服务上创建一个存储桶用于远端存储,操作指引请参见 控制台快速入门

操作步骤

打通 MinIO 和 COS

如果在官网直接下载 MinIO 二进制包,并按照文档连接 COS,会发现非法 URI 的报错。这里的原因是 MinIO 会随机生成一个 BucketName,它不符合 COS 的 BucketName 规则(结尾是数字),因此 COS 无法正常响应。解决方法如下:
?

修改 MinIO 生成 BucketName 的逻辑

此方法的思路是修改 MinIO 生成 BucketName 的逻辑,使其生成符合规则的名称。
1. 从官方代码仓库拉取代码。
git clone https://github.com/minio/minio.git
2. 进入到 minio 所在目录,找到相应代码并修改。
cd minio
vim cmd/gateway/s3/gateway-s3.go
需要修改的函数是 randString,如下图所示。 修改部分已高亮显示,即在139行末尾添加了+"-000000"。
?
?
?
3. 修改完成后,确认保存。
4. 编译 MinIO。
make
编译成功后 minio 目录下会出现 minio 可执行文件。
5. 设置环境变量,使得 MinIO 可以操作 COS。
export MINIO_ROOT_USER=SecretId
export MINIO_ROOT_PASSWORD=SecrectKey
可前往 API 密钥管理 页面获取 SecretId 和 SecretKey。
6. 启动 MinIO
./minio gateway s3 http://cos.ap-guangzhou.myqcloud.com
?

配置 GooseFS

1. 从官方仓库下载 GooseFS 安装包到本地。 官方仓库下载链接:goosefs-1.2.0-bin.tar.gz
2. 下载对应版本的S3插件goosefs-underfs-s3a-1.2.0.jar,将其放在 ${GOOSEFS_HOME}/lib目录下。
3. 执行如下命令,对安装包进行解压。
tar -zxvf goosefs-1.2.0-bin.tar.gz
cd goosefs-1.2.0
解压后,得到 goosefs-1.2.0,即 GooseFS 的主目录。下文将以 ${GOOSEFS_HOME} 表示该目录的绝对路径。
4. 在 ${GOOSEFS_HOME}/conf 的目录下,创建 goosefs-site.properties 配置文件。内容如下:
goosefs.master.mount.table.root.ufs=s3://{BucketName}/{DirectoryName}
goosefs.underfs.s3.endpoint={Endpoint}
goosefs.underfs.s3.disable.dns.buckets=true
goosefs.underfs.s3.inherit.acl=false
aws.accessKeyId={SecretId}
aws.secretKey={SecretKey}
5. 启用 GooseFS 前,执行如下命令,检查系统环境,确保 GooseFS 可以在本地环境中正确运行。
./bin/goosefs validateEnv local
6. 执行如下命令,对 GooseFS 进行格式化。该命令将清除 GooseFS 的日志和 worker 存储目录下的内容。
./bin/goosefs format
7. 启动 GooseFS。
./bin/goosefs-start.sh local
该命令执行完毕后,可以访问 http://localhost:9201http://localhost:9204,分别查看 Master 和 Worker 的运行状态,并且可以检查参数是否生效。如下图所示:
?
?
?
启动成功后,如下图所示:
?
?

测试

我们通过 goosefs fs 命令对其进行简单的读写测试。
1. 查看当前根目录下有以下三个文件:
?
在 MinIO 中查看:
?
通过 COS 控制台查看:
?
可以看到它们是一致的。
2. 测试通过 goosefs fs 命令上传一个文件,并分别在 goosefs fs、MinIO 和 COS 控制台中验证结果。
?
如上图所示,首先创建了一个名为 test123 的文件,内容是 hello world。
3. 通过 goosefs 将其上传,并利用 ls 和 cat 命令验证。 在 MinIO 和 COS 控制台中可以看到这个文件,可以证明它们已经连通。
COS 控制台
?
?
MinIO 控制台
?
?


http://www.vxiaotou.com