MinIo分布式存储搭建以及客户端简单使用(基于Centos8)
需求:服务器存放文件通过一个连接就可以实现下载或者是预览
MinIo
MinIO 是在 GNU Affero 通用公共许可证 v3.0 下发布的高性能对象存储。 它是与 Amazon S3 云存储服务兼容的 API。 使用 MinIO 为机器学习、分析和应用程序数据工作负载构建高性能基础架构MinIo官方文档。
MinIo服务端下载安装
- 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
- 本地下载运行
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-》点击Browsers上传文件
将文件通过链接公开下载 (安装MinIo客户端)
- Docker安装
拉取镜像 docker pull minio/mc
运行镜像 docker run -it --entrypoint=/bin/sh minio/mc
- 本地安装
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