Linux-MinIO集群安装文档

2024-08-30 21:48
文章标签 linux 文档 集群 安装 minio

本文主要是介绍Linux-MinIO集群安装文档,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、 简介

MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。官方文档
MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJSRedis 或者 MySQL

1. 存储机制

MinIO将对象拆分成N/2数据和N/2奇偶校验盘,(N为盘总数)(推荐默认), 可通过存储类型自定义配置。

MinIO使用纠删码erasure codechecksum来保护数据免受硬件故障和无声数据损坏。 即便丢失一半数量(N/2)的硬盘,仍然可以恢复数据。

2. 优缺点

2.1 优点

  1. 安装部署(运维)简单,普通的技术人员就能够参与后期运维
  2. AWS S3标准兼容,可以把对象存储放到云上,只要云厂商支持S3标准,你的应用程序是不需要重新开发的
  3. MinIO目前是由2014年在硅谷创立的公司MinIO.Inc运营的开源项目,社区论坛的活跃度不错
  4. 完善的文档
  5. UI界面
  6. 高性能:作为高性能对象存储,在标准硬件条件下它能达到55GB/s的读、35GG/s的写速率
  7. 容器化支持,提供了与k8setcddocker等容器化技术深度集成方案
  8. 丰富的SDK支持,目前提供了CJava SDK,以及PHP扩展SDK
  9. 数据保护, 采用纠删码方式保护数据
  10. 高可用,采用纠删码方式实现
  11. 一致性,在分布式和单机模式下,所有读写操作都严格遵守read-after-writelist-after-write一致性模型。
  12. 可扩容:不同MinIO集群可以组成联邦,并形成一个全局的命名空间,并跨越多个数据中心
  13. 云原生:容器化、基于K8S的编排、多租户支持

2.2 缺点

1. 不支持动态增加节点,minio创始人的设计理念就是动态增加节点太复杂,后续会采用其它方案来支持扩容。

3. 注意事项

1. MinIO 可创建每组4到16个磁盘组成的纠删码集合。所以你提供的磁盘总数必须是其中一个数字的倍数。
2. MinIO根据给定的磁盘总数或者节点总数选择最大的纠删码集合大小,确保统一分布,即每个节点参与每个集合的磁盘数量相等。
3. 每个对象被写入一个EC集合中,因此该对象分布在不超过16个磁盘上。
4. 建议运行分布式MinIO设置的所有节点都是同构的,即相同的操作系统,相同数量的磁盘和相同的网络互连。
5. 分布式Minio里的节点系统时间差不能超过15分钟,你可以使用`NTP`来保证时间一致
6. JDK最低需求Java 1.8或更高版本
7. 读,节点

二、 MinIO集群搭建

节点IP数据目录
minio110.168.12.123/usr/local/nlp/minio/server/datastore/
minio210.168.12.124/usr/local/nlp/minio/server/datastore/
minio310.168.12.91/usr/local/nlp/minio/server/datastore/
minio410.168.12.98/usr/local/nlp/minio/server/datastore/
minio410.168.12.47/usr/local/nlp/minio/server/datastore/
minio410.168.12.48/usr/local/nlp/minio/server/datastore/

1. 下载

# 1. 创建文件下载目录mkdir -p /usr/local/nlp/minio/server/
# 2. 进入目录cd /usr/local/nlp/minio/server/
# 3. wget下载 (官网与可能变更地址)wget http://dl.minio.org.cn/server/minio/release/linux-amd64/minio

2. 安装服务端

1. 改变minio的权限

chmod 744 /usr/local/nlp/minio/server/minio

2. 创建文件储存的目录

mkdir -p /usr/local/nlp/minio/server/datastore/

3. 创建启动脚本minioServer.sh

#!/bin/bash
# chkconfig: 2345 85 15
# description: minio server
# 账号
export MINIO_ACCESS_KEY=admin
# 密码
export MINIO_SECRET_KEY=adminsecret
# 浏览器, off on
export MINIO_BROWSER=onIP=`hostname -i`
# 服务端口
PORT=8800MINIO_BASE=/usr/local/nlp/minio/server
MINIO_DATA=$MINIO_BASE/datastore
MINIO_RUN_LOG=$MINIO_BASE/logs
MINIO_CONFIG=$MINIO_BASE/config
PID=minio.pidcase "$1" instart)nohup $MINIO_BASE/minio server \--config-dir $MINIO_CONFIG \--address $IP:$PORT \http://10.168.12.123$MINIO_DATA \http://10.168.12.91$MINIO_DATA \http://10.168.12.47$MINIO_DATA \http://10.168.12.48$MINIO_DATA \http://10.168.12.124$MINIO_DATA \http://10.168.12.98$MINIO_DATA > $MINIO_RUN_LOG/running.log 2>&1 &echo $! > $MINIO_BASE/$PIDecho "=== 启动 MinIO 成功";;stop)kill `cat $MINIO_BASE/$PID`rm -rf $MINIO_BASE/$PIDsleep 2P_ID=`ps -ef | grep -w "$MINIO_BASE/minio server" | grep -v "grep" | awk '{print $2}'`if [ "$P_ID" == "" ]; thenecho "=== $MINIO_BASE/minio process not exists or stop success"elseecho "=== $MINIO_BASE/minio process pid is:$P_ID"echo "=== begin kill $MINIO_BASE/minio server process, pid is:$P_ID"kill -9 $P_IDfiecho "=== 停止 MinIO 成功";;status)echo "=== 查看 MinIO 状态"echo `ps -ef | grep -w "$MINIO_BASE/minio server"`;;logs)tail -200f $MINIO_RUN_LOG/running.log;;restart)$0 stopsleep 3$0 startecho "=== 重启 MinIO 成功";;esac
exit 0

4. 改变minioServer.sh的权限

chmod 744 /usr/local/nlp/minio/server/minioServer.sh

5. 创建运行日志的目录

mkdir -p /usr/local/nlp/minio/server/logs/

6. 配置服务

# 创建软连接
sudo ln -s /usr/local/nlp/minio/server/minioServer.sh /etc/init.d/minioServer
# 用户和组
sudo chown -R uaren:uaren /etc/init.d/minioServer
# 添加服务
sudo chkconfig --add minioServer
# 开机启动
sudo chkconfig minioServer on

7. 服务命令

# 1. 启动
service minioServer start
# 2. 停止
service minioServer stop
# 3. 状态
service minioServer status
# 4. 重启
service minioServer restart
# 5. 日志
service minioServer logs

3. Nginx负载

# 1. location部分
# MinIO集群-浏览器
location /minio {proxy_pass        http://minio;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $remote_addr;proxy_set_header Host            $http_host;
}# MinIO集群-API
# 注意minio-,这表示API能访问的桶只能这个开头,root用户为其他用户创建桶时需要注意
location ^~ /minio- {proxy_pass http://minio;proxy_redirect off;proxy_set_header Host $host; # 必须proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Scheme $scheme;proxy_set_header X-Forwarded-For $http_x_forwarded_for;expires -1;
}# 2. upstream部分
upstream minio {#weigth参数表示权值,权值越高被分配到的几率越大server   10.168.12.123:8800  weight=1;server   10.168.12.124:8800  weight=1;server   10.168.12.91:8800  weight=1;server   10.168.12.98:8800  weight=1;
}

三、 MinIO客户端

1. 安装配置

# 1. 创建文件下载目录mkdir -p /usr/local/nlp/minio/client/
# 2. 进入目录cd /usr/local/nlp/minio/client/
# 3. wget下载wget http://dl.minio.org.cn/client/mc/release/linux-amd64/mc
# 4. 配置环境
# 修改/etc/profile文件,新增:
export MINIO_CLIENT=/usr/local/nlp/minio/client
export PATH=$MINIO_CLIENT:$PATH

2. 安装配置

1. 添加MinIO存储服务
# 格式
mc config host add 别名 <YOUR-MINIO-ENDPOINT> [YOUR-ACCESS-KEY] [YOUR-SECRET-KEY]
# 示例
mc config host add minio http://10.168.12.123:8800 admin adminsecret

2. 查看节点
mc admin info minio

3. 查看账户列表
# 格式
mc admin user list --json 别名
# 示例
mc admin user list --json minio
4. 创建账户
# 格式
mc admin user add 别名 用户名 用户密码
# 示例
mc admin user add minio natsu natsu123456
5. 配置权限规则

以下操作是创建用户,并为其分配特定桶的部分权限,本身不具备创建桶的权限,需要root用户创建,避免用户随意创建桶

Action-name描述
s3:ListAllMyBuckets查看所有的桶权限
s3:ListBucket查看桶内对象权限
s3:GetBucketLocation定位bucket权限
s3:GetObject下载权限
s3:PutObject上传权限
s3:DeleteObject删除权限
s3:ListAllMyBuckets查看所有的桶权限
s3:ListBucket查看桶内对象权限
Resource-name描述
arn:aws:s3:::minio-test/*arn:aws:s3:::不动,minio-test表示桶名,*表示全部
# 创建minio-test.json文件,内容:
{"Version": "2021-01-05","Statement": [{"Effect": "Allow","Action": ["s3:ListAllMyBuckets","s3:ListBucket","s3:GetBucketLocation","s3:GetObject","s3:PutObject","s3:DeleteObject"],"Resource": ["arn:aws:s3:::minio-test/*"];}]
}
# 1. 添加策略
# 格式
mc admin policy add 别名 策略名(建议policy文件名) policy文件路径
# 示例
mc admin policy add minio minio-test /usr/local/nlp/minio/client/policy/minio-test.json# 2. 删除策略
# 格式
mc admin policy remove 别名 策略名
# 示例
mc admin policy remove minio minio-test# 3. 用户分配策略
# 格式
mc admin policy set 别名 策略名 user=用户名
# 示例
mc admin policy set minio minio-test user=natsu

这篇关于Linux-MinIO集群安装文档的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1122019

相关文章

一文详解如何查看本地MySQL的安装路径

《一文详解如何查看本地MySQL的安装路径》本地安装MySQL对于初学者或者开发人员来说是一项基础技能,但在安装过程中可能会遇到各种问题,:本文主要介绍如何查看本地MySQL安装路径的相关资料,需... 目录1. 如何查看本地mysql的安装路径1.1. 方法1:通过查询本地服务1.2. 方法2:通过MyS

电脑软件不能安装到C盘? 真相颠覆你的认知!

《电脑软件不能安装到C盘?真相颠覆你的认知!》很多人习惯把软件装到D盘、E盘,刻意绕开C盘,这种习惯从哪来?让我们用数据和案例,拆解背后的3大原因... 我身边不少朋友,在使用电脑安装软件的时候,总是习惯性的把软件安装到D盘或者E盘等位置,刻意避开C盘。如果你也有这样的习惯,或者不明白为什么要这么做,那么我

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

ubuntu20.0.4系统中安装Anaconda的超详细图文教程

《ubuntu20.0.4系统中安装Anaconda的超详细图文教程》:本文主要介绍了在Ubuntu系统中如何下载和安装Anaconda,提供了两种方法,详细内容请阅读本文,希望能对你有所帮助... 本文介绍了在Ubuntu系统中如何下载和安装Anaconda。提供了两种方法,包括通过网页手动下载和使用wg

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

如何在Ubuntu上安装NVIDIA显卡驱动? Ubuntu安装英伟达显卡驱动教程

《如何在Ubuntu上安装NVIDIA显卡驱动?Ubuntu安装英伟达显卡驱动教程》Windows系统不同,Linux系统通常不会自动安装专有显卡驱动,今天我们就来看看Ubuntu系统安装英伟达显卡... 对于使用NVIDIA显卡的Ubuntu用户来说,正确安装显卡驱动是获得最佳图形性能的关键。与Windo

ubuntu16.04如何部署dify? 在Linux上安装部署Dify的技巧

《ubuntu16.04如何部署dify?在Linux上安装部署Dify的技巧》随着云计算和容器技术的快速发展,Docker已经成为现代软件开发和部署的重要工具之一,Dify作为一款优秀的云原生应用... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。它

Java实现MinIO文件上传的加解密操作

《Java实现MinIO文件上传的加解密操作》在云存储场景中,数据安全是核心需求之一,MinIO作为高性能对象存储服务,支持通过客户端加密(CSE)在数据上传前完成加密,下面我们来看看如何通过Java... 目录一、背景与需求二、技术选型与原理1. 加密方案对比2. 核心算法选择三、完整代码实现1. 加密上

Docker安装MySQL镜像的详细步骤(适合新手小白)

《Docker安装MySQL镜像的详细步骤(适合新手小白)》本文详细介绍了如何在Ubuntu环境下使用Docker安装MySQL5.7版本,包括从官网拉取镜像、配置MySQL容器、设置权限及内网部署,... 目录前言安装1.访问docker镜像仓库官网2.找到对应的版本,复制右侧的命令即可3.查看镜像4.启

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与