MinIO的搭建

1.MinIO概念

MinIO是在GUN Affero通用公共许可证v3.0下发布的高性能的对象存储。它是与Amazon S3云存储服务兼容的API。使用MinIO为机器学习、分析和隐月宫程序数据工作负载构建高性能基础架构。
MinIO对象存储使用buckets(桶)来组织对象,桶类似于文件系统中的目录/文件夹,可以存放任意数量的对象,它提供与 AWS S3 buckets 相同的功能。
bucket多版本存储:MinIO支持同一个对象在一个桶中存在多个版本。

2.MinIO在CentOS 8上搭建

安装(rpm方法):

  • MinIO Server
dnf install https://dl.min.io/server/minio/release/linux-amd64/minio-20210825004118.0.0.x86_64.rpm
  • MinIO Client
dnf install https://dl.min.io/client/mc/release/linux-amd64/mcli-20210727064619.0.0.x86_64.rpm
  • python minio SDK
pip install minio(需要更新系统)

启动:

  • 添加环境变量
vim ~/.bash_profile
给path参数添加/usr/local/bin/
  • Server端
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password minio server /mnt/data --console-address ":9001"
  • Client端
mcli alias set myminio/ http://MINIO-SERVER MYUSER MYPASSWORD

添加防火墙端口9000和9001

firewall-cmd --permanent --add-port=9001/tcp --add-port=9000/tcp
firewall-cmd --reload

添加主机名

vim /etc/hosts
192.168.1.128 server1

之后就可以通过 server1:9000 来访问 MinIO 控制台了
后续还可以通过server2、server3来命名其他主机,从而可以通过server{1…3}来指定3个服务器。

3.分布式部署

条件:

  • 大于等于4个 drives/volumes
  • 由1-n个minio server 进程管理

特点:

  • 每个MinIO服务器都拥有完整的分布式拓扑图,应用可以连接到部署中的任一台节点,并执行S3 操作
  • 默认应用纠删码,提供健壮性,对象级的恢复比相似计数如RAID或复制,开销更小
  • 基于配置好的 erasure code parity, 分布式部署m 服务器和n 磁盘每服务器可以在m/2 服务器上或 m*n/2个磁盘驱动上正常运行
  • 服务器端对象复制
  • 一次写入多次读锁定
  • 对象版本控制

部署条件:

  • 网络条件:节点间的双向网络通联
  • 主机名:要求使用【序列编号】的主机名,需要构建必要的DNS主机名映射表
    例如:
    minio1.example.com
    minio2.example.com
    minio3.example.com
    minio4.example.com
  • 磁盘阵列:
    • 强烈推荐使用 JBOD 阵列(没有冗余,区别于RAID),使用 RAID 不能提供minio附加的恢复和可用性优势,并且会降低系统性能。
    • 推荐 xfs 格式的驱动,性能最佳
    • 在每个节点部署中,需要使用序列号编码的驱动,且序号在不同节点间是可复制的。
      例如 4-drive/node 部署:
      /mnt/disk1
      /mnt/disk2
      /mnt/disk3
      /mnt/disk4
    • MinIO严格的 read-after-write 和 list-after-write 约束模型要求本地磁盘文件系统(例如xfs, ext4, 等)。
    • 对于NFS 或其他 网络访问存储卷 minio不提供一致性
    • 如果部署需要使用网络访问存储,NFSv4 是最好的选择

部署

  1. 给每个节点安装MinIO
  2. 添加TLS/SSL 证书
    MinIO 在MinIO Certs目录探测到一个x.509 证书(.crt)和私钥(.key)后,自动应用 TLS 1.2+
    certs在Linux上的 ${HOME}/.minio/certs中
    使用命令 minio server --cert-dir,可以覆盖证书目录参数
    (此过程是可选,但强烈建议)
  3. 运行 MinIO服务器进程
    在每个部署的节点上执行以下命令
    (部署了4个节点,主机名序列化:minio1.example, minio2.example, etc.)
    (每个节点由2个本地符属磁盘,以序列化命名:/mnt/disk1, /mnt/disk2)
export MINIO_ROOT_USER = minio-u234
export MINIO_ROOT_PASSWORD=minio-secret-key-CHANGE-ME
*#export MINIO_SERVER_URL=https://minio.example.net*  *#export MINIO_KMS_SECRET_KEY=my-minio-encryption-key:bXltaW5pb2VuY3J5cHRpb25rZXljaGFuZ2VtZTEyMwo*
minio server [<u>https://minio{1…4}.example/mnt/disk{1…2}/</u>](https://minio{1…4}.example/mnt/disk{1…2}/) --console-address ":9001"

其中:

参数 含义
MINIO_ROOT_USER root 用户的 access key
MINIO_ROOT_PASSWORD root 用户的 secret key
MINIO_SERVER_URL MinIO Console 用于连接MinIO 服务器的 URL 主机名。如果指定不包含MinIO服务器主机IP地址的TLS 证书作为主题别名,则需要此变量。指定 TLS 证书SAN 条目中的一个覆盖的主机名
MINIO_KMS_SECRET_KEY 用于加密MinIO后端的key。在生产环境中不要使用该设置,推荐使用MinIO 密钥加密服务(KES)和外部密钥管理系统(KMS)来应用加密功能。用 MINIO_KMS_KES_KEY_NAME 指定加密key的名字。(See KMS IAM/Config Encryption for more information.)
为所有节点指定相同加密key,
格式:<key-name>:<encryption-key>
key-name:随意的字符串,如果之后你用专用KMS来管理加密keys,则必须指定,
encryption-key:32位 base64编码的值,例如:
cat /dev/urandom |head -c 32 |base64 -
将这个key复制到安全的位置。MinIO需要用这个key来解码后端
  1. 访问 MinIO Console
    打开浏览器访问任意MinIO hostnames 端口号9001来打开 MinIO Console 登陆界面,用 MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD登陆
  2. 下一步
    用mcli 创建别名(alias
    创建用户和策略来做访问控制 Create users and policies to control access to the deployment.

推荐配置

  • 部署最小节点数:每个 server pool 最少4个节点和每服务器4 drives,该部署最多可以丢失4 drive和1个节点
  • 服务器硬件:
参数 配置
处理器 Dual Intel Xeon Scalable Gold CPUs with 8 cores per socket
内存 128GB of Memory per pod
网络 Minimum of 25GbE NIC and supporting network infrastructure between nodes.
硬盘 SATA/SAS NVMe/SSD with a minimum of 8 drives per server.
Drives should be JBOD arrays with no RAID or similar technologies. MinIO recommends XFS formatting for best performance.
  • 网络:
NIC bandwidth (Gbps) Estimated Aggregated Storage Throughput (GBps)
10GbE 1GBps
25GbE 2.5GBps
50GbE 5GBps
100GbE 10GBps
  • CPU分配:
Host NIC Bandwidth Recommended Pod vCPU
10GbE or less 8 vCPU per pod.
25GbE 16 vCPU per pod.
50GbE 32 vCPU per pod.
100GbE 64 vCPU per pod.
  • 内存分配
Total Host Storage Recommended Host Memory
Up to 1 Tebibyte (Ti) 8GiB
Up to 10 Tebibyte (Ti) 16GiB
Up to 100 Tebibyte (Ti) 32GiB
Up to 1 Pebibyte (Pi) 64GiB
More than 1 Pebibyte (Pi) 128GiB
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容