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=notify

WorkingDirectory=/home/minio

User=minio-user
Group=minio-user
ProtectProc=invisible

EnvironmentFile=-/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;
    }

}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringSecurity + OAuth2 详解

SpringSecurity入门到精通 ************************************************************************** SpringSecurity 介绍 **************************************************************************一、入门1.简介与选择2.入门案例-默认的登录和登出接口3.登录经过了…

CSS SVG技术制作的复杂多层发光星形加载动画组件

<template><!-- 定义一个视图容器,用于展示加载动画 --><view class="loader"><svg viewBox="0 0 128 128" height="128" width="128" class="star"><defs><filter id="star-glow&q…

Windows下用CMake编译ITK及配置测试

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 ITK是什么&#xff1f; ITK&#xff08; Insight Segmentation and Registration Toolkit&#xff09;是美国国家卫生院下属的国…

MBD_入门篇_18_Simulink查表模块

18.Simulink查表模块 18.1 概述 LookUpTable&#xff0c;查表模块。比较常用的模块&#xff0c;参数较多&#xff0c;会复杂一点&#xff0c;比较重要的模块&#xff0c;一定掌握。 18.2 n-DLookUpTable N维查表模块 18.2.1 查表原理 通过有限的数据去得出相关的结果。比如我们…

Leo赠书活动-16期 名校毕业生教材

Leo赠书活动-16期 名校毕业生教材 ✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 赠…

Netdata:实时高分辨率监控工具 | 开源日报 No.173

netdata/netdata Stars: 63.9k License: GPL-3.0 Netdata 是一个监控工具&#xff0c;可以实时高分辨率地监视服务器、容器和应用程序。 以下是该项目的主要功能&#xff1a; 收集来自 800 多个整合方案的指标&#xff1a;操作系统指标、容器指标、虚拟机、硬件传感器等。实…

unity学习(29)——GameInfo角色信息

1.把GameInfo.cs PlayerModel.cs Vector3.cs Vector4.cs PlayerStateConstans.cs GameState.cs依次粘到model文件夹中&#xff0c;此时项目没有错误&#xff0c;如下图所示&#xff1b; 对应处所修改的代码如下&#xff1a; case LoginProtocol.LOGIN_SRES://1 {Debug.Log(&qu…

Sora新视角:从介绍到商业价值,全面解读优势

关于作者 还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&…

office的excel中使用,告诉我详细的解决方案,如何变成转化为金额格式

在Office的Excel中&#xff0c;如果你想将名为"MEREFIELD"的公式结果转换为金额格式&#xff0c;你可以遵循以下详细步骤来实现&#xff1a; 书写MEREFIELD公式&#xff1a; 首先&#xff0c;在Excel中输入或确认你的MEREFIELD公式。例如&#xff0c;假设这个公式是用…

SimpleDateFormat为什么是线程不安全的?

目录 在日常开发中&#xff0c;Date工具类使用频率相对较高&#xff0c;大家通常都会这样写&#xff1a;这很简单啊&#xff0c;有什么争议吗&#xff1f;格式化后出现的时间错乱。看看Java 8是如何解决时区问题的&#xff1a;在处理带时区的国际化时间问题&#xff0c;推荐使用…

Vue3 学习笔记(Day1)

「写在前面」 本文为尚硅谷禹神 Vue3 教程的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。 目录 0 课程介绍 1 Vue3 简介 2 创建 Vue3 工程 2.1 基于 vue-cli 创建 2.2 基于 vite 创建&#xff08;推荐&#xff09; 2.3 …

智慧社区管理系统:构建未来的生活模式

在这个信息化、智能化的时代&#xff0c;我们期待的不再是简单的居住空间&#xff0c;而是一个集安全、便捷、舒适、环保于一体的智能化社区。为此&#xff0c;我们推出了全新的智慧社区管理系统&#xff0c;旨在将先进的科技力量引入社区管理&#xff0c;为居民提供更优质的生…

MySQL基础学习

MySQL基础 注意&#xff1a;本文的图片截图自尚硅谷MySQL笔记。 一&#xff1a;基本概述&#xff1a; 什么是数据库&#xff1a; 数据库是一种用来存储和管理数据的系统。它是一个组织化的数据集合&#xff0c;可以通过计算机系统进行访问、管理和更新。数据库可以存储各种…

人力资源智能化管理项目(day09:权限应用)

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/humanResourceIntelligentManagementProject 搭建页面结构 <template><div class"container"><div class"app-container"><el-button class"btn-add" type"p…

数字化转型导师坚鹏:政府数字化转型之数字化新技术解析与应用

政府数字化转型之数字化新技术解析与应用 课程背景&#xff1a; 数字化背景下&#xff0c;很多政府存在以下问题&#xff1a; 不清楚新技术的发展现状&#xff1f; 不清楚新技术的重要应用&#xff1f; 不清楚新技术的成功案例&#xff1f; 课程特色&#xff1a; 有…

OpenAI 全新发布文生视频模型 Sora,支持 60s 超长长度,有哪些突破?将带来哪些影响?

Sora大模型简介 OpenAI 的官方解释了在视频数据基础上进行大规模训练生成模型的方法。 我们下面会摘取其中的关键部分罗列让大家快速get重点。 喜欢钻研的伙伴可以到官网查看技术报告&#xff1a; https://openai.com/research/video-generation-models-as-world-simulator…

数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(二)

上接&#xff1a;数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(一&#xff09; &#xff08;六&#xff09;模型选择与建立——聚类分析&#xff0c;关联规则 针对抖音用户浏览行为数据&#xff0c;我们可以选择使用各种适应的数据挖掘模型或算法&#xff0c;如关联规则…

TRS 2024 论文阅读 | 基于点云处理和点Transformer网络的人体活动连续识别

无线感知/雷达成像部分最新工作<持续更新>: 链接地址 注1:本文系“无线感知论文速递”系列之一,致力于简洁清晰完整地介绍、解读无线感知领域最新的顶会/顶刊论文(包括但不限于 Nature/Science及其子刊; MobiCom, Sigcom, MobiSys, NSDI, SenSys, Ubicomp; JSAC, 雷达学…

【机器学习笔记】 9 集成学习

集成学习方法概述 Bagging 从训练集中进行子抽样组成每个基模型所需要的子训练集&#xff0c;对所有基模型预测的结果进行综合产生最终的预测结果&#xff1a; 假设一个班级每个人的成绩都不太好&#xff0c;每个人单独做的考卷分数都不高&#xff0c;但每个人都把自己会做的…

一键彻底清理!解密如何清理电脑C盘垃圾的绝佳方法

随着我们在电脑上进行各种活动&#xff0c;C盘往往会逐渐积累大量的垃圾文件&#xff0c;这可能导致系统运行缓慢、启动时间延长以及存储空间被占用。对于许多用户而言&#xff0c;如何高效而一键地清理电脑C盘的垃圾成为一个备受关注的问题。如何清理电脑c盘垃圾&#xff1f;在…