Minio 分布式集群部署
文章目录
- 一、分布式存储可靠性常用方法
- 1. 概述
- 2. 冗余
- 3. 校验
- 二、分布式Minio优势
- 2.1. 数据保护
- 2.2. 高可用
- 2.3.一致性
- 三、运行分布式Minio
- 3.1. 启动方案简述
- 3.2. 案例说明
- 3.3. 制作分布式启动脚本
- 3.4. 制作伪分布式启动脚本
- 3.5. 登录minio
- 四、分布式Minio负载均衡
- 4.1. nginx安装
- 4.2. 配置nginx
- 4.3. 停止nginx服务
- 4.4. 重新启动nginx
- 4.5. 登录monio
分布式Minio可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务。由于硬盘分布在不同的节点上,分布式Minio避免了单点故障。
一、分布式存储可靠性常用方法
1. 概述
分布式存储,很关键的点在于数据的可靠性,即保证数据的完整,不丢失,不损坏。只有在可靠性实现的前提下,才有了追求一致性、高可用、高性能的基础。而对于在存储领域,一般对于保证数据可靠性的方法主要有两类,一类是冗余法,一类是校验法。
2. 冗余
冗余法最简单直接,即对存储的数据进行副本备份,当数据出现丢失,损坏,即可使用备份内容进行恢复,而副本 备份的多少,决定了数据可靠性的高低。这其中会有成本的考量,副本数据越多,数据越可靠,但需要的设备就越多,成本就越高。可靠性是允许丢失其中一份数据。当前已有很多分布式系统是采用此种方式实现,如 Hadoop 的文件系统(3个副本),Redis 的集群,MySQL 的主备模式等。
3. 校验
校验法即通过校验码的数学计算的方式,对出现丢失、损坏的数据进行校验、还原。注意,这里有两个作用,一个校验,通过对数据进行校验和( checksum )进行计算,可以检查数据是否完整,有无损坏或更改,在数据传输和保存时经常用到,如 TCP 协议;二是恢复还原,通过对数据结合校验码,通过数学计算,还原丢失或损坏的数据,可以在保证数据可靠的前提下,降低冗余,如单机硬盘存储中的 RAID技术,纠删码(Erasure Code)技术等。MinIO 采用的就是纠删码技术。
二、分布式Minio优势
2.1. 数据保护
分布式Minio采用 纠删码来防范多个节点宕机和位衰减 bit rot 。
分布式Minio至少需要4个硬盘,使用分布式Minio自动引入了纠删码功能。
2.2. 高可用
单机Minio服务存在单点故障,相反,如果是一个有N块硬盘的分布式Minio,只要有N/2硬盘在线,你的数据就是安全的。不过你需要至少有N/2+1个硬盘来创建新的对象。
例如,一个16节点的Minio集群,每个节点16块硬盘,就算8台服務器宕机,这个集群仍然是可读的,不过你需要9台服務器才能写数据。
2.3.一致性
Minio在分布式和单机模式下,所有读写操作都严格遵守read-after-write一致性模型
三、运行分布式Minio
3.1. 启动方案简述
启动一个分布式Minio实例,你只需要把硬盘位置做为参数传给minio server命令即可,然后,你需要在所有其它节点运行同样的命令。
- 分布式Minio里所有的节点需要有同样的access秘钥和secret秘钥,这样这些节点才能建立联接。
为了实现这个,你需要在执行minio server命令之前,先将access秘钥和secret秘钥export成环境
变量。新版本使用MINIO_ROOT_USER&MINIO_ROOT_PASSWORD。 - 分布式Minio使用的磁盘里必须是干净的,里面没有数据。
- 下面示例里的IP仅供示例参考,你需要改成你真实用到的IP和文件夹路径。
- 分布式Minio里的节点时间差不能超过3秒,你可以使用NTP 来保证时间一致。
- 在Windows下运行分布式Minio处于实验阶段,请悠着点使用。
3.2. 案例说明
8个节点,每节点1块盘
启动分布式Minio实例,8个节点,每节点1块盘,需要在8个节点上都运行下面的命令:
data MINIO_ROOT_USER=admin
data MINIO_ROOT_PASSWORD=12345678
MINIO_HOME=/root${MINIO_HOME}/minio server --address ":9000" --console-address ":50000" \
http://192.168.92.101:9000/mnt/data1 http://192.168.92.102:9000/mnt/data2 \
http://192.168.92.103:9000/mnt/data3 http://192.168.92.104:9000/mnt/data4 \
http://192.168.92.105:9000/mnt/data5 http://192.168.92.106:9000/mnt/data6 \
http://192.168.92.107:9000/mnt/data7 http://192.168.92.108:9000/mnt/data8
4节点,每节点4块盘
启动分布式Minio实例,4节点,每节点4块盘,需要在4个节点上都运行下面的命令
data MINIO_ROOT_USER=admin
data MINIO_ROOT_PASSWORD=12345678
MINIO_HOME=/root${MINIO_HOME}/minio server --address ":9000" --console-address ":50000" \
http://192.168.92.101:9000/mnt/data1 http://192.168.92.101:9000/mnt/data2 \
http://192.168.92.101:9000/mnt/data3 http://192.168.92.101:9000/mnt/data4 \
http://192.168.92.102:9000/mnt/data1 http://192.168.92.102:9000/mnt/data2 \
http://192.168.92.102:9000/mnt/data3 http://192.168.92.102:9000/mnt/data4 \
http://192.168.92.103:9000/mnt/data1 http://192.168.92.103:9000/mnt/data2 \
http://192.168.92.103:9000/mnt/data3 http://192.168.92.103:9000/mnt/data4 \
http://192.168.92.104:9000/mnt/data1 http://192.168.92.104:9000/mnt/data2 \
http://192.168.92.104:9000/mnt/data3 http://192.168.92.104:9000/mnt/data4
3.3. 制作分布式启动脚本
脚本演示:4个节点,每个节点挂载4块磁盘。在实际的服务器上依次执行以下命令即可
案例演示:伪分布式模式
vim minio_cluster.sh
data MINIO_ROOT_USER=admin
data MINIO_ROOT_PASSWORD=12345678
MINIO_HOME=/rootnohup ${MINIO_HOME}/minio server --address ":9000" --console-address ":50000" \
http://192.168.92.101:9000/mnt/data1 http://192.168.92.101:9000/mnt/data2 \
http://192.168.92.101:9000/mnt/data3 http://192.168.92.101:9000/mnt/data4 \
http://192.168.92.102:9000/mnt/data1 http://192.168.92.102:9000/mnt/data2 \
http://192.168.92.102:9000/mnt/data3 http://192.168.92.102:9000/mnt/data4 \
http://192.168.92.103:9000/mnt/data1 http://192.168.92.103:9000/mnt/data2 \
http://192.168.92.103:9000/mnt/data3 http://192.168.92.103:9000/mnt/data4 \
http://192.168.92.104:9000/mnt/data1 http://192.168.92.104:9000/mnt/data2 \
http://192.168.92.104:9000/mnt/data3 http://192.168.92.104:9000/mnt/data4 > ${MINIO_HOME}/minio-9000.log 2>&1 &
chmod u+x minio_cluster.sh
./minio_cluster.sh
3.4. 制作伪分布式启动脚本
案例演示:伪分布式模式案例
vim minio_cluster.sh
export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=12345678
MINIO_HOME=/root
MINIO_HOST=192.168.92.104for i in {01..04}; donohup ${MINIO_HOME}/minio server --address ":90${i}" --console-address ":500${i}" http://${MINIO_HOST}:9001/mnt/data01 http://${MINIO_HOST}:9002/mnt/data02 http://${MINIO_HOST}:9003/mnt/data03 http://${MINIO_HOST}:9004/mnt/data04 > ${MINIO_HOME}/minio-90${i}.log 2>&1 &
done
chmod u+x minio_cluster.sh
./minio_cluster.sh
3.5. 登录minio
四、分布式Minio负载均衡
4.1. nginx安装
https://blog.csdn.net/weixin_40816738/article/details/119536779
4.2. 配置nginx
cd /usr/local/nginx/conf/
worker_processes 1;
events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;upstream minio {server 192.168.92.104:9001;server 192.168.92.104:9002;server 192.168.92.104:9003;server 192.168.92.104:9004;} upstream console {ip_hash;server 192.168.92.104:50001;server 192.168.92.104:50002;server 192.168.92.104:50003;server 192.168.92.104:50004;} server {listen 9000;server_name localhost;ignore_invalid_headers off;client_max_body_size 0;proxy_buffering off;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;proxy_connect_timeout 300;proxy_http_version 1.1;proxy_set_header Connection "";chunked_transfer_encoding off;proxy_pass http://minio;}} server {listen 50000;server_name localhost;ignore_invalid_headers off;client_max_body_size 0;proxy_buffering off;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;proxy_set_header X-NginX-Proxy true;proxy_connect_timeout 300;proxy_http_version 1.1;proxy_set_header Connection "";chunked_transfer_encoding off;`在这里插入代码片`proxy_pass http://console;}}
}
4.3. 停止nginx服务
ps -ef |grep nginx
kill -9 进程号1 进程号2
4.4. 重新启动nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
4.5. 登录monio
真实后端控制台端口:50001~5004,
现在访问50000自动负载到50001~5004的任意一个端口
http://192.168.92.104:50000/
账号密码:admin/12345678
Minio 分布式集群部署相关推荐
- minio分布式集群部署
minio分布式集群部署 分布式 Minio 可以让你将多块硬盘或者多台服务器组成一个对象存储服务.由于硬盘分布在不同的节点上,分布式 Minio 避免了单点故障.MinioMinio分布式模式可以帮 ...
- Minio分布式集群部署(Swarm)
环境准备 四台虚拟机 192.168.2.38(管理节点) 192.168.2.81(工作节点) 192.168.2.100(工作节点) 192.168.2.102(工作节点) 时间同步 yum in ...
- Minio分布式集群部署注意事项
启动一个分布式Minio实例,你只需要把硬盘位置做为参数传给minio server命令即可,然后,你需要在所有其它节点运行同样的命令. 注意 分布式Minio里所有的节点需要有同样的access秘钥 ...
- docker-compose部署MinIO分布式集群
docker-compose部署MinIO分布式集群 文章目录 docker-compose部署MinIO分布式集群 概述 纠删码 部署 配置 概述 MinIO是全球领先的对象存储先锋,目前在全世界有 ...
- minio【docker-compose 部署minio分布式集群】
minio[docker-compose 部署minio分布式集群] 1 下载docker-compose.yaml version: '3.7'# Settings and configuratio ...
- Minio分布式集群搭建部署
分布式 Minio 可以让你将多块硬盘或者多台服务器组成一个对象存储服务.由于硬盘分布在不同的节点上,分布式 Minio 避免了单点故障.Minio分布式模式可以帮助你搭建一个高可用的对象存储服务,你 ...
- 百度开源联邦学习框架 PaddleFL:简化大规模分布式集群部署
百度开源联邦学习框架 PaddleFL:简化大规模分布式集群部署 作者 | 钰莹近两年,联邦学习技术发展迅速.作为分布式的机器学习范式,联邦学习能够有效解决数据孤岛问题,让参与方在不共享数据的基础上联 ...
- redis 槽点重新分配 集群_5000+字硬核干货!Redis 分布式集群部署实战
原理: Redis集群采用一致性哈希槽的方式将集群中每个主节点都分配一定的哈希槽,对写入的数据进行哈希后分配到某个主节点进行存储. 集群使用公式(CRC16 key)& 16384计算键key ...
- quartz分布式集群部署并且可视化配置job定时任务
2019独角兽企业重金招聘Python工程师标准>>> 项目使用quartz框架完成了定时任务集群部署调度,并且对quartz进一步封装完成在web界面可动态配置定时任务.定时任务如 ...
最新文章
- nova6的4g版能支持鸿蒙,鸿蒙公测新增6款手机,都是nova系列,包括一款4G手机
- 以太坊智能合约简介(Solidity)
- websphere不释放游标_不懂别瞎搞!Redis 性能优化的 13 条军规!
- .net如何引用该命名空间
- mysql存储map数据结构_map数据结构
- CAN笔记(20) 过程数据对象
- 使用 Microsoft.UI.Xaml 解决 UWP 控件和对老版本 Windows 10 的兼容性问题
- 深度 | 从各种注意力机制窥探深度学习在NLP中的神威
- 更新Android SDK之后Eclipse提示ADT版本过低的一个简易解决办法
- (十一)RabbitMQ消息队列-如何实现高可用
- 如何打印身份证的正反面
- Jquery中fadein() fadeout()方法的使用
- 局域网共享一键修复(转载)
- 洛谷P1129 [ZJOI2007] 矩阵游戏 题解
- Win7系统专业版调整屏幕亮度的详细教程--win7w.com
- python读取以及保存gif图
- 楚留香服务器维护,楚留香手游3月9日维护更新公告
- EOS 一周回顾(12.2-12.8)
- DS1302时钟程序解读
- IT圈子里鬼混---谈谈IT行业的一些生存之道!
热门文章
- 计算机基础题精选(一)
- 【ABviewer从零开始教学查看器篇①】3D查看器和3D剖面板
- 【网络安全】Metasploit工具
- Half a million dollars is or are a lot of money?
- 定时任务系列(3)-Quartz动态定时任务
- c语言建立可视化窗口,如何用C语言编程出可视化界面?
- 如何用钢笔工具抠图ps教程ps学习
- mysql5.1 优化_7. 优化 - [ MySQL 5.1参考手册 ] - 在线原生手册 - php中文网
- 易语言 hex16进制转换base64编码
- 【算法】求解钱币兑换问题