menu LittleJake's Blog
color_lens
avatar
Jake Liu
Never Settle
creative commons by-nc-sa
hit
Category
keyboard_arrow_down

© 2024 LittleJake's Blog.

萌ICP备20223020号

记录Minio取代线上分布式文件系统

背景

由于业务需要以及当前某品牌分布式文件系统达不到系统基本要求:业务密集时出现HTTP 503失败率激增、过期对象释放缓慢,故开始研究确定开源分布式对象存储系统Minio是否能满足业务需求并可热切至线上业务。

上手

到官网下载最新版本的主程序Minio以及命令行客户端mc工具【地址】、官方文档

主程序

按照官方文档的搭建,我们选择在单节点部署多目录进行测试。我们本次选用目录

/mpp-data/c/data00/minio
/mpp-data/c/data01/minio
/mpp-data/c/data02/minio
/mpp-data/c/data03/minio

目录下执行:
./minio server /mpp-data/c/data0{0..3}/minio

注意:

  1. 本次启动没有设置credentials,需要export MINIO_ROOT_USER、export MINIO_ROOT_PASSWORD进行设置。
  2. 默认credentials为 minioadmin:minioadmin
  3. 默认端口为 :9000

仪表盘

由于Minio没有提供相应的仪表盘界面,数据不能够直观显示,因此我们选用Prometheus+Grafana形式。

Prometheus

Prometheus需要修改配置文件prometheus.yml,在scrape_configs下增加:

scrape_configs:
    - job_name: 'Minio'
      metrics_path: /minio/prometheus/metrics
      static_configs:
        - targets: ['10.10.5.6:9000']
          labels:
            instance: minio_test

重启Prometheus服务。

Prometheus

Grafana

仪表盘有现成的模板,模板ID为12063,下载安装即可。

Grafana

主程序界面

桶访问的policy

桶访问的policy

主程序界面支持添加桶、桶访问的policy、上传文件、修改密码等。

命令行

常用命令行有:

  1. ./mc ilm set 设置桶lifecycle

    lifecycle支持文件前缀、具体日期、相对时间、存储类型等。

  2. ./mc alias set 设置别名

    管理前需要设定alias,无法直接使用local的alias进行管理。

ps:可以运行./mc --autocompletion开启shell自动补全功能

其他命令请参照官方文档。

测试上线正式环境

  1. 划分磁盘空间(已组raid5并3节点进行共享,使用6个独立目录进行)
  2. 在不同端口提前调试好Minio配置文件,包括创建好bucket、设置访问policy、设置lifecycle
  3. 关闭旧版分布式文件系统
  4. 更改Minio端口执行

出现的问题

  1. multipart上传可能与当前业务不兼容,无法上传

缺点

  1. 可靠性不佳,测试3节点部署每节点2块硬盘,丢失硬盘后,服务处于中断状态,log报错为

    Time: 16:42:18 CST 05/25/2021
    Error: Marking http://10.10.5.23:9000/minio/storage/OStor2-2/v31 temporary offline; caused by Post "http://10.10.5.23:9000/minio/storage/OStor2-2/v31/readall?disk-id=&file-path=format.json&volume=.minio.sys": dial tcp 10.10.5.23:9000: i/o timeout (*fmt.wrapError)
           6: cmd/rest/client.go:138:rest.(*Client).Call()
           5: cmd/storage-rest-client.go:151:cmd.(*storageRESTClient).call()
           4: cmd/storage-rest-client.go:490:cmd.(*storageRESTClient).ReadAll()
           3: cmd/format-erasure.go:405:cmd.loadFormatErasure()
           2: cmd/format-erasure.go:325:cmd.loadFormatErasureAll.func1()
           1: pkg/sync/errgroup/errgroup.go:122:errgroup.(*Group).Go.func1()
    Waiting for a minimum of 3 disks to come online (elapsed 49m43s)
  2. 配置各种选项需要命令行内进行,不够人性化。

  3. 支持的认证为亚马逊S3v4(AWS4-HMAC-SHA256),需要对应实现。

Buy me a beer

buymeacoffee
Jake Liu
Never Settle

Title: 记录Minio取代线上分布式文件系统

Author: Jake Liu

Origin:

Creative Commons License

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) For any re-post you must give appropriate credit.

文章遵循CC许可 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 转载请注明出处

Tag:minio, grafana, prometheus

评论区

Add a new comment.

Theme