MinIO教程(2)使用客户端工具mc实现对象与集群管理

MinIO教程(2)使用客户端工具mc实现对象与集群管理

一、MinIO Client介绍

mc是 MinIO 官方提供的命令行客户端工具,该工具支持 Bucket 操作、对象同步、用户权限管理、Prometheus 集成、健康状态检查、纠删码修复等丰富功能,并且命令风格简单,是MinIO集群在日常运维、对象管理、权限控制、监控接入等任务中必不可少的工具。

二、MinIO 集群管理

1、别名管理

配置别名(alias)是使用 mc 管理 MinIO 集群的第一步,通过配置好的别名才可以让客户端知道后续需要操作的集群信息

创建别名

当运行该条命令时,实际是告诉mc客户端这么一件事:为MinIO集群起一个别名叫myminio,而这个MinIO集群的地址是http://10.128.35.242:9000,使用账号/密码为tanglu/123456789。在后续的集群管理中就都可以使用myminio这个名字来简化信息

mc alias set myminio http://10.128.35.242:9000 tanglu 123456789

查看别名

#显示出已经创建过的别名
mc alias list

删除别名

#删除指定别名,不会影响数据
mc alias remove myminio

2、BUCKET管理

由于在上一步中已经创建好了别名,后续对象管理都可以基于别名来完成,bucket类似于数据库中的库的概念,对象会存放在bucket中,通过不同的bucket可以实现数据隔离

#创建 bucket
mc mb <alias>/<bucket>
 
#显示指定别名下的bucket
mc ls <alias> 

#删除一个bucket,被删除的bucket不能有数据
mc rb <alias>/<bucket>

3、对象管理

各种对象就相当于是数据库中的表和数据了,它们都存放于bucket中

# 查看对象元数据
mc stat <alias>/<bucket>/<object路径> 

#上传对象
mc cp [本地路径] <alias>/<bucket>/<object路径> 

# 下载对象
mc cp <alias>/<bucket>/<object路径>  [本地路径]

# 查看对象内容,只适用于文本类数据
mc cat <alias>/<bucket>/<object路径>        

# 删除对象
mc rm <alias>/<bucket>/<object路径>

4、用户管理

MinIO 中的用户就是一组 Access Key / Secret Key 认证凭据,将用户与访问策略绑定可以实现权限控制

#在指定集群中创建用户和密码  
mc admin user add <alias> <username> <password>    

#查看指定集群中用户信息(权限状态)    
mc admin user info <alias> <username>  

#列出指定集群中所有用户   
mc admin user list <alias>   
 
#禁用指定集群中用户(暂停访问)   
mc admin user disable <alias> <username> 
   
#启用指定集群中用户(恢复访问)    
mc admin user enable <alias> <username> 
 
#删除指定集群中用户   
mc admin user remove <alias> <username>   

#为账户创建服务账户,可避免暴露主账号密码,命令运行后会生成对应的Access key和Secret key
mc admin user svcacct add <alias> <username>

5、Policy(策略管理

策略是以 JSON 形式定义的访问控制规则,策略并不属于某个用户,但可以通过绑定的形式(attach)与用户或用户组结合。MinIO默认提供了readonly(全局只读)、readwrite(全局可读写)、writeonly(全局只写)、consoleAdmin(管理员权限)、diagnostics(诊断权限)几种常用策略。如果默认权限无法满足安全管理要求,可以通过自定义权限的方式来实现精细化管理

#查看指定集群所有策略
mc admin policy list <alias>

#查看策略的具体内容   
mc admin policy info <alias>  <policy> 
   
#为指定集群创建自定义策略
mc admin policy create <alias> <策略名> <策略文件名.json>

#绑定指定策略到指定用户     
mc admin policy attach <alias> <策略名> --user <username>      

#移除用户绑定策略
mc admin policy detach <alias> --user <username>

#删除策略  
mc admin policy remove <alias> <policy>


在创建自定义策略时,有一个策略文件需要单独配置,即上面的<策略文件名.json>,策略文件中就是具体的约束规则。语法结构如下:

Version:策略语法的办法,目前统一为2012-10-17

Statement:包含一个或多个权限声明,声明中包含以下几个常见参数:

· Effect:这个声明是允许或拒绝(通常为 "Allow") 

· Action:被允许或拒绝的具体操作,可以是一个或多个操作,支持通配符(如 s3:GetObject) 

· Resource:操作涉及的具体资源,可以是单一或多个资源,同样支持通配符(如arn:aws:s3:::my_bucket/my_object) 

Condition:声明生效的条件,如只对某个IP段生效

{
  "Version": "2012-10-17",                           #策略语言的版本日期,默认即可
  "Statement": [
    {
      "Action": [
        "s3:GetBucketLocation",
        "s3:ListBucket",            #具体策略,比如s3:ListBucket是列出、s3:GetObject是读取、s3:PutObject是写入等
        "s3:ListBucketMultipartUploads"
      ],
      "Effect": "Allow",                   #策略影响,allow是允许,deny是拒绝
      "Resource": "arn:aws:s3:::tanglu"              #策略对哪个bucket有效
    },
    
    {
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:ListMultipartUploadParts",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::tanglu/*"           #通配桶下所有对象
    }
  ]
}

6、集群管理

查看集群状态

包括集群数据量、磁盘与挂载情况等

mc admin info <alias>

mcadmin.png

查看集群负载

类似 top 命令,展示当前活跃请求,包括源 IP、请求路径、响应时间、用户名、请求方法等,可以用于排查是哪个客户端造成高并发或者查看最慢的请求行为

mc admin top <alias>

集群对象修复

用于手动触发对象修复,如节点宕机恢复后需要进行数据同步

mc admin heal <alias>
mc admin heal -r [alias_name]/[bucket_name]

集群监控

生成 Prometheus 抓取的性能指标配置,支持Server、Node、Bucket、Resources四个级别

mc admin prometheus generate <alias>

#输出示例:
- job_name: 'minio'
  static_configs:
    - targets: ['minio1:9000', 'minio2:9000']

文章评论

猜你喜欢

MinIO教程(1)对象存储基本概念与安装部署

运维技术 MinIO教程(1)对象存储基本概念与安装部署

一、对象存储简介对象存储(Object Storage)是一种以对象为基本单位进行数据的存储系统,广泛用于存储图片、音视频、日志、备份等非结构化数据,并在私有云、混合云和边缘计算等场景中得到广泛应用。...