minio+nginx 集群快速搭建

文章目录

    • 1、概要
    • 2、整体架构流程
    • 3、集群搭建
      • 3.1、服务器准备
      • 3.2、下载并安装
      • 3.3、minio集群配置
      • 3.4、minio.service配置
      • 3.5、启动
    • 4、nginx 转发

1、概要

minIO 是一个开源的分布式对象存储服务,可用于构建高可用性和高扩展性的存储集群。

  1. 分布式架构:minIO 集群由多个独立的 minIO 实例组成,在不同的物理服务器或虚拟机上运行,这些实例协同工作以提供存储服务。

  2. 负载均衡:minIO 集群会使用负载均衡算法来将数据块分配到不同的节点上,确保数据在整个集群中平均分布。这有助于提高性能和可靠性。

  3. 数据复制:minIO 使用数据冗余来确保高可用性。用户可以配置数据的副本数目,以便在发生节点故障时保证数据的安全性和可靠性。

  4. Erasure Coding:minIO 还支持纠删码技术(Erasure Coding),通过将数据进行编码和切片,并在多个节点上存储切片的方式来提高存储效率和容错性。

  5. 元数据管理:minIO 使用元数据来跟踪对象信息和位置,确保数据可以快速定位和检索。元数据通常存储在单独的数据库中,以提高查询效率。

  6. 动态伸缩:minIO 集群能够在运行时进行动态扩展和收缩。用户可以根据需要添加或删除节点,以适应不同的存储需求。


2、整体架构流程

minIO 集群的整体架构流程如下:

  1. 集群初始化:用户启动 minIO 集群时,各个节点会相互通信建立连接,并形成一个分布式存储集群。每个节点都有自己的身份信息和角色,例如主节点、从节点等。
  2. 客户端请求:客户端通过 minIO 提供的 API 向集群发送请求,可以是文件上传、下载、删除等操作。
  3. 负载均衡:minIO 集群中的负载均衡组件会接收客户端请求,然后将请求路由到合适的节点上进行处理。这有助于平衡各个节点的负载和提高性能。
  4. 数据访问:一旦请求被路由到特定节点,该节点会根据请求执行相应的操作,如读取或写入数据。
  5. 数据存储:数据会根据配置的规则进行存储,可能会使用数据复制或纠删码技术来确保数据的可靠性和容错性。
  6. 元数据管理:集群中的元数据管理模块会跟踪对象的位置、大小、权限等信息,以便快速检索和访问数据。
  7. 失败处理:如果某个节点发生故障,集群会自动识别并采取措施,例如重新分配数据或修复损坏的数据副本。
  8. 动态扩展:集群支持动态节点的加入和移除,用户可以根据需求扩展或缩减存储容量。
  9. 监控和管理:minIO 集群通常提供监控和管理工具,用于实时监视集群状态、性能指标和故障情况,以确保集群的正常运行。

通过以上流程,minIO 集群实现了高效的对象存储服务,具备高可用性、高性能和弹性伸缩的特点,适用于各种存储场景,如大规模数据存储、备份和归档等。


3、集群搭建


3.1、服务器准备

hostip
minio-01192.168.1.1
minio-02192.168.1.2
minio-03192.168.1.3
minio-04192.168.1.4

在所有服务器分别执行

$ hostnamectl set-hostname minio-01
$ hostnamectl set-hostname minio-02
$ hostnamectl set-hostname minio-03
$ hostnamectl set-hostname minio-04

在所有服务器全部执行

修改系统最大文件数

## 查看系统最大文件数
$ ulimit -n 
## 查看系统最大文件数
$ ulimit -a
## 修改系统最大文件数
$ echo "*   soft    nofile  65535" >> /etc/security/limits.conf
$ echo "*   hard    nofile  65535" >> /etc/security/limits.conf
$ sysctl -p
## 重启服务器
$ reboot

关闭所有服务器的防火墙

$ systemctl stop firewalld.service

3.2、下载并安装

$ mkdir /home/minio
$ mkdir /home/minio/data
$ chown minio-user:minio-user /home/minio/
$ chown minio-user:minio-user /home/minio/data
$ cd /home/minio
$ wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20240113075303.0.0-1.x86_64.rpm
$ rpm -i minio-20240113075303.0.0-1.x86_64.rpm

3.3、minio集群配置

$ vim /etc/default/minio

/etc/default/minio 文件中找到以下字段,修改其中的配置

## 这块是文件磁盘的位置 因为我们之前配置了hosts,所以直接使用host,{1...4} 这边是一种池化写法
MINIO_VOLUMES="http://minio-0{1...4}/home/minio/data"## minio-console的地址 就是web界面控制台
MINIO_OPTS="--console-address :9001"# console的登陆账号
MINIO_ROOT_USER=admin# console的登陆密码
MINIO_ROOT_PASSWORD=password

3.4、minio.service配置

$ vim /usr/lib/systemd/system/minio.service

minio.service文件内容

[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio[Service]
Type=notifyWorkingDirectory=/home/minioUser=minio-user
Group=minio-user
ProtectProc=invisibleEnvironmentFile=-/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# Let systemd restart this service always
Restart=always# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=1048576# 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

3.5、启动

$ systemctl enable minio.service
$ systemctl daemon-reload 
$ systemctl start minio.service

http://192.168.102.231:9001/
打开页面,输入密码

点击左侧Buckets 进入创建桶的页面
在这里插入图片描述


4、nginx 转发

# 反向代理配置
upstream minio-cluster{ip_hash;server minio-01:9001;server minio-02:9001;server minio-03:9001;server minio-04:9001;
}server {listen       9001;client_max_body_size 1G;location / {proxy_set_header Host $host;proxy_set_header Remote_Addr $remote_addr;proxy_set_header X-Real-IP $remote_addr;proxy_pass http://minio-cluster;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/479285.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

氢气传感器技术:优缺点解析

在当今科技飞速发展的时代,我们越来越依赖于各种传感器来检测和监控环境中的各种气体,其中氢气传感技术尤其引人关注。然而,每种氢气传感技术都有其独特的优缺点,如何根据应用场景选择合适的技术就显得尤为重要。本文将对目前主流…

深度学习之pytorch实现逻辑斯蒂回归

深度学习之pytorch实现逻辑斯蒂回归 解决的问题数学公式logiatic函数损失值 代码与线性回归代码的区别数据损失值构造回归的函数 结果分析 解决的问题 logistic 适用于分类问题,这里案例( y为0和1 ,0和 1 分别代表一类) 于解决二分类&#xf…

强大而灵活的高速数据采集数字化仪PCIe8911

各位工程师、科研人员和技术发烧友们,你们好!今天我要向大家推荐一款强大而灵活的高速数据采集数字化仪——北京阿尔泰科技的PCIe8911。这款数字化仪为高速数据采集而生,拥有4通道5GS/s的采样率,让你轻松应对各种严苛的测试和分析…

75.SpringMVC的拦截器和过滤器有什么区别?执行顺序?

75.SpringMVC的拦截器和过滤器有什么区别?执行顺序? 区别 拦截器不依赖与servlet容器,过滤器依赖与servlet容器。拦截器只能对action请求(DispatcherServlet 映射的请求)起作用,而过滤器则可以对几乎所有的请求起作用。拦截器可…

大学钢结构试题及答案,分享几个实用搜题和学习工具 #媒体#学习方法#职场发展

大学生们可以通过使用搜题软件,快速找到自己遇到的问题的答案,提高学习效率,以下分享各类型的供大家学习。 1.白鸽搜题 这个是公众号 提供详细解析和答案思路,助你深入理解。知识掌握更全面,学习效果更佳。 下方附上…

微软和OpenAI将检查AI聊天记录,以寻找恶意账户

据国外媒体报道,大型科技公司及其附属的网络安全、人工智能产品很可能会推出类似的安全研究,尽管这会引起用户极度地隐私担忧。大型语言模型被要求提供情报机构信息,并用于帮助修复脚本错误和开发代码以侵入系统,这将很可能会成为…

安全名词解析-攻防演练

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 攻防演练 01 攻防演练 《网络安全法》中明确提出,“定期组织关键信息基础设施的运营者进行网络安全应急演练,提高应对网络安全事件的水平和协同配合能力。”攻防演练目前已经…

Redis部署方式(一)四种部署方式介绍

redis的四种部署方式: Redis单机模式部署、Redis主从模式部署、Redis哨兵模式部署、Cluster集群模式部署,后面三种(主从模式,Sentinel哨兵模式,Cluster模式)也可以统称为集群模式。 一、单机 1、缺点&…

分析 丨AI算法愈加复杂,但是机器视觉的开发门槛在降低

机器视觉系统依赖于机器学习(machine learn)和深度学习(deep learn),尤其是深度学习的重要分支“卷积神经网络”在图像识别领域的应用,使机器视觉能够从原始像素数据中直接学习特征并准确判断。此外,AI大模型近两年受到…

分布式id实战

目录 常用方式 特征 潜在问题 信息安全 高性能 UUID 雪花算法 数据库生成 美团Leaf方案 Leaf-segment 数据库方案 Leaf-snowflake 方案 常用方式 uuid雪花算法数据库主键 特征 全局唯一趋势递增信息安全 潜在问题 信息安全 如果id连续递增, 容易被爬虫, 批量下…

(十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用

前言 本节内容我们主要介绍在Jenkins流水线中,其构建过程中的一些构建策略的配置,例如通过远程http构建、定时任务构建、轮询SCM构建、参数化构建、Git hook钩子触发构建等,可根据不同的需求完成不同构建策略的配置。 正文 Throttle build…

用户空间与内核通信(二)

文章:用户空间与内核通信(一)介绍了系统调用(System Call),内核模块参数和sysfs,sysctl函数方式进行用户空间和内核空间的访问。本章节我将介绍使用netlink套接字和proc文件系统实现用户空间对内…