minio+nginx 集群快速搭建

news2024/10/6 12:34:33

文章目录

    • 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;
    }

}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu本地安装code-server结合内网穿透实现安卓平板远程写代码

文章目录 1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 1.ubuntu本地安装code-server 准备一台虚拟机,Ubuntu或者centos都可以,这里以VMwhere ubuntu系统为例 下载code server服务,浏览器…

http协议概念与使用

一、http相关概念 1.1 什么是 http HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。 服务器以一个状态行作为响应,响应的内容包括消息协…

STM32-点亮 LED

目录 1 、电路构成及原理图 2 、编写实现代码 3、代码讲解 4、烧录到开发板调试、验证代码 5、检验效果 本人使用的是朗峰 STM32F103 系列开发板,此笔记基于这款开发板记录。 1 、电路构成及原理图 首先,通过朗峰 F1 开发板 LED 部分原理图看到…

计算机专业必看《编程之神》

前言 这是一部关于数学家艾伦图灵(Alan Turing)的人物传记电影,非常值得一看. 影片中,艾伦图灵被描绘成一个富有创造力、勇气和独立思考的人物。他的天才思维和对计算机的理解在纠缠复杂的密码解密过程中发挥了重要作用。 图灵的天才 提出图灵…

20. 【Linux教程】emacs 编辑器

前面小节介绍了如何使用 vim 编辑器和 nano 编辑器,本小节介绍 emacs 编辑器,emacs 编辑器最开始是作为控制台的编辑器,并且 emacs 编辑器仍然提供最早的命令行模式。 1. 检查 Linux 系统中是否安装 emacs 编辑器 使用如何命令检查 emacs 编…

显微测量|台阶仪二维超精密测量微观形貌

台阶仪通过扫描被测样品表面,获取高分辨率的表面形貌数据,能够揭示微观结构的特征和性能。 标题了解工作原理和性能特点 台阶仪利用扫描探针在样品表面上进行微观测量,通过探测探针和样品表面之间的相互作用力,获取表面形貌信息…

C++学习Day06之继承中的对象模型

目录 一、程序及输出1.1 程序检验对象1.2 开发人员工具查看对象模型1.2.1 查看对应工程目录文件1.2.2 查看对象模型 二、分析与总结 一、程序及输出 1.1 程序检验对象 父类中私有属性,子类访问不到,是由编译器给隐藏了,但仍然在子类对象模型…

【Visual Studio】技巧 :自动与活动文档同步

在这里插入图片描述 工具 -> 选项 -> 项目和解决方案 - 勾选上面的 我厉害不!!!

B端系统升级方案模板:针对美观性和体验性升级(总体方案)

大家好,我是大美B端工场,专注于前端开发和UI设计,有需求可以私信。本篇从全局分享如何升级B端系统,搞B端系统升级的有个整体思维,不是说美化几个图标,修改几个页面就能解决的,这个方案模板&…

数据安全之认识数据资产管理平台

文章目录 一、什么是数据资产二、什么是数据资产管理平台1、什么是数据资产管理平台2、为什么需要数据资产管理平台 三、数据资产管理平台的主要功能四、数据资产管理平台的工作原理五、数据资产管理平台的应用场景六、安全资产管理平台与数据资产管理平台的区别与关系1、安全资…

IDEA配置Maven的步骤

目录 一 下载Maven 二 下载以后解压。在这个文件夹下新建一个文件夹,命名为“maven-repository” 三 在maven文件夹下,打开conf,选择settings文件,用notepad打开,改动3个地方 四 打开IDEA,左上角选择“…

尚硅谷最新Node.js 学习笔记(四)

目录 八、express框架 8.1、express介绍 8.2、express使用 express下载 express初体验 8.3、express路由 什么是路由? 路由的使用 获取请求参数 获取路由参数 8.4、express响应设置 8.5、express中间件 什么是中间件? 中间件的作用 中间件…

网络同步—帧同步和状态同步解析

概述 同步就是要多个客户端表现效果是一致的,而且对于大多数的游戏,不仅仅要表现一致,还要客户端和服务器的数据也是一致的。所以同步是个网络游戏概念,只有网络游戏才需要同步,而单机游戏是不需要同步的。 帧同步和…

普中51单片机学习(九)

蜂鸣器 蜂鸣器简介 在单片机应用的设计上,很多方案都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。改变单片机引脚输出波形的频率,就可以调整控制蜂鸣器音调,产…

版本控制(Git)

Fork 本课程网站的仓库 将版本历史可视化并进行探索是谁最后修改了 README.md文件?(提示:使用 git log 命令并添加合适的参数)最后一次修改_config.yml 文件中 collections: 行时的提交信息是什么?(提示&am…

互联网使用代理IP的作用

互联网使用代理IP主要有以下作用: 1. 隐私保护: - 使用代理IP,用户的原始IP地址会被代理服务器的IP地址所替代,从而隐藏用户的真实身份和地理位置信息,增加网络匿名性。 2. 安全防护: - 代理服务器可以作为…

vue-productionSourceMap作用

当其设置为false时(productionSourceMap: false) 当其设置为true时(productionSourceMap: true) 注:1.当设置为true时,打包后每个文件都有一个.map文件,其目的是为了精确定位代码错误 2.当设置为false时,可减少项目打包大小 3.正式环境禁止使用true,因为其可通过反编译.map文件…

深度学习之pytorch实现线性回归

度学习之pytorch实现线性回归 pytorch用到的函数torch.nn.Linearn()函数torch.nn.MSELoss()函数torch.optim.SGD() 代码实现结果分析 pytorch用到的函数 torch.nn.Linearn()函数 torch.nn.Linear(in_features, # 输入的神经元个数out_features, # 输出神经元个数biasTrue # 是…

Linux防火墙:SNAT和DNAT地址转换操作

目录 一、NAT 1、NAT概念 2、NAT分类 二、SNAT 1、SNAT概念 2、SNAT源地址转换过程 3、已知外网地址的SNAT操作 3.1 配置网关服务器 3.1.1 添加网卡 3.1.2 配置ens33网卡 3.1.3 配置ens36网卡 3.1.4 重启网卡并查看网卡是否生效 3.1.5 开启路由转发功能 3.1.6 配…

Springboot医院信息管理系统源码 带电子病历和LIS Saas应用+前后端分离+B/S架构

目录 系统特点 技术架构 系统功能 1、 标准数据维护 2、 收费(门诊/住院)系统 3、 药剂管理系统 4、 医生工作站系统 5、 护士工作站系统 6、电子病历系统 系统优点 云HIS系统简介 云HIS系统功能模块 门急诊挂号管理 门诊收费管理 门诊医…