简单了解

minio 完全实现了s3协议,使用简单方便。 支持多机模式,提高数据可用性和整体容量。

限制, 单个文件最大5T。

缺点, 不能在线扩容。开发者认为扩容应该是开发人员需要解决的问题。

安装及简单使用

服务端

#下载
wget https://dl.minio.io/server/minio/release/linux-amd64/minio
mv minio /usr/local/bin/
chmod 777 /usr/local/bin/minio 

#启动服务
minio server minidata/

Endpoint:  http://10.1.88.74:9000  http://172.17.0.1:9000  http://172.19.0.1:9000  http://172.21.0.1:9000  http://172.22.0.1:9000  http://172.23.0.1:9000  http://127.0.0.1:9000      
AccessKey: ZSYLNWA109W0Q4DWDS73 
SecretKey: kuqn+i1MpR0yoE9RoT59gYjRuB5IJdz8IhIZOqP9 

Browser Access:
   http://10.1.88.74:9000  http://172.17.0.1:9000  http://172.19.0.1:9000  http://172.21.0.1:9000  http://172.22.0.1:9000  http://172.23.0.1:9000  http://127.0.0.1:9000      

Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide
   $ mc config host add myminio http://10.1.88.74:9000 ZSYLNWA109W0Q4DWDS73 kuqn+i1MpR0yoE9RoT59gYjRuB5IJdz8IhIZOqP9

Object API (Amazon S3 compatible):
   Go:         https://docs.minio.io/docs/golang-client-quickstart-guide
   Java:       https://docs.minio.io/docs/java-client-quickstart-guide
   Python:     https://docs.minio.io/docs/python-client-quickstart-guide
   JavaScript: https://docs.minio.io/docs/javascript-client-quickstart-guide
   .NET:       https://docs.minio.io/docs/dotnet-client-quickstart-guide

#后台启动,也可做成服务模式,由systemd管理
nohup minio server minidata/ > log &

客户端

#下载
wget https://dl.minio.io/client/mc/release/linux-amd64/mc
mv mc /usr/local/bin/
chmod 777 /usr/local/bin/mc 
#根据服务启动信息配置连接
mc config host add myminio http://10.1.88.74:9000 ZSYLNWA109W0Q4DWDS73 kuqn+i1MpR0yoE9RoT59gYjRuB5IJdz8IhIZOqP9

#简单应用
mc  cp  /var/lib/pgsql/10/data/pg_wal/00000001000000C40000006A myminio/mb1
...sql/10/data/pg_wal/00000001000000C40000006A:  16.00 MB / 16.00 MB ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃ 100.00% 96.81 MB/s 0s

服务管理

通过服务的方式管理minio

添加用户,用户组

groupadd  minio:minio

useradd -g minio minio

设置存储位置用户权限

chown minio:minio /data/ -R

设置可执行服务所属用户组

chown minio:minio /usr/local/bin/minio

配置管理

vi /etc/minio.conf

MINIO_VOLUMES="/data"
MINIO_OPTS="-C /minio/etc --address 192.168.6.14:9000 --console-address 192.168.6.14:19000"
MINIO_ROOT_USER='admin123'
MINIO_ROOT_PASSWORD='admin456'

配置服务

vi /etc/systemd/system/minio.service

[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio 
[Service]
User=minio
Group=minio
EnvironmentFile=/etc/minio.conf
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
Restart=always
LimitNOFILE=65536
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target

启动管理

systemctl daemon-reload
systemctl restart minio
systemctl enable minio

压缩存储

查看可压缩类型

mc admin config get myminio compression
compression enable=off allow_encryption=off extensions=.txt,.log,.csv,.json,.tar,.xml,.bin mime_types=text/*,application/json,application/xml,binary/octet-stream 

开启压缩

export MINIO_COMPRESS="on"
export MINIO_COMPRESS_EXTENSIONS=".pdf,.doc"
export MINIO_COMPRESS_MIME_TYPES="application/pdf"

查看日志

tail -f /var/log/

控制台管理

在浏览器中访问 http://192.168.6.14:19000

用户及权限管理

ningx 代理

负载均衡 略

监控

健康检测

单机 Status 200

# curl -I http://192.168.6.14:9000/minio/health/live
HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Length: 0
Content-Security-Policy: block-all-mixed-content
Server: MinIO
Strict-Transport-Security: max-age=31536000; includeSubDomains
Vary: Origin
X-Amz-Request-Id: 169CA53FFA7B7FE6
X-Content-Type-Options: nosniff
X-Xss-Protection: 1; mode=block

集群

 /minio/health/cluster

使用prometheus 监控

通过命令 mc admin prometheus generate 自动生成

认证模式 prometheus 配置

scrape_configs:
- job_name: minio-job
  bearer_token: <secret>
  metrics_path: /minio/v2/metrics/cluster
  scheme: http
  static_configs:
  - targets: ['localhost:9000']

免认证模式

#添加环境变量 /etc/minio.conf
MINIO_PROMETHEUS_AUTH_TYPE="public"

prometheus 配置

集群

scrape_configs:
- job_name: minio-job
  metrics_path: /minio/v2/metrics/cluster
  scheme: http
  static_configs:
  - targets: ['localhost:9000']

单机

scrape_configs:
- job_name: minio-job
  metrics_path: /minio/v2/metrics/node
  scheme: http
  static_configs:
  - targets: ['localhost:9000']

应用案例

自动同步备份数据

mc mirror --force --remove --watch  pgsql/data/ myminio/pgsqlbkp

rclone备份应用参考

用户管理

minio 通过策略管理用户权限

定义策略

cat > getonly.json << EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::my-bucketname/*"
      ],
      "Sid": ""
    }
  ]
}
EOF

设置策略

mc admin policy add myminio getonly getonly.json

创建用户并绑定策略

1
2
mc admin user add myminio newuser newuser123
mc admin policy set myminio getonly user=newuser

自定义其他策略

cat mypolicy.json
{
  "Version": "2022",         
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [                      //  可以做出的行动(权限)
		"s3:ListAllMyBuckets",          //  查看所有的“桶”列表
		"s3:ListBucket",               //  查看桶内的对象列表
		"s3:GetBucketLocation",         
		"s3:GetObject",               //   下载对象
		"s3:PutObject",               //   上传对象
		"s3:DeleteObject"             //   删除对象
      ],
      "Resource": [
        "arn:aws:s3:::*"              // (应用到的资源,*表示所有,也可以用路径来控制范围。arn:aws:s3是命名空间)
      ]
    }
  ]
}