2023-11-23
linux
00
请注意,本文编写于 309 天前,最后修改于 309 天前,其中某些信息可能已经过时。

目录

MinIO对象存储介绍
对象存储的元数据
Minio对象存储部署
Nginx代理到minio

MinIO对象存储介绍

Minio是GlusterFS创始人之一Anand Babu Periasamy发布新的开源项目。基于Apache License v2.0开源协议的对象存储项目,采用Golang实现,客户端支Java,Python,Javacript, Golang语言。

其设计的主要目标是作为私有云对象存储的标准方案。主要用于存储海量的图片,视频,文档等。非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

对象存储的元数据

在对象存储里,元数据包括 account(用户), bucket, bucket index等信息。Minio没有独立的元数据服务器。元数据都保存在底层的本地文件系统中。这个涉及和GlusterFs的架构设计很类似。

在本地文件系统里,一个bucket对应本地文件系统中的一个目录。一个对象Object对应bucket目录下的一个子目录(在EC的情况下对应多个part文件)。该子目录下保存着对象相关的数据和元数据。

image.png

如上图所示:在Erasure Set中有4个磁盘:Disk1,Disk2,Disk3,Disk4,四个磁盘组成一个Erasure Set。每个bucket对应一个相应桶名称的目录,每个对象对应bucket的一个目录:目录里保存着对应的数据和元数据文件。

创建bucket的元数据操作:对于Erasure Set(2+2)为例:创建一个bucket,对应底层文件系统的4次目录创建。创建一个文件,需要对应底层4次目录创建和8次文件创建操作。对于小文件,数据和元数据都保存在meta文件中,也需要4次目录创建和4次文件创建操作。由此可推断,minio在对应大量小文件的场景下性能非常差。

Minio对象存储部署

官方文档: https://min.io/docs/minio/linux/operations/installation.html

官方文档中写了有三种模式:
1、单节点单驱动:一个Minio进程/节点,并且只有一个驱动目录
2、单节点多驱动:一个Minio进程/节点,有多个驱动目录
3、多节点多驱动:多个Minio进程/节点,并且每个节点有多个驱动目录
我这里就操作一下多节点多驱动模式的

部署环境: 两台Linux部署
服务器1:192.168.2.10
服务器2:192.168.2.20

1、两台服务器分别下载minio二进制程序包

shell
wget https://dl.min.io/server/minio/release/linux-amd64/minio && mv minio /usr/local/bin && chmod +x /usr/local/bin/minio

2、下载完成后,需要在两台服务器上分别创建驱动目录

shell
mkdir -pm 755 /mnt/data{1..5} && mkdir -pm 755 /mnt/minio

3、设置两台主机的hosts域名映射

shell
cat <<EOF > /etc/hosts 192.168.2.10 node1 192.168.2.20 node2 EOF

4、运行启动脚本

shell
#!/bin/env bash export MINIO_ROOT_USER=Minio export MINIO_ROOT_PASSWORD=Minio123456 minio server --config-dir /mnt/minio \ --console-address ":9001" \ http://node{1..2}/mnt/data{1..5}

5、设置systemd

shell
cat <<EOF > /usr/lib/systemd/system/minio.service [Unit] Description=Minio service Documentation=https://docs.minio.io/ [Service] WorkingDirectory=/mnt/ ExecStart=/mnt/start.sh Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target EOF

重载systemd

shell
systemctl daemon-reload

6、启动minio

shell
systemctl start minio

Nginx代理到minio

1、安装nginx

yum安装或者编译安装都可以

shell
yum -y install nginx

如果yum源中没有nginx,可以去官网复制一份
官网地址:https://nginx.org

2、配置文件

shell
cat <<EOF > /etc/nginx/conf.d/minio_proxy.conf upstream minio_console { least_conn; server 192.168.2.10:9001; server 192.168.2.20:9001; } server { listen 80; server_name 192.168.22.22; ignore_invalid_headers off; client_max_body_size 0; proxy_buffering off; proxy_request_buffering off; access_log /var/log/nginx/minio.access.log; location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # Default is HTTP/1, keepalive is only enabled in HTTP/1.1 proxy_http_version 1.1; proxy_connect_timeout 300; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; chunked_transfer_encoding off; proxy_pass http://minio_console; } } EOF
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:YOUWEI

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 ™ 许可协议。转载请注明出处!