使用Fly.io部署MinIO对象存储服务

前面的文章讲了Fly.io 的入门使用和如何使用 Fly.io 部署 go 开发的应用程序。今天我们来继续讲解使用 Fly.io 部署 对象存储服务 MinIO. MinIO 是什么我就不过多介绍了, 接下来我们就进入正题,进行 MinIO 服务的部署。 准备 Dockerfile 文件 我们先准备 MinIO docker 部署相关的文件, 我们使用官方的镜像进行部署, Dockerfile 文件内容如下: 1 2 3 FROM minio/minio CMD [ "server", "/data", "--console-address", ":9001"] MinIO 的数据文件将存储在 data 目录下,指定 9001 为 web 控制台的端口,如果不指定将会使用随机端口。 初始化 Fly.io 应用 接下来像以前一样使用 flyctl launch 命令进行应用的初始化。 我们照常不使用数据库,不立即部署,生成的配置如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 # fly....

November 19, 2022 · 2 min · overstarry

记一次阿里云OSS报错的解决

最近在使用 MinIO go-sdk 操作阿里云OSS 时遇到了一个问题,特此记录下。 问题 在使用 sdk 调用 PutObject 方法时,发生了报错,具体报错如下: 1 The request signature we calculated does not match the signature you provided. Check your key and signing method. 解决 可以看出报错的意思是签名不一致问题,我们首先检查 AccessKey ID 和 AccessKey Secret 是否正确,我发现同样创建的 client 在其它地方调用 方法时,没有报错,成功上传了文件对象。 后来查了多个相关的问题,发现可能是我填写的 objectName 的问题,我的 objectName 前带了 / 符号,导致在计算签名时变成 // ,使签名不一致。 我去掉前面的 ‘/’ 符号后,果然成功上传了。 总结 在编写相关操作 OSS 代码时,要注意 objectName 的格式,不要加上多余的符号。但奇怪的是原来上传至 MinIO 时没有报错,正常上传,可能是不同的存储有不同的签名规则吧。 参考 https://help.aliyun.com/document_detail/31951.htm?spm=a2c4g.11186623.0.0.3057jkGJjkGJjL https://blog.csdn.net/DCTANT/article/details/107917268 https://error-center.aliyun.com/status/search?Keyword=SignatureDoesNotMatch&source=PopGw";

August 2, 2022 · 1 min · overstarry

应用内存升高原因排查

起因 最近一个部署了 go 应用的服务器出现了 OOM 的现象,内存占用过高。 原因 通过 Pyroscope 分析得出是因为 Minio 的 go sdk 中的 PutObject 函数占用了大量的内存。 Pyroscope 是什么,前面的文章已经介绍过了,这里就不过多介绍了。 接下来我们通过查看相关的源码来查看是什么原因。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 // PutObject creates an object in a bucket. // // You must have WRITE permissions on a bucket to create an object....

May 14, 2022 · 3 min · overstarry

使用Prometheus收集MinIO指标

今天我来讲一讲如何使用 Prometheus 获取 MinIO 指标。 前提 需要部署好 Prometheus 、Minio 服务和配置好 Minio Client , MinIO 和 Prometheus 的网络需要可互相访问。 步骤 1. 生成 JWT 令牌 使用以下命令生成 JWT bearer token 1 2 mc admin Prometheus generate ALIAS 请将 ALIAS 替换成你的 MinIO 主机服务名。 该命令会产生如下的信息输出: 1 2 3 4 5 6 7 scrape_configs: - job_name: minio-job bearer_token: token metrics_path: /minio/v2/metrics/cluster scheme: http static_configs: - targets: [minIOip] 配置 Prometheus Targets 将上一个步骤输出的信息添加至 Targets 配置文件(Prometheus.yml) 中, 重新启动 Prometheus 服务。...

September 28, 2021 · 1 min · overstarry