MinIO文件存储服务搭建

MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。
中文官方文档:https://docs.min.io/cn/

二进制文件部署

下载二进制文件

Linux 64位 https://dl.min.io/server/minio/release/linux-amd64/minio
下载完后上传至 Linux 服务器或者登录Linux服务器通过 wget 命令下载
wget https://dl.min.io/server/minio/release/linux-amd64/minio

MinIO启动参数

在启动MinIO服务前,我们先来了解一下 MinIO 启动都支持那些参数
语法:
     minio [FLAGS] COMMAND [ARGS...]
COMMANDS:
     server 启动对象存储服务
     gateway 启动对象存储网关
FLAGS:
     --certs-dir value, -S value 证书目录 (默认: “/root/.minio/certs”)
     --quiet 不显示启动信息
     --anonymous 不记录敏感信息
     --json 以json格式输出服务器日志和启动信息
     --help, -h 显示帮助信息
     --version, -v 显示版本信息


我们可以看到有两个启动命令 servergateway,继续看一下这两个命令的用法
语法:
     minio server [FLAGS] DIR1 [DIR2..]
FLAGS:
     --address value 绑定指定的地址和端口,格式:ADDRESS:PORT, ADDRESS 可以是 IP 或 hostname (默认: “:9000”)
     --certs-dir value, -S value
     --quiet
     --anonymous
     --json
     --help, -h


语法:
     minio gateway COMMAND [COMMAND FLAGS | -h] [ARGUMENTS...]
COMMANDS:
     nas 网络附属存储 (NAS)
     azure 微软Azure Blob 存储
     s3 亚马逊简易存储服务 (S3)
     hdfs Hadoop分布式文件系统 (HDFS)
     gcs Google 云存储
FLAGS:
     --address value
     --certs-dir value, -S value
     --quiet
     --anonymous
     --json
     --help, -h


常用的环境变量参数:
ACCESS:
     MINIO_ACCESS_KEY: 自定义用户名或访问密钥,长度至少为3个字符
     MINIO_SECRET_KEY: 自定义密码或密钥,长度至少为8个字符
BROWSER:
     MINIO_BROWSER: 禁用浏览器访问,设置值为 “off”
CACHE:
     MINIO_CACHE_DRIVES: 挂载的驱动器或目录列表,以 “;” 分割
     MINIO_CACHE_EXCLUDE: 不启用缓存的模板列表,以 “;” 分割
     MINIO_CACHE_EXPIRY: 缓存过期时间(天)
     MINIO_CACHE_QUOTA: 最大允许的缓存驱动器使用百分比(0-100)
     MINIO_CACHE_AFTER:缓存对象之前的最小可访问次数
     MINIO_CACHE_COMMENT:为这个设置添加一个可选的注释
DOMAIN:
     MINIO_DOMAIN: 要启用虚拟主机风格的请求,将此值设置为Minio主机域名。MinIO支持格式为
                                    http://mydomain.com/bucket/object 的路径类型请求。MINIO_DOMAIN 环境变量被用来
                                    启用虚拟主机类型请求。 如果请求的Host头信息匹配 (.+).mydomain.com,则匹配的
                                    模式 $1 被用作 bucket, 并且路径被用作object
WORM:
     MINIO_WORM: 要在服务器上打开Write-Once-Read-Many,将这个值设置为 “on”
BUCKET-DNS:
     MINIO_DOMAIN: 如果需要开启存储桶DNS请求,请设置为“Minio主机域名”
     MINIO_PUBLIC_IPS: 要启用存储桶DNS请求,将此值设置为Minio主机公共IP列表,以 “,” 分隔
     MINIO_ETCD_ENDPOINTS: 要启用存储桶DNS请求,将此值设置为etcd端点列表,以 “,” 分隔的
KMS:
     MINIO_SSE_VAULT_ENDPOINT: 要将Vault启用为KMS,请将此值设置为Vault endpoint
     MINIO_SSE_VAULT_APPROLE_ID: 要将Vault启用为KMS,请将此值设置为Vault AppRole ID。
     MINIO_SSE_VAULT_APPROLE_SECRET: 要将Vault启用为KMS,请将此值设置为Vault AppRole Secret ID
     MINIO_SSE_VAULT_KEY_NAME: 要将Vault启用为KMS,请将此值设置为Vault加密密钥环名称。
REGION:
     MINIO_REGION_NAME:服务器的物理位置名字
     MINIO_REGION_COMMENT:为这个设置添加一个可选的注释
STORAGE_CLASS:
     MINIO_STORAGE_CLASS_STANDARD:设置默认标准存储类型的奇偶校验计数,例如"EC:4"
     MINIO_STORAGE_CLASS_RRS:设置默认低冗余存储类型的奇偶校验计数,例如"EC:2"
     MINIO_STORAGE_CLASS_COMMENT:为这个设置添加一个可选的注释


示例:

  1. 以 “/home/shared” 为存储目录启动 minio服务
    $ minio server /home/shared
  2. 启动 minio 服务并绑定指定地址和端口, ADDRESS:PORT
    $ minio server --address 192.168.1.101:9000 /home/shared
  3. 启动 minio 服务并启用虚拟主机风格的请求
    $ export MINIO_DOMAIN=mydomain.com
    $ minio server --address mydomain.com:9000 /mnt/export
  4. 单节点64个盘,以纠删码模式启动 minio 服务
    $ minio server /mnt/export{1…64}
  5. 32节点,每个节点32个盘,以分布式模式启动 minio 服务。在所有32个节点依次执行以下命令
    $ export MINIO_ACCESS_KEY=minio
    $ export MINIO_SECRET_KEY=miniostorage
    $ minio server http://node{1…32}.example.com/mnt/export/{1…32}
  6. 启动 minio 服务器并启用边缘缓存
    $ export MINIO_CACHE_DRIVES="/mnt/drive1;/mnt/drive2;/mnt/drive3;/mnt/drive4"
    $ export MINIO_CACHE_EXCLUDE=“bucket1/;.png”
    $ export MINIO_CACHE_EXPIRY=40
    $ export MINIO_CACHE_MAXUSE=80
    $ minio server /home/shared
  7. 启动minio服务器并启用KMS
    $ export MINIO_SSE_VAULT_APPROLE_ID=9b56cc08-8258-45d5-24a3-679876769126
    $ export MINIO_SSE_VAULT_APPROLE_SECRET=4e30c52f-13e4-a6f5-0763-d50e8cb4321f
    $ export MINIO_SSE_VAULT_ENDPOINT=https://vault-endpoint-ip:8200
    $ export MINIO_SSE_VAULT_KEY_NAME=my-minio-key
    $ minio server /home/shared

severgateway 启动有何区别呢?
server:适用于有自己的服务和硬盘等存储硬件设备的情况,不依赖于第三方服务
gateway:以网关的模式启动,网关一般充当的是请求转发的角色,也可以理解为代理。所以在该模式下,可以使用第三方提供存储服务,像:NAS,azure,s3等

单节点单磁盘运行MinIO

赋予 minio 可执行权限
chmod +x minio
启动服务
./minio server /data
后台进程启动
nohup ./minio server /data > /usr/local/minio/minio.log 2>&1 &
启动后浏览器输入: 服务器IP:9000,看到如下界面,启动成功
默认 Access Key 和 Secret Key 都是 minioadmin
在这里插入图片描述
如何指定 Access Key 和 Secret Key?MinIO启动时,会从环境变量中读取 MINIO_ACCESS_KEYMINIO_SECRET_KEY,所以我们需要在启动服务前,设置这两个环境变量即可
export MINIO_ACCESS_KEY=minioadmin
export MINIO_SECRET_KEY=minioadmin

以纠删码模式运行Minio

MinIO会把你提供的所有驱动器,按照4到16个一组划分为多个纠删码集合,因此,你提供的驱动器数量必须是以上这些数字(4到16)的倍数
export MINIO_ACCESS_KEY=minioadmin
export MINIO_SECRET_KEY=minioadmin
./minio server /data1 /data2 /data3 /data4
后台进程启动
nohup ./minio server /data1 /data2 /data3 /data4 > /usr/local/minio/minio.log 2>&1 &

多节点分布式运行Minio

分布式Minio可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务。由于硬盘分布在不同的节点上,分布式Minio避免了单点故障。首先需要关注一下几个注意点

  • 分布式Minio里所有的节点需要有同样的access秘钥和secret秘钥,这样这些节点才能建立联接。为了实现这个,建议在执行minio server命令之前,在所有节点上先将access秘钥和secret秘钥export成环境变量MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD。
  • MinIO 可创建每组4到16个磁盘组成的纠删码集合。所以你提供的磁盘总数必须是其中一个数字的倍数。
  • MinIO会根据给定的磁盘总数或者节点总数选择最大的纠删码集合大小,确保统一分布,即每个节点参与每个集合的磁盘数量相等。
  • 每个对象被写入一个EC集合中,因此该对象分布在不超过16个磁盘上。
  • 建议运行分布式MinIO设置的所有节点都是同构的,即相同的操作系统,相同数量的磁盘和相同的网络互连。
  • 分布式Minio使用干净的目录,里面没有数据。你也可以与其他程序共享磁盘,这时候只需要把一个子目录单独给MinIO使用即可。例如,你可以把磁盘挂在到/export下, 然后把/export/data作为参数传给MinIO server即可。
  • 分布式Minio里的节点时间差不能超过15分钟,你可以使用NTP 来保证时间一致。
  • MINIO_DOMAIN环境变量应该定义并且导出,以支持bucket DNS style。

启动分布式Minio实例,例如:4个节点,每节点1块盘,需要在4个节点上都运行下面的命令
export MINIO_ACCESS_KEY=<ACCESS_KEY>
export MINIO_SECRET_KEY=<SECRET_KEY>
./minio server http://192.168.1.101/data http://192.168.1.102/data \
                             http://192.168.1.103/data http://192.168.1.104/data \


启动分布式Minio实例,例如:4个节点,每节点4块盘,需要在4个节点上都运行下面的命令
export MINIO_ACCESS_KEY=<ACCESS_KEY>
export MINIO_SECRET_KEY=<SECRET_KEY>
./minio server http://192.168.1.101/data1 http://192.168.1.101/data1 \
                             http://192.168.1.101/data3 http://192.168.1.101/data4 \
                             http://192.168.1.102/data1 http://192.168.1.102/data1 \
                             http://192.168.1.102/data3 http://192.168.1.102/data4 \
                             http://192.168.1.103/data1 http://192.168.1.103/data1 \
                             http://192.168.1.103/data3 http://192.168.1.103/data4 \
                             http://192.168.1.104/data1 http://192.168.1.104/data1 \
                             http://192.168.1.104/data3 http://192.168.1.104/data4 \


或者:./minio server http://192.168.1.10{1...4}/data{1...4}
{1…4} 是有3个点的! 用2个点{1…n}的话会被shell解析导致不能传给MinIO server, 影响纠删码的顺序, 进而影响性能和高可用性
服务启动后,通过 192.168.1.101:9000~192.168.1.104:9000 均可访问

Docker容器部署

当然了,使用 Docker 容器部署需要服务器安装有 Docker 环境

单节点容器部署Minio

拉取镜像:
docker pull minio/minio
在Docker中运行Minio单点模式(-p 指定主机与容器端口映射,-e 指定环境变量):
docker run -p 9000:9000 -e MINIO_ACCESS_KEY=minioadmin -e MINIO_SECRET_KEY=minioadmin minio/minio server /data
以上命令运行,在容器销毁后,存储在容器中的所有文件都没有了,要持久化保存文件,需要将主机的目录挂载到容器内(-v 主机目录:容器目录,容器目录不可以为相对路径)
docker run -p 9000:9000 -e MINIO_ACCESS_KEY=minioadmin -e MINIO_SECRET_KEY=minioadmin -v /minio/data:/data minio/minio server /data

分布式模式部署Minio

分布式MinIO可以通过 Docker Compose 或者 Swarm mode进行部署。这两者之间的主要区别是Docker Compose创建了单个主机,多容器部署,而Swarm模式创建了一个多主机,多容器部署。
分布式部署详见官方文档:
使用Docker Compose部署MinIO
使用Docker Swarm部署MinIO

多节点使用 Nginx 负载均衡

多节点服务启动后,单独对每个节点进行访问显然不合理,通过使用 nginx 代理,进行负载均衡则很有必要。简单的配置如下:

upstream http_minio {
    server 192.168.1.101:9000;
    server 192.168.1.102:9000;
    server 192.168.1.103:9000;
    server 192.168.1.104:9000;
}

server{
    listen       9000;
    server_name  192.168.1.105;

    location / {
        proxy_pass http://http_minio;
    }
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MinIO文件服务器是一个轻量级的对象存储服务器,可以在本地计算机或云环境中运行。你可以使用MinIO存储和访问大量的数据。根据不同的操作系统和环境,安装和配置MinIO有几种不同的方法。 对于Windows操作系统,你可以在Windows PowerShell中执行以下命令来安装和配置MinIO: setx MINIO_ROOT_USER admin Invoke-WebRequest -Uri "https://dl.min.io/server/minio/release/windows-amd64/minio.exe" -OutFile "C:\minio.exe" setx MINIO_ROOT_PASSWORD password C:\minio.exe server F:\Data --console-address ":9001" 对于Linux操作系统,你可以在命令行中执行以下命令来安装和配置MinIO: wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod +x minio MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password ./minio server ./minio --console-address ":9001" 对于MacOS操作系统,你可以在命令行中执行以下命令来安装和配置MinIO: wget https://dl.min.io/server/minio/release/darwin-amd64/minio chmod +x minio MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password ./minio server F:\Data --console-address ":9001" 另一种推荐的方法是使用Docker来安装和配置MinIO。你可以使用以下命令来下载并启动MinIO容器: docker-compose up -d 这是一个示例的docker-compose.yml文件的内容: version: '3' services: minio: image: minio/minio hostname: "minio" ports: - "9000:9000" # api 端口 - "9001:9001" # 控制台端口 environment: MINIO_ACCESS_KEY: admin #管理后台用户名 MINIO_SECRET_KEY: password #管理后台密码,最小8个字符 volumes: - /home/deepsoft/minio/data:/data #映射当前目录下的data目录至容器内/data目录 - /home/deepsoft/minio/config:/root/.minio/ #映射配置目录 command: server --console-address ':9001' /data #指定容器中的目录 /data privileged: true restart: always logging: options: max-size: "50M" # 最大文件上传限制 max-file: "10" driver: json-file networks: - minio 这些是安装和配置MinIO文件服务器的不同方法和步骤,你可以根据你的操作系统和环境选择合适的方法来进行安装。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [MinIO分布式文件服务搭建与入门](https://blog.csdn.net/lemon_TT/article/details/124675675)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [第03讲:MinIO分布式文件服务器](https://blog.csdn.net/qzc70919700/article/details/129988299)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值