Ops实践 | 手把手教,快速搭建企业级高可用MinIO分布式对象存储实践

本文详细指导如何在企业环境中使用MinIO和Nginx搭建高可用S3对象存储集群,涉及权限配置、监控与可视化,旨在帮助企业实现数据的安全、可用性和可视化管理。
摘要由CSDN通过智能技术生成

a3f487ada14dad8c6bb3fc676aa2c05a.jpeg

5ac6711f33d100f40e815ba218966506.gif

微信改版了,现在看到我们全凭缘分,为了不错过【全栈工程师修炼指南】重要内容及福利,大家记得按照上方步骤设置「接收文章推送」哦~

请【付费赞赏】此文的看友联系作者,邀请你加入【SecDevOps】学习答疑群交流群!

完整原文:

Ops实践 | 手把手教,快速搭建企业级高可用MinIO分布式对象存储实践如何在企业内部环境中,使用MinIO+Nginx 搭建一个高可用S3对象存储集群实践,并实践了权限安全配置、以及使用Prometheus+Grafana来监控可视化我们的MinIO分布式集群服务,以此保证集群的数据可用性、安全性、可视化。icon-default.png?t=N7T8https://mp.weixin.qq.com/s/y26kEDU_TR-NmvpSSW4RBw


文章目录

0c520f8b1529ca5b4b087687accf7841.png


温馨提示:作者最近开通的知识星球,全栈系列从门到实践教程将会逐步同步到星球内,加入星球将获得作者在安全、运维、开发中的所有学习实践笔记,和问题答疑以及远程技术支持,希望大家多多支持!

1dde51acbe5fc887bc295508785144ca.jpeg


0x00 前言简述

描述: 最近更新文章有些懈怠了,由于刚好年终有许多东西需要进行整理,又迎来新的一年新的项目需求又逐步而至,正好目前有个最新打印的项目需要使用到文件存储,作为一名优秀的全栈运维,依然决然弃用原本的 FastDFS 文件存储,从而使用 MioIO 对象存储来存储读取照片以及生成的PDF文件,又因为作者在实践中遇到许多坑,在CSDN中捡了一圈的垃圾,有的只是只言片语,有的由于版本的问题根本无法解决问题,最终还是参考官方文档以及Github Issue进行解决相关问题,所以为了帮助需要在企业内部搭建部署MinIO分布式集群的朋友,遂作者实践部署后总结了此文。

此篇文章给大家带来如何在企业内部利用物理机和Kubernetes集群环境中,使用 MinIO + Nginx 搭建一个高可用S3对象存储集群实践,并实践了权限安全配置、以及使用 Prometheus + Grafana 来监控可视化我们的MinIO分布式集群服务,以此保证集群的数据可用性、安全性、可视化,所以跟着此篇文章实践操作便可以快速部署企业内部的MinIO集群服务。

温馨提示: 若对 FastDFS 感兴趣的朋友也可以参考作者发布的【FastDFS 系列从入门到实践文章】, 不过作者还是推荐使用更贴近云原生的MinIO对象存储,对于其区别看过作者【云原生 | 从零开始,Minio 高性能分布式对象存储快速入手指南】文章的,想必有所用了解的同学都知道吧, 此处不在讲述而是将重点放在集群的部署以及配置优化上。

温馨提示:此篇为作者原创实践文章,花费时间精力进行总结归纳,所以作者象征性的将此文设为一杯可乐🥤🥤的费用,希望大家理解支持,并且付费此专栏后,请联系作者WX [WeiyiGeeker] 回复【已付费文章】拉你进入作者专门安全运维开发答疑群,有问题一起讨论,一起学习,一起进步。

实践效果:

目标1.通过Nginx 负载均衡配置,访问单机和分布式集群MinIO服务的Console页面以及Api页面。

4061006a38b76cbeb9393e40b27d84bc.png

78fd88b49581f5cceddc56a0c0b2ae6b.png

目标2.使用mc工具对MinIO集群中的Bucket桶资源进行CURD。

dee9fbe46cca4d4b04f83d0e8c9fb777.png

目标3.为用户自定义的Policy权限策略,以及资bucket桶资源限制。

54e628773d4ce25083f9667b40f120d5.png

d47f7c0e874813a2eb9c705bed527f2f.png

目标4.使用Prometheus 监控预警MinIO集群

88c8feb88f853967d1d737e63ad8ba28.png

d6f84069cda55dd65220e52df1925014.png

此外,考虑到各位看友无法直接复制文章中的部署资源清单,作者已将此文MinIO集群实践的所有安装工具以及配置清单文件打包,请在末尾获取。

9d9d11ccb2e5a11f6e9501af954c0049.png

weiyigeek.top-Minio部署工具图

1.MinIO 前置基础知识

描述: 此文不在累述MinIO基础知识,有需要了解的童鞋可以参考MinIO官网,或者作者的此文【云原生 | 从零开始,Minio 高性能分布式对象存储快速入手指南】进行快速了解,下面作者简单介绍一下 MinIO 集群部署的一些特点.

为啥要搭建MinIO分布式集群,而不直接单机部署 MinIO 呢?

答: 虽然单机部署 Minio 非常简单,但是针对中大规模的使用场景又显得心大而力不足了,要么所有为单机部署的添加一个从节点,要么使用MinIO集群,但是为了保障数据免受硬件故障影响在生产环境中还是建议使用 MinIO 集群方式部署,从而保证了数据安全性、可用性以及扩展性。

除此之外以集群方式部署 Minio 它可以使用纠删码(Erasure Code)和校验(checksum)来保护数据免受硬件故障和无声数据损坏,即便您丢失一半数量(N/2)的硬盘,您仍然可以恢复数据。

什么是纠删码 Erasure Code (EC)?

答: Minio纠删码的设计目标是为了性能和尽可能的使用硬件加速,它是一种恢复丢失和损坏数据的数学算法, Minio 采用 Reed-Solomon code 将对象拆分成 N/2 数据和 N/2 奇偶校验块,所以在官方文档中给出的集群部署演示配置是四节点各四块盘共 16 块盘。例如: 如果是 12 块盘 ,一个对象会被分成6个数据块、6个奇偶校验块,你可以丢失任意6块盘(不管其是存放的数据块还是奇偶校验块),你仍可以从剩下的盘中的数据进行恢复,是不是很牛🐮的样子,感兴趣的同学想详细了解的请自行 Google。

纠删码(EC)与 RAID 的差异?

答: 纠删码(EC)其工作原理和RAID或者复制不同,像RAID6(Redundant Array of Independent Disks level 6)磁盘阵列技术可以在损失两块盘的情况下不丢数据,而 Minio 纠删码可以在丢失一半的盘的情况下,仍可以保证数据安全;其次Minio纠删码是作用在对象级别,可以一次恢复一个对象,回复速度很快,而RAID是作用在卷级别,数据恢复时间很长。

Minio 对每个对象单独编码(元数据-Metadata),存储服务一经部署,通常情况下是不需要更换硬盘或者修复。

5fa1b70fb76b8495addbc10847b46182.png

weiyigeek.top-对象存储元数据xl.meta图

2.MinIO 集群部署注意事项

描述: 在搭建部署 MinIO 分布式集群时为了减少后续出现异常问题的情况下,你需要提前注意如下几点。

  • 建议两台及以上的相同操作系统(包括资源配置和内核)物理机或者虚拟机,此处作者实践是采用已经安全加固后 Ubuntu 22.04 环境,若要进行系统安全加固(适用于等保)请参考此文【Ubuntu-22.04-LTS操作系统安全加固制作基线系统脚本分享与实践】。

  • 建议为要部署MinIO节点的机器直接挂载相同类型大小的(NVMe、SSD或HDD)物理硬盘或者直通存储(DAS),MinIO 强烈建议使用XFS格式磁盘的直连JBOD阵列以获得最佳性能。

41bad82883b566ff664b8f000d27eee8.png

weiyigeek.top-建议使用本地JBOD存储作为MinIO的后端存储图

749fee6971112b1ca195bbf66079570a.png

weiyigeek.top-Time时间服务器部署图
  • 必须保证各MinIO节点启动服务配置是一致,特别是 MINIO_ROOT_USERMINIO_ROOT_PASSWORD 两个环境变量,因为分布式的部署是依赖密钥来完成节点间的连接同步。

  • 如果需要设置从域名访问MinIO请设置 MINIO_SERVER_URLMINIO_BROWSER_REDIRECT_URL 环境变量域名。

  • 如果需要与其他应用程序共享驱动器(NFS/Samba),您可以使用minio独有的子目录来完成此操作,例如,如果已在 /storage 下挂载卷,则将 /storage/data 作为参数传递给MinIO服务器。

  • 目前不建议在 Windows Server 上运行 Distributed MinIO 因为其是实验性的,请谨慎行事。


0x01 集群部署

1.环境说明

描述: 此处作者使用了五台裸金属Ubuntu 22.04主机分别挂载三块500G的直通存储 /dev/vdb~vdd 节点信息如下:

# Kubernetes 集群信息
kubernetes v1.22.0

# Minio 集群节点 (实际上也是K8S节点, 后续的 Nginx 负载均衡也部署在此)
# IP        主机名  磁盘
192.168.1.85 minio-1 /dev/vdb /dev/vdc /dev/vdd
192.168.1.86 minio-2 /dev/vdb /dev/vdc /dev/vdd
192.168.1.87 minio-3 /dev/vdb /dev/vdc /dev/vdd
192.168.1.88 minio-4 /dev/vdb /dev/vdc /dev/vdd
 
# K8S 集群节点用于部署 单机 Minio  ,以此用于容灾备份高可用。
192.168.1.90 cloud-90 /dev/vdb /dev/vdc /dev/vdd

# MinIO 服务域名准备
minio.weiyigeek.top    # 集群使用
minio-rw.weiyigeek.top # 单机使用
# MinIO console 管理
minio-console.weiyigeek.top/cluster/
minio-console.weiyigeek.top/single/

环境配置

  • 1.配置防火墙开启 9000 以及 9001 tcp 端口通信,不过由于安装了K8S集群并未开启主机防火墙,若你开启了请使用 firewall-cmd 命令开放。

firewall-cmd --permanent --zone=public --add-port=9000/tcp  --add-port=9001/tcp
firewall-cmd --reload
  • 2.配置各主机节点定时同步,作者使用内部搭建部署的NTP服务器。

请完整原文地址: Ops实践 | 手把手教,快速搭建企业级高可用MinIO分布式对象存储实践

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值