minio对象存储快速搭建

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

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

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

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

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

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

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

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

集群初始化:用户启动 minIO 集群时,各个节点会相互通信建立连接,并形成一个分布式存储集群。每个节点都有自己的身份信息和角色,例如主节点、从节点等。

客户端请求:客户端通过 minIO 提供的 API 向集群发送请求,可以是文件上传、下载、删除等操作。

负载均衡:minIO 集群中的负载均衡组件会接收客户端请求,然后将请求路由到合适的节点上进行处理。这有助于平衡各个节点的负载和提高性能。

数据访问:一旦请求被路由到特定节点,该节点会根据请求执行相应的操作,如读取或写入数据。

数据存储:数据会根据配置的规则进行存储,可能会使用数据复制或纠删码技术来确保数据的可靠性和容错性。

元数据管理:集群中的元数据管理模块会跟踪对象的位置、大小、权限等信息,以便快速检索和访问数据。

失败处理:如果某个节点发生故障,集群会自动识别并采取措施,例如重新分配数据或修复损坏的数据副本。

动态扩展:集群支持动态节点的加入和移除,用户可以根据需求扩展或缩减存储容量。

监控和管理:minIO 集群通常提供监控和管理工具,用于实时监视集群状态、性能指标和故障情况,以确保集群的正常运行。

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

3、集群搭建
3.1、服务器准备
host ip
minio-01 192.168.1.1
minio-02 192.168.1.2
minio-03 192.168.1.3
minio-04 192.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;
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stestack

你的鼓励是我最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值