MinIo分布式存储搭建以及客户端简单使用(基于Centos8)

2651 14~18 min

需求:服务器存放文件通过一个连接就可以实现下载或者是预览


MinIo

MinIO 是在 GNU Affero 通用公共许可证 v3.0 下发布的高性能对象存储。 它是与 Amazon S3 云存储服务兼容的 API。 使用 MinIO 为机器学习、分析和应用程序数据工作负载构建高性能基础架构MinIo官方文档

MinIo服务端下载安装

  1. Docker安装
拉取 docker pull minio/minio
运行 docker run -p 9090:9000 --name minio \ 暴露console端口9090容器名minio
  -v /etc/localtime:/etc/localtime \
  -v /data/minio/data:/data \ 挂载minio存储本地的路径
  -v /data/minio/config:/root/.minio \ 挂载minio配置的路径
  -d minio/minio server /data 后台运行 server 
查看日志 docker logs minio 
  1. 本地下载运行
wget   http://dl.minio.org.cn/server/minio/release/linux-amd64/minio 指定目录下载minio包
chmod +x minio 赋予可执行权限
./minio server --address ':9002' --console-address ':9001' /home/minio/data 
# --address ':9002'  指定运行的api接口端口
# --console-address ':9001' 前台WebUi端口
# /home/minio/data  minio 文件的存储位置

MinIo 注册为系统服务 实现开机启动

/etc/systemd/system编写minio.service

[unit]
Description=MinioService
Documentation=https://docs.minio.io/

[Service]
ExecStart=/root/minio/minio server --address ':9002' --console-address ':9001' /home/minio/data
Restart=on-failure
RestartSec=15

[Install]
WantedBy=multi-user.target
systemctl enable minio.service  开机自动运行minio
systemctl start minio.service  启动minio
systemctl  stop minio.service  停止minio
systemctl  restart minio.service 重启minio
systemctl  status minio.service minio运行状态

MinIo 服务端简单使用

输入ip:端口 端口为启动时的--console-address端口
登录密码启动时会输出到控制台账号密码默认为minioadmin

修改服务端登录密码

在启动的时候挂载的/home/minio/data路径下 ll -a会存在一个.minio.sys文件夹
ll -a
总用量 16
drwxr-xr-x 4 root root 4096 11月 17 15:16 .
drwxr-xr-x 3 root root 4096 11月 16 17:44 ..
drwxr-xr-x 2 root root 4096 11月 24 22:21 file
drwxr-xr-x 6 root root 4096 11月 16 17:44 .minio.sys
打开.minio.sys 进入到config目录下修改config.json文件 查找 access_key为账号secret_key为密码修改为自己的重启minio服务端即可

创建Buckets

创建Buckets.png

上传文件

点击刚才创建好的Buckets-》点击Browsers上传文件
image.png

将文件通过链接公开下载 (安装MinIo客户端)

  1. Docker安装
拉取镜像  docker pull minio/mc
运行镜像  docker run -it --entrypoint=/bin/sh minio/mc
  1. 本地安装
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc 赋予可执行的权限

将mc添加到MinIo服务器

查看当前mc已经连接的主机配置在mc安装目录下运行

./mc config host list:查看主机的mc配置
这里显示的配置信息,其实也就是 /root/.mc目录下的config.json配置文件的信息。这个目录会在初次使用mc客户端命令的时候自动生成。

添加minio服务器到当前的mc

./mc config host add minio1 http://localhost:9000 admin 12345678
# admin 12345678 为链接minio服务器的账号和密码 切记!!!
# minio1 为链接minio的别名
# http://127.0.0.1:9002 为链接minio的api端口的地址

公开Buckets的访问权限

./mc policy set public minio1/file
# minio1/file minio1服务器的名为file的Buckets

通过链接访问文件

通过`ip:端口/Buckets桶名/文件名` `端口`为api端口访问

配置mc客户端的权限策略

$./mc admin policy list minio1 #查看当前mc权限
consoleAdmin        
diagnostics         
readonly            
readwrite           
writeonly



创建自定义策略配置文件 testPolicy1.json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
                "s3:ListAllMyBuckets",
                "s3:ListBucket",
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:DeleteObject"
      ],
      "Resource": [
        "arn:aws:s3:::testpolicy1/*"
      ]
    }
  ]
}


名称	               作用
Version	           版本,这个不能随便写,看着是日期。其实随便写了后会失效
Effect	         Allow或者deny,允许或者拒绝下面配置的访问权限
Action	         配置权限,上传,删除,下载等等的权限
  丨一权限配置
        名称	        作用
        GetObject	下载对象
        ListBucket	查看桶内的对象列表
        ListAllMyBuckets	查看所有的桶列表
        PutObject	上传对象
        DeleteObject	删除对象
        AbortMultipartUpload	授予权限以中止分段上传

Resource	配置权限的作用范围,这里配置的是只能控制testpolicy1这个桶

给策略minio1设置策略配置文件json

 ./mc admin policy add minio1 test1 testPolicy1.json
查看 赋予后的权限
./mc admin policy list minio1
consoleAdmin        
diagnostics         
readonly            
readwrite           
test1              #test1 到当前的minio  
writeonly           

添加用户给策略别名,添加一个用户newuser ,密码为newuser123 。这个密码指定这个用户的权限策略为刚刚添加的test1

./mc admin user add minio1 newuser newuser123 # 添加新用户到minio1 
./mc admin policy set minio1 test1 user=newuser
 #赋予新用户权限策略 test1的权限

如果有更改策略配置json文件,则可以重新执行如下:

./mc admin policy add minio1 test1 testPolicy1.json #重新添加json文件到minio1 
./mc admin policy set minio1 test1 user=newuser #重新赋值权限文件到用户 

mc其他命令使用

# 查看mc配置
./mc config host list

#  提供minio.service账号密码,创建策略别名minio1 
./mc config host add minio1 http://localhost:9000 admin 12345678

#  查看策略minio1 的权限列表
./mc admin policy list minio1 

#  给策略minio1 添加自定义策略权限文件testPolicy1.json,名字为test1
../mc admin policy add minio1 test1 testPolicy1.json

#  添加用户,账号密码为newuser   newuser123,与权限策略test1绑定
./mc admin user add minio1 newuser newuser123 # 添加新用户到minio1 
./mc admin policy set minio1 test1 user=newuser
 #赋予新用户权限策略 test1的权限

#  查询别名minio1 下面的所有用户状态
./mc admin user list minio1 

#  给用户testuser1 设置权限策略test1
./mc admin user set-policy minio1 testuser1 test1

#  启用用户newuser    
./mc admin user enable minio1 newuser   

#  禁用用户newuser   
./mc admin user disable minio1  newuser   

MinIo权限官方文档

MinIo权限参考blog

MinIo分布式集群搭建