首页 > 其他分享 >Minio 笔记

Minio 笔记

时间:2024-03-31 16:44:55浏览次数:18  
标签:MINIO mc -- minio 笔记 server proxy Minio

一、安装minio

# 安装方式 or 直接下二进制执行文件 chomod +x minio 运行
sudo wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20240326221045.0.0-1.x86_64.rpm -O minio.rpm
sudo dnf install minio.rpm 
# mkdir /usr/miniodata 文件夹
# 启动一
# cd /usr/local/bin/minio 
./minio server /usr/miniodata
# /usr/miniodata 文件磁盘

二、单节点单Driver

--console-address ":9001" webui 不适用动态端口

MINIO_ROOT_USER

MINIO_ROOT_PASSWORD

--config-dir=path

注意:中文官网的文档属于老版本,坑比较多,建议使用新版本

老版本中MINIO_ACCESS_KEY 和 MINIO_SECRET_KET 指定的账户密码,也不需要console-address

linux

1.手动启动

# 需要修改/etc/profile添加环境变量 or 直接先执行如下命令 admin/123456789可以自定义
export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=123456789
# 默认配置目录${HOME}/.minio,可以通过--config-dir 修改
cd /usr/local/bin/minio 
./minio server /usr/miniodata --console-address ":9001"

exp:

#!/bin/bash
export MINIO_ROOT_USER=xianpm
export MINIO_ROOT_PASSWORD=123456789
MINIO_HOME=/usr/local/bin
nohup ${MINIO_HOME}/minio server /usr/miniodata --console-address ":9001" > ${MINIO_HOME}/minio.log 2>&1 &

三、单节点多Driver

Single-Node Multi-Drive

单台机多个盘,服务启动方式见上

主要是修改 MINIO_VOLUMES

2.添加到系统服务(以下配置单节点多Driver)

使用.dep or .rpm的安装方式,默认会自动创建minio.service,位置/usr/lib/systemd/system/minio.service

注意: systemd 会检查/usr/lib/systemd/下是否存在minio.service,避免不同的配置选项之间产生冲突或意外,请检查

另外,最好的情况是minio.service只存在于/usr/lib/systemd/system/目录下

minio.service文件

[Unit]
Description=MinIO
Documentation=https://min.io/docs/minio/linux/index.html
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio
[Service]
WorkingDirectory=/usr/local
User=minio-user
Group=minio-user
ProtectProc=invisible
EnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES

# MinIO RELEASE.2023-05-04T21-44-30Z adds support for Type=notify (https://www.freedesktop.org/software/systemd/man/systemd.service.html#Type=)
# This may improve systemctl setups where other services use `After=minio.server`
# Uncomment the line to enable the functionality
# Type=notify

# Let systemd restart this service always
Restart=always

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536

# Specifies the maximum number of threads this process can create
TasksMax=infinity

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target
# Built for ${project.name}-${project.version} (${project.name})

创建系统用户,并执行相脚本命令

groupadd -r minio-user # 创建组 minio-user
useradd -M -r -g minio-user minio-user #添加用户到组minio-user,见minio.service =>User=minio-user Group=minio-user
chown minio-user:minio-user /mnt/disk1 /mnt/disk2 /mnt/disk3 /mnt/disk4 

检查文件是否存在 /etc/default/minio

# MINIO_ROOT_USER and MINIO_ROOT_PASSWORD sets the root account for the MinIO server.
# This user has unrestricted permissions to perform S3 and administrative API operations on any resource in the deployment.
# Omit to use the default values 'minioadmin:minioadmin'.
# MinIO recommends setting non-default values as a best practice, regardless of environment

MINIO_ROOT_USER=myminioadmin
MINIO_ROOT_PASSWORD=minio-secret-key-change-me

# MINIO_VOLUMES sets the storage volume or path to use for the MinIO server.

MINIO_VOLUMES="/mnt/disk{1...4}"

# MINIO_OPTS sets any additional commandline options to pass to the MinIO server.
# For example, `--console-address :9001` sets the MinIO Console listen port
MINIO_OPTS="--console-address :9001"

# MINIO_SERVER_URL sets the hostname of the local machine for use with the MinIO Server
# MinIO assumes your network control plane can correctly resolve this hostname to the local machine

# Uncomment the following line and replace the value with the correct hostname for the local machine and port for the MinIO server (9000 by default).
#MINIO_SERVER_URL="http://minio.example.net:9000"

开机启动配置

systemctl enable minio.service

四、伪集群

1.搭建伪集群

服务器只有一台,搭建伪集群(多节点单Driver)

用端口区分

export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=123456789
MINIO_HOME=/usr/local/bin
MINIO_HOST=192.168.3.14
for i in {01..04};do
	nohup ${MINIO_HOME}/minio server --address ":90${i}" --console-address ":500${i}" \
	http://${MINIO_HOST}:${9001}/mnt/data01 http://${MINIO_HOST}:${9002}/mnt/data02 \
	http://${MINIO_HOST}:${9003}/mnt/data03 http://${MINIO_HOST}:${9004}/mnt/data04 \
	> ${MINIO_HOME}/minio-90{i}.log 2>&1 &
done
# 以下为伪代码
# OPT http://${MINIO_HOST}:${9001}/mnt/data01 http://${MINIO_HOST}:${9002}/mnt/data02 http://${MINIO_HOST}:${9003}/mnt/data03
# http://${MINIO_HOST}:${9004}/mnt/data04
# nohup 192.168.3.14/minio server --address ":9001" --console-address ":50001" OPT > /usr/local/bin/minio-9001.log 2>&1 &
# nohup 192.168.3.14/minio server --address ":9002" --console-address ":50002" OPT > /usr/local/bin/minio-9002.log 2>&1 &
# nohup 192.168.3.14/minio server --address ":9003" --console-address ":50003" OPT > /usr/local/bin/minio-9003.log 2>&1 &
# nohup 192.168.3.14/minio server --address ":9004" --console-address ":50004" OPT > /usr/local/bin/minio-9004.log 2>&1 &

2.入口使用nginx upstream 做负载均衡

worker_processes  2;
 
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
 
events {
    worker_connections  1024;
}
 
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    keepalive_timeout  65;
 
    # include /etc/nginx/conf.d/*.conf;
 
    upstream minio-api {
        server 192.168.3.14:9001;
        server 192.168.3.14:9002;
        server 192.168.3.14:9003;
        server 192.168.3.14:9004;
    }
 
    upstream minio-web {
        server 192.168.3.14:50001;
        server 192.168.3.14:50002;
        server 192.168.3.14:50003;
        server 192.168.3.14:50004;
    }
 
    server {
        listen       9000;
        listen  [::]:9000;
        server_name  localhost;
 
        # To allow special characters in headers
        ignore_invalid_headers off;
 
        # Allow any size file to be uploaded.
        # Set to a value such as 1000m; to restrict file size to a specific value
        client_max_body_size 0;
 
        # To disable buffering
        proxy_buffering off;
 
        location / {
            proxy_http_version 1.1;
            proxy_set_header   Upgrade $http_upgrade;
            proxy_set_header   Connection keep-alive;
            proxy_set_header   Host $host;
 
            # 转发客户浏览器的 ip 地址
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Proto $scheme;
 
            proxy_pass http://minio-api;
        }
    }
 
    server {
        listen       50000;
        listen  [::]:50000;
        server_name  localhost;
 
        ignore_invalid_headers off;
        client_max_body_size 0;
        proxy_buffering off;
 
        location / {
            proxy_http_version 1.1;
            proxy_set_header   Upgrade $http_upgrade;
            proxy_set_header   Connection keep-alive;
            proxy_set_header   Host $host;
 
            # 转发客户浏览器的 ip 地址
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Proto $scheme;
 
            proxy_pass http://minio-web;
        }
    }
}

五、Docker 集群版

1.首先创建好目录 /app/minio-cluster,在里面创建目录和文件,具体结构如下:

 /app/minio-cluster
 .
 --data1
 --data1
 --data1
 --data4
 --docker-compose.yml
 --nginx.conf

2.编写 docker-compose.yml 文件内容如下:

version: "3.5"
services:
  minio1:
    image: minio/minio
    container_name: minio1
    privileged: true
    restart: always
    environment:
      # web管理后台用户名
      MINIO_ROOT_USER: jobs
      # web管理后台密码
      MINIO_ROOT_PASSWORD: jobs@123
    networks:
      - minio_net
    volumes:
      # 文件存储目录映射
      - /app/minio-cluster/data1:/data
    # 运行 minio 服务启动命令,/data 参数是 docker 容器内部的数据目录
    # 由于 web 管理后台是动态端口,因此必须指定为固定的端口
    command: server --console-address ":9001" http://minio{1...4}:9000/data
 
  minio2:
    image: minio/minio
    container_name: minio2
    privileged: true
    restart: always
    environment:
      MINIO_ROOT_USER: jobs
      MINIO_ROOT_PASSWORD: jobs@123
    networks:
      - minio_net
    volumes:
      - /app/minio-cluster/data2:/data
    command: server --console-address ":9001" http://minio{1...4}:9000/data
 
  minio3:
    image: minio/minio
    container_name: minio3
    privileged: true
    restart: always
    environment:
      MINIO_ROOT_USER: jobs
      MINIO_ROOT_PASSWORD: jobs@123
    networks:
      - minio_net
    volumes:
      - /app/minio-cluster/data3:/data
    command: server --console-address ":9001" http://minio{1...4}:9000/data
 
  minio4:
    image: minio/minio
    container_name: minio4
    privileged: true
    restart: always
    environment:
      MINIO_ROOT_USER: jobs
      MINIO_ROOT_PASSWORD: jobs@123
    networks:
      - minio_net
    volumes:
      - /app/minio-cluster/data4:/data
    command: server --console-address ":9001" http://minio{1...4}:9000/data
 
  nginx:
    image: nginx
    container_name: nginx
    privileged: true
    restart: always
    volumes:
      - /app/minio-cluster/nginx.conf:/etc/nginx/nginx.conf
    ports:
      # 转发 api 端口
      - 9000:9000
      # 转发 web 管理界面端口
      - 9001:9001
    networks:
      - minio_net
    depends_on:
      - minio1
      - minio2
      - minio3
      - minio4
 
# 网络配置
networks:
  minio_net:
    driver: bridge

我们启动 4 个 docker 容器,每个 Minio 容器都是使用 9000 作为 api 端口,9001 作为 Web 管理界面端口。

由于我们需要使用 nginx 对 api 端口和 Web 管理界面端口进行负载均衡对外提供,因此 4 个容器就不再对外暴露端口。

worker_processes  2;
 
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
 
events {
    worker_connections  1024;
}
 
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    keepalive_timeout  65;
 
    # include /etc/nginx/conf.d/*.conf;
 
    upstream minio-api {
        server minio1:9000;
        server minio2:9000;
        server minio3:9000;
        server minio4:9000;
    }
 
    upstream minio-web {
        server minio1:9001;
        server minio2:9001;
        server minio3:9001;
        server minio4:9001;
    }
 
    server {
        listen       9000;
        listen  [::]:9000;
        server_name  localhost;
 
        # To allow special characters in headers
        ignore_invalid_headers off;
 
        # Allow any size file to be uploaded.
        # Set to a value such as 1000m; to restrict file size to a specific value
        client_max_body_size 0;
 
        # To disable buffering
        proxy_buffering off;
 
        location / {
            proxy_http_version 1.1;
            proxy_set_header   Upgrade $http_upgrade;
            proxy_set_header   Connection keep-alive;
            proxy_set_header   Host $host;
 
            # 转发客户浏览器的 ip 地址
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Proto $scheme;
 
            proxy_pass http://minio-api;
        }
    }
 
    server {
        listen       9001;
        listen  [::]:9001;
        server_name  localhost;
 
        ignore_invalid_headers off;
        client_max_body_size 0;
        proxy_buffering off;
 
        location / {
            proxy_http_version 1.1;
            proxy_set_header   Upgrade $http_upgrade;
            proxy_set_header   Connection keep-alive;
            proxy_set_header   Host $host;
 
            # 转发客户浏览器的 ip 地址
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Proto $scheme;
 
            proxy_pass http://minio-web;
        }
    }
}

最后在 docker-compose.yml 文件所在目录下,运行 docker-compose up -d 启动服务即可。

然后直接访问nginx服务即可

六、其他 window

start_minio.bat (不详细描述)

#set name 可以查看环境变量
#set name=value
#setx 可以永久设置本地环境变量
#setx /m 永久设置系统环境变量
#setx /m name “value”
#setx -m 永久追加系统环境变量
#setx -m name “%name%;value”
# 下载二进制exe文件至 E:\\minio目录下,并创建start_minio.bat
cd E:/minio
set MINIO_ROOT_USER=admin
set MINIO_ROOT_PASSWORD=123456789
.\minio.exe server E:/minio/data --console-address ":9001" --address ":9000"
# --console-address ":9001" --address ":9000" 可以添加,可以不添加

七、mc操作minio

MinIO Client — MinIO Object Storage for Linux

1.下载

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
mc --help
# mv mc /usr/local/sbin

2.使用

ls       列出文件和文件夹。
mb       创建一个存储桶或一个文件夹。
cat      显示文件和对象内容。
pipe     将一个STDIN重定向到一个对象或者文件或者STDOUT。
share    生成用于共享的URL。
cp       拷贝文件和对象。
mirror   给存储桶和文件夹做镜像。
find     基于参数查找文件。
diff     对两个文件夹或者存储桶比较差异。
rm       删除文件和对象。
events   管理对象通知。
watch    监听文件和对象的事件。
policy   管理访问策略。
session  为cp命令管理保存的会话。
config   管理mc配置文件。
update   检查软件更新。
version  输出版本信息。

1、连接minio服务器,指令如下:

# mc config host add minio连接名(随便) [http://ip:9000](http://ip:9000/) minio用户名 minio服务器密码 --api S3v4
mc config host add myminio http://localhost:9000 xianpm 123456789

2、删除已添加的云存储连接

# mc config host remove 连接名
mc config host remove test

3、查看已连接的云存储

# mc config host list 或 mc config host ls

4、创建存储桶

# mc mb minio连接名/桶名
mc mb test/test

5、查看存储桶

# mc ls minio连接名
mc ls myminio

6、上传下载文件

# 上传一个文件到bucket中
# mc cp filePath 链接名/存储桶 
mc cp /etc/1.png  myminio/images
# 上传一个目录到bucket中
# mc cp path 链接名/存储桶 --recursive
mc cp /etc test/test --recursive
# 下载一个文件到本地目录
# mc cp 链接名/存储桶/file  filePath 
mc cp myminio/images/1.jpg /tmp/test/
# 下载一个目录到本地目录
# mc cp 链接名/存储桶/ path --recursive
mc cp myminio/images/ /tmp --recursive

7、删除bucket中的文件

# 删除文件 mc rm 链接名/存储桶/文件名
mc rm myminio/images/1.png
# 删除目录 mc rm 链接名/存储桶/目录 --recursive --force
mc rm myminio/images/avatardir --recursive --force

8、删除存储桶

#删除没有文件的bucket=>  mc rb  链接名/存储桶
mc rb test/test
# 删除有文件的bucket => mc rb  链接名/存储桶 --force
mc rb test/test --force

9、创建用户和角色

# 添加用户
# mc admin user add minio连接名 用户名 密码
mc admin user add test testuser test123456
# 添加策略
# mc admin user add minio连接名 策略名 json配置文件
mc admin policy add test test test.json
# 配置用户策略
# mc admin policy set minio连接名 策略名 user=用户名
mc admin policy set test test user=test

标签:MINIO,mc,--,minio,笔记,server,proxy,Minio
From: https://www.cnblogs.com/paylove/p/18106900

相关文章

  • Fiddler系列课程笔记(三): HTTPS及安卓&iOS设备APP抓包
    Fiddler系列课程笔记(三):HTTPS及安卓&iOS设备APP抓包1.HTTPS抓包1.1什么是HTTPS?HTTPS(全称:HyperTextTransferProtocoloverSecureSocketLayer),HTTPS协议是由HTTP加上TLS/SSL协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技......
  • Fiddler系列课程笔记(二):Fiddler工具详解及应用实战
    Fiddler系列课程笔记(二):Fiddler工具详解及应用实战1.Fiddler的安装2.Fiddler的组成部分2.1Fiddler的菜单栏2.1.1Hide:隐藏掉一些不必要的请求资源的数据展示2.1.2Fiddler修改端口2.1.3Fiddler快速打开IE设置2.2Fiddler的工具条工具栏快捷按钮介绍:2.2.1[......
  • Fiddler系列课程笔记(一):初识Fiddler,深入理解HTTP协议
    Fiddler系列课程笔记(一):初识Fiddler,深入理解HTTP协议1.fiddler简介1.1什么是B/S架构?(Browser/Server)【补充】:tomcat是公司常用的一个web服务器,用来部署资源(文件、图片等),提供服务的。1.2我们可以查看URL(统一资源定位符)怎么获取服务器资源的1.2.1login.html的访问......
  • Scheduling and Traffic Shaping 学习笔记(一)
    Time-AwareShaping  参考:https://inet.omnetpp.org/docs/showcases/tsn/trafficshaping/timeawareshaper/doc/index.html目标:时间感知整形的工作原理是将时间划分为固定的间隔或窗口,并根据帧的优先级在这些窗口内调度帧的传输。通过在单独的窗口中发送优先级较高的帧来......
  • JavaWeb学习笔记——第十天
    Springboostweb案例(一)准备工作需求说明需要完成以下功能:部门管理员工管理查询部门列表查询员工列表(分页、条件)删除部门删除员工新增部门新增员工修改部门修改员工环境搭建项目架构:准备数据库表(dept、emp)。--部门管理createtabledep......
  • Pandas学习笔记
    Pandas学习笔记Pandas官方文档非常全面,但从希望快速上手使用的角度,过于全面,不过Pandas官方提供了CheetSheet,概要总结了Pandas的核心功能,相对于官方文档来说更加简明,不过缺点则是从刚上手使用的角度来说过于简明于是本篇文字就围绕CheetSheet,增加相应的样例代码,从而在不......
  • QTP/UFT 学习笔记:函数方法等记录
    ​原记录在CSDN上的,后来被自动转VIP了,我搬过来免费看看,小东西没必要VIP,主打一个知识无价,朴实无华。1、Back效果等同于浏览器窗口上的【回退】按钮,使浏览器返回上一个页面​​![](https://img2024.cnblogs.com/blog/1202750/202403/1202750-20240331130946866-2132113900.png)......
  • 【JavaParser笔记02】JavaParser解析Java源代码中的类字段信息(javadoc注释、字段​​
    这篇文章,主要介绍如何使用JavaParser解析Java源代码中的类字段信息(javadoc注释、字段名称)。目录一、JavaParser依赖库1.1、引入依赖1.2、获取类成员信息(1)案例代码<......
  • FFmpeg开发笔记(十)Linux环境给FFmpeg集成vorbis和amr
    ​FFmpeg内置了aac音频格式,在《FFmpeg开发实战:从零基础到短视频上线》一书的“5.2.2 Linux环境集成mp3lame”又介绍了如何给FFmpeg集成mp3格式,常见的音频文件除了这两种之外,还有ogg和amr两种格式也较常用。其中ogg格式的编解码依赖于libogg和libvorbis,而amr格式的编解码依赖于op......
  • 读所罗门的密码笔记06_共生思想(上)
    1.      共生思想1.1.        1997年5月11日,IBM公司的“深蓝”计算机在与国际象棋世界冠军加里·卡斯帕罗夫的第二次对弈时击败了他1.1.1.          这台超级计算机以3.5∶2.5的战绩胜出,登上了世界各地的新闻头条1.2.        AlphaZero......