Minio入门系列【1】Windows/Linux/K8S单机部署Minio

这篇具有很好参考价值的文章主要介绍了Minio入门系列【1】Windows/Linux/K8S单机部署Minio。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 Minio简介

MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。目前支持JavaScript 、Java、Python、Golang、.NET。

MinIO 是一款高性能、分布式的对象存储系统. 它是一款软件产品, 可以100%的运行在标准硬件。即X86等低成本机器也能够很好的运行MinIO。

MinIO与传统的存储和其他的对象存储不同的是:它一开始就针对性能要求更高的私有云标准进行软件架构设计。因为MinIO一开始就只为对象存储而设计。所以他采用了更易用的方式进行设计,它能实现对象存储所需要的全部功能,在性能上也更加强劲,它不会为了更多的业务功能而妥协,失去MinIO的易用性、高效性。 这样的结果所带来的好处是:它能够更简单的实现局有弹性伸缩能力的原生对象存储服务。

MinIO在传统对象存储用例(例如辅助存储,灾难恢复和归档)方面表现出色。同时,它在机器学习、大数据、私有云、混合云等方面的存储技术上也独树一帜。当然,也不排除数据分析、高性能应用负载、原生云的支持。

在中国:阿里巴巴、腾讯、百度、中国联通、华为、中国移动等等9000多家企业也都在使用MinIO产品

MinIO现在也是CNCF成员,在云原生存储部分和ceph等一起作为目前的解决方案之一。

2 Minio优点

2.1 Erasure Coding(消除编码)

MinIO 使用以汇编代码编写的每个对象内联擦除编码来保护数据,以提供尽可能高的性能。 MinIO 使用 Reed-Solomon 代码将对象条带化为具有用户可配置冗余级别的数据和奇偶校验块。 MinIO 的纠删码在对象级别执行修复,可以独立修复多个对象。

在最大奇偶校验为 N/2 的情况下,MinIO 的实现可以确保部署中只有 ((N/2)+1) 个可操作驱动器的不间断读写操作。 例如,在 12 驱动器设置中,MinIO 将对象分片到 6 个数据驱动器和 6 个奇偶校验驱动器,并且可以可靠地写入新对象或重建现有对象,部署中只剩下 7 个驱动器

Minio入门系列【1】Windows/Linux/K8S单机部署Minio,微服务,Minio,minio,微服务,分布式图片,对象存储

2.2 Bitrot 保护

静默数据损坏或比特腐烂是磁盘驱动器面临的一个严重问题,会导致数据在用户不知情的情况下损坏。 原因多种多样(驱动器老化、电流峰值、磁盘固件错误、幻写、误读/写入、驱动程序错误、意外覆盖)但结果是相同的 - 数据受损。

MinIO 对 HighwayHash 算法的优化实现确保它永远不会读取损坏的数据 - 它会即时捕获并修复损坏的对象。 通过在读取时计算散列并在写入时从应用程序、网络和内存/驱动器验证它,从端到端确保完整性。 该实现专为速度而设计,可以在 Intel CPU 的单核上实现超过 10 GB/秒的散列速度。

Minio入门系列【1】Windows/Linux/K8S单机部署Minio,微服务,Minio,minio,微服务,分布式图片,对象存储

2.3 加密

在飞行中加密数据是一回事; 保护静态数据是另一回事。 MinIO 支持多种复杂的服务器端加密方案来保护数据——无论数据位于何处。 MinIO 的方法以可忽略的性能开销确保机密性、完整性和真实性。 使用 AES-256-GCM、ChaCha20-Poly1305 和 AES-CBC 支持服务器端和客户端加密。

加密对象使用 AEAD 服务器端加密进行防篡改。 此外,MinIO 与所有常用的密钥管理解决方案(例如 HashiCorp Vault)兼容并经过测试。 MinIO 使用密钥管理系统 (KMS) 来支持 SSE-S3。

如果客户端请求 SSE-S3,或者启用了自动加密,MinIO 服务器使用唯一的对象密钥加密每个对象,该对象密钥由 KMS 管理的主密钥保护。 鉴于极低的开销,可以为每个应用程序和实例打开自动加密。
Minio入门系列【1】Windows/Linux/K8S单机部署Minio,微服务,Minio,minio,微服务,分布式图片,对象存储

2.4 蠕虫病毒

启用 WORM 后,MinIO 会禁用所有可能会改变对象数据和元数据的 API。 这意味着数据一旦写入就可以防篡改。 这对于许多不同的监管要求具有实际应用。

2.5 身份管理

MinIO 支持身份管理领域最先进的标准,与 OpenID connect 兼容提供商以及主要外部 IDP 供应商集成。这意味着访问是集中式的,密码是临时和轮换的,而不是存储在配置文件和数据库中。此外,访问策略是细粒度和高度可配置的,这意味着支持多租户和多实例部署变得非常简单。

Minio入门系列【1】Windows/Linux/K8S单机部署Minio,微服务,Minio,minio,微服务,分布式图片,对象存储

2.6 连续复制

传统复制方法的挑战在于它们无法有效地扩展到几百 TiB 以上。 话虽如此,每个人都需要一个复制策略来支持灾难恢复,并且该策略需要跨越地域、数据中心和云。

MinIO 的连续复制专为大规模、跨数据中心部署而设计。 通过利用 Lambda 计算通知和对象元数据,它可以高效快速地计算增量。 Lambda 通知确保立即传播更改,这与传统的批处理模式不同。

连续复制意味着如果发生故障,数据丢失将保持在最低限度 - 即使面对高度动态的数据集。 最后,与 MinIO 所做的一切一样,连续复制是多供应商的,这意味着您的备份位置可以是从 NAS 到公共云的任何地方。
Minio入门系列【1】Windows/Linux/K8S单机部署Minio,微服务,Minio,minio,微服务,分布式图片,对象存储

2.7 全球联盟

现代企业的数据无处不在。 MinIO 允许将这些不同的实例组合起来形成一个统一的全局命名空间。 具体来说,可以将任意数量的 MinIO 服务器组合成一个 Distributed Mode set,多个 Distributed Mode set 可以组合成一个 MinIO Server Federation。 每个 MinIO Server Federation 都提供统一的管理和命名空间。

MinIO 联合服务器支持无限数量的分布式模式集。 这种方法的影响是,对象存储可以为大型、地理分布的企业大规模扩展,同时保留从单个控制台容纳各种应用程序(Splunk、Teradata、Spark、Hive、Presto、TensorFlow、H20)的能力。

2.8 多云网关

所有企业都在采用多云战略。 这也包括私有云。 因此,您的裸机虚拟化容器和公共云服务(包括非 S3 提供商,如谷歌、微软和阿里巴巴)必须看起来完全相同。 虽然现代应用程序具有高度可移植性,但为这些应用程序提供支持的数据却并非如此。

让数据可用,无论它位于何处,是 MinIO 解决的主要挑战。 MinIO 在裸机、网络附加存储和每个公共云上运行。 更重要的是,MinIO 通过 Amazon S3 API 确保您对该数据的看法从应用程序和管理的角度来看完全相同。

MinIO,可以走得更远,使您现有的存储基础设施与 Amazon S3 兼容。 其影响是深远的。 现在,组织可以真正统一他们的数据基础设施 - 从文件到块,所有这些都显示为可通过 Amazon S3 API 访问的对象,而无需迁移。

3 Minio架构

MinIO 被设计为云原生,可以作为由外部编排服务(如 Kubernetes)管理的轻量级容器运行。 整个服务器是一个大约 40MB 的静态二进制文件,并且在使用 CPU 和内存资源方面非常高效 - 即使在高负载下也是如此。 结果是您可以在共享硬件上共同托管大量租户。

Minio入门系列【1】Windows/Linux/K8S单机部署Minio,微服务,Minio,minio,微服务,分布式图片,对象存储
MinIO 在带有本地连接驱动器 (JBOD/JBOF) 的商用服务器上运行。 集群中的所有服务器都具有相同的能力(完全对称架构)。 没有名称节点或元数据服务器。

MinIO 将数据和元数据作为对象一起写入,从而消除了对元数据数据库的需求。 此外,MinIO 执行所有功能(擦除代码、位腐烂检查、加密)作为内联、严格一致的操作。 结果是 MinIO 非常有弹性。

每个 MinIO 集群都是分布式 MinIO 服务器的集合,每个节点有一个进程。 MinIO作为单进程运行在用户空间,使用轻量级协程实现高并发。 驱动器被分组为擦除集(默认情况下每组 16 个驱动器),并且使用确定性哈希算法将对象放置在这些集中。

MinIO 专为大规模、多数据中心的云存储服务而设计。 每个租户运行他们自己的 MinIO 集群,与其他租户完全隔离,使他们能够保护他们免受升级、更新和安全事件的任何中断。 每个租户通过跨地域联合集群独立扩展。

4 Windows安装

4.1 下载

下载地址:http://dl.minio.org.cn/server/minio/release/
Minio入门系列【1】Windows/Linux/K8S单机部署Minio,微服务,Minio,minio,微服务,分布式图片,对象存储
Minio入门系列【1】Windows/Linux/K8S单机部署Minio,微服务,Minio,minio,微服务,分布式图片,对象存储

4.2 在minio.exe目录打开cmd

Minio入门系列【1】Windows/Linux/K8S单机部署Minio,微服务,Minio,minio,微服务,分布式图片,对象存储

4.3 配置参数并启动

# 设置用户名
set MINIO_ACCESS_KEY=admin
# 设置密码(8位)
set MINIO_SECRET_KEY=admin123
# 指定启动端口(未指定默认9000)及存储位置
minio.exe  server  --address 0.0.0.0:9999 D:/data

Minio入门系列【1】Windows/Linux/K8S单机部署Minio,微服务,Minio,minio,微服务,分布式图片,对象存储

4.4 登录地址IP+9999,输入用户名及密码,搭建完成

Minio入门系列【1】Windows/Linux/K8S单机部署Minio,微服务,Minio,minio,微服务,分布式图片,对象存储

5 Linux安装

5.1 下载

Minio入门系列【1】Windows/Linux/K8S单机部署Minio,微服务,Minio,minio,微服务,分布式图片,对象存储
Minio入门系列【1】Windows/Linux/K8S单机部署Minio,微服务,Minio,minio,微服务,分布式图片,对象存储

5.2 创建相关目录

# 创建文件存储目录
mkdir -p /data/minio/data
# 创建程序存放目录,并上传minio至此目录
mkdir -p /data/minio
cd /data/minio
# 修改可读权限
chmod +x minio 
# 设置用户名
export  MINIO_ACCESS_KEY=admin
# 设置密码
export  MINIO_SECRET_KEY=admin123

5.3 启动并访问首页

 ./minio server /data/minio/data --console-address ":33639" --address ":9000"

Minio入门系列【1】Windows/Linux/K8S单机部署Minio,微服务,Minio,minio,微服务,分布式图片,对象存储

5.4 Docker

docker run -p 9999:9000 -e "MINIO_ACCESS_KEY=admin" -e "MINIO_SECRET_KEY=admin123" -v /data/minio:/data -d minio/minio server /data

5.5 Docker compose

version: '3'
services:
   minio:
    container_name: minio
    hostname: minio
    image: "minio/minio:latest"
    volumes:
      - /data/minio:/data
    ports:
      - "9999:9000"
    environment:
      MINIO_ACCESS_KEY: admin
      MINIO_SECRET_KEY: admin123
      TZ: Asia/Shanghai
    command: server /data
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

6 K8S

要点:使用yml文件配置资源,使用PVC存储minio文件

6.1 在节点 192.168.58.103创建NFS

# 安装nfs-utils rpcbind
yum install nfs-utils nfs-common rpcbind 
# 创建目录
mkdir -p /data/minio
chmod 666 /data/minio/
chown nfsnobaby /data/minio/
# 添加访问策略
vi /etc/exports
# 输入内容
/data/minio  *(rw,no_root_squash,no_all_squash,sync)
# 启动
systemctl start rpcbind
systemctl start nfs
# 查看
showmount -e

6.2 创建PV(master执行)

# vim minio-pv.yaml 
# 添加
apiVersion: v1
kind: PersistentVolume
metadata:
    name: pv-minio
spec:
    capacity:
      storage: 2Gi
    accessModes:
      - ReadWriteMany
    persistentVolumeReclaimPolicy: Recycle
    nfs:
      path: /data/minio
      server: 192.168.58.103
# 创建
kubectl create -f minio-pv.yaml 
# 查看
kubectl get pv -o wide

Minio入门系列【1】Windows/Linux/K8S单机部署Minio,微服务,Minio,minio,微服务,分布式图片,对象存储

6.3 创建PVC(master执行)

# 
vim minio-pvc.yaml 
# 内容
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-minio
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
# 查看
kubectl get pvc -o wide 

6.4 创建pod及service(master执行)

# 
vim minio.yaml 
# 添加
apiVersion: v1
kind: Service
metadata:
  name: minio-svc
  labels:
    app: minio
spec:
  type: NodePort
  ports:
  - name: minio-port
    protocol: TCP
    port: 9000
    nodePort: 32600
    targetPort: 9000
  selector:
    app: minio
---
apiVersion: v1
kind: Pod
metadata:
  name: minio
  labels:
    app: minio
spec:
  containers:
  - name: minio
    env:
    - name: MINIO_ACCESS_KEY
      value: "admin"
    - name: MINIO_SECRET_KEY
      value: "admin123"
    image: minio/minio:latest
    args:
    - server
    - /data
    ports:
    - name: minio
      containerPort: 9000
    volumeMounts:
    - name: data
      mountPath: /data
  volumes:
  - name: data
    persistentVolumeClaim:
     claimName: pvc-minio
# 创建
kubectl apply  -f minio.yaml 
# 查看pod 
kubectl get pods -o wide
# 查看service
kubectl get svc -o wide 

Minio入门系列【1】Windows/Linux/K8S单机部署Minio,微服务,Minio,minio,微服务,分布式图片,对象存储

6.5 验证

因为service采用的是NodePort,所以需要输入minio所在node的IP+32600访问
Minio入门系列【1】Windows/Linux/K8S单机部署Minio,微服务,Minio,minio,微服务,分布式图片,对象存储
文件存放:页面上传一个文件,进入nfs所在服务器,然后发现文件已被存放在PVC中
Minio入门系列【1】Windows/Linux/K8S单机部署Minio,微服务,Minio,minio,微服务,分布式图片,对象存储文章来源地址https://www.toymoban.com/news/detail-727240.html

到了这里,关于Minio入门系列【1】Windows/Linux/K8S单机部署Minio的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • minio集群部署(k8s内)

    一、前言 minio的部署有几种方式,分别是单节点单磁盘,单节点多磁盘,多节点多磁盘三种方式,本次部署使用多节点多磁盘的方式进行部署,minio集群多节点部署最低要求需要4个节点,集群扩容时也是要求扩容的节点为4的倍数才能更好的发挥minio的性能,使用minio集群可以

    2024年02月03日
    浏览(31)
  • K8S如何部署Redis(单机、集群)

    在今天的讨论中,我们将深入研究如何将Redis数据库迁移到云端,以便更好地利用云计算的优势提高数据管理的灵活性。 Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息代理。Redis支持多种数据结构,如字符串、列表、集

    2024年02月11日
    浏览(41)
  • Kubernetes(K8S)单机版部署

    1.虚拟机部署Kubernetes(K8S)_生骨大头菜的博客-CSDN博客,首先按照这里部署好k8s服务,但是只需要部署一台master服务器就可以 2.默认k8s的master节点是不能跑pod的业务,需要执行以下命令解除限制 3. 如果需要保留其他子节点但是想将pod调度到master节点上,可以进行上述命令后

    2024年02月11日
    浏览(59)
  • K8S历险记-从零开始kubeadm单机安装部署k8s保姆级教程

    1.查看系统版本信息以及修改配置信息 1.1 查看cpu信息 k8s安装至少需要2核2G的环境,否则会安装失败 1.2 安装k8s时,临时关闭swap ,如果不关闭在执行kubeadm部分命令会报错 1.3 安装k8s时,可以临时关闭selinux,减少额外配置 1.4 关闭防火墙 1.5 设置网桥参数 1.6 修改hosts文件

    2024年02月08日
    浏览(53)
  • Centos7部署单机版K8S

    2024年02月04日
    浏览(57)
  • 服务器-Kubernetes (K8S)单机部署实战 -- 001

         本篇博文是 centos 7 系统安装 kubernetes 单机 master 节点操作。 一: 查看 服务器 配置信息       1. 执行命令查看服务器cpu信息。安装 kubernetes 服务,cpu核心数必须大于2,内存大于2G。       2.  修改服务器设置信息,避免安装出现问题。         a.  临时关闭swap,防止

    2024年02月19日
    浏览(58)
  • k8s实战案例之部署redis单机和redis cluster

    redis是一款基于BSD协议,开源的非关系型数据库(nosql数据库),作者是意大利开发者Salvatore Sanfilippo在2009年发布,使用C语言编写;redis是基于内存存储,而且是目前比较流行的键值数据库(key-value database),它提供将内存通过网络远程共享的一种服务,提供类似功能的还有

    2024年02月08日
    浏览(49)
  • Kubernetes(K8s)从入门到精通系列之十六:linux服务器安装minikube的详细步骤

    安装Docker的详细步骤,可以阅读博主下面这篇技术博客文章:

    2024年02月12日
    浏览(57)
  • k8s入门:裸机部署 k8s 集群

    系列文章 第一章:✨ k8s入门:裸机部署 k8s 集群 第二章:✨ k8s入门:部署应用到 k8s 集群 第三章:✨ k8s入门:service 简单使用 第四章:✨ k8s入门:StatefulSet 简单使用 第五章:✨ k8s入门:存储(storage) 第六章:✨ K8S 配置 storageclass 使用 nfs 动态申领本地磁盘空间 第七章:

    2023年04月20日
    浏览(46)
  • K8S系列文章之 Kind 部署K8S的 服务发布

    下载  https://github.com/kubernetes-sigs/kind/releases/download/0.17.0/kind-linux-amd64 执行以下命令:  之前需要先在本地主机安装好docker  kubectl是Kubernetes的命令行工具,可以让我们通过命令访问、操作、管理Kubernetes集群。brew安装方法如下 安装完毕后,查看kubectl版本信息,确认安装成功

    2024年02月14日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包