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
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

数据分析:为什么说Python比Excel更简单高效 ?

日本最大的证券公司之一野村证券首席数字官马修汉普森,在Quant Conference上发表讲话:“用Excel的人越来越少,大家都在用Python。”甚至直接说:“Python已经取代了Excel。”事实上,为了追求更高的效率和质量&#xff0…

快速搭建 Serverless 在线图片处理应用

简介 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计…

如何在 PyFlink 1.10 中自定义 Python UDF?

我们知道 PyFlink 是在 Apache Flink 1.9 版新增的,那么在 Apache Flink 1.10 中 Python UDF 功能支持的速度是否能够满足用户的急切需求呢? Python UDF 的发展趋势 直观的判断,PyFlink Python UDF 的功能也可以如上图一样能够迅速从幼苗变成…

Node.js从零开发Web Server博客项目笔记

代码运行流程 首先开启服务器,在npm run dev的时候运行了bin目录下的www.js文件,启动http服务 当前端进行访问的时候,经过app.js文件 App.js是整个项目的入口文件,首先判断这个用户在http的header头中带了那些验证的信息&#…

如何度过二十多岁这段又穷又迷茫的岁月?

我们在后台常常会收到读者的留言我马上毕业了,但是现在很迷茫,不知道学校里学的,能不能真正的适应工作...我工作两三年,还是不知道怎么规划自己的技术成长路线,不知道该学什么来提升自己的竞争力...人生需要长线的经营…

Docker-compose 安装Minio 最新版本

文章目录一、环境准备1.安装docker-compose2. 新版本尝鲜3. 镜像下载二、单机编排2.1. 创建docker-compose.yaml2.2. 运行三、集群编排3.1. 下载docker-compose.yaml3.2. nginx.conf3.3.运行一、环境准备 1.安装docker-compose https://gblfy.blog.csdn.net/article/details/…

神龙架构没那么难理解—图解世界领先的阿里云神龙架构(一)缘起

1 概述 1.1 神龙架构的特点 阿里云官方文档对于神龙架构的描述如下: 保留了普通云服务器的资源弹性,并因嵌套虚拟化技术让弹性裸金属服务器保留了物理机的体验。 1.2 理解上的难点 同时拥有云服务器的资源弹性和保留了物理机体验的特点容易让用户在…

react native笔记-个人记录-初始化工程遇到的问题

使用Expo工具 在mac上安装expo,如果是权限问题可以参考以下解决方法 https://blog.csdn.net/testcs_dn/article/details/78869419 https://jingyan.baidu.com/article/9c69d48ff88b3813c9024e9d.html 这是第二条链接的说明:对于Mac OS X 10.11 El Capi…

神龙架构没那么难理解—图解世界领先的阿里云神龙架构(二)神龙出世

3 神龙出世 3.1 继续说我们的搬砖问题 第2章中指出只要采用虚拟化和弹性计算,就代表100个劳动力必须选择1个管理人员,实际上只能有99个劳动力进行搬砖。而神龙想做到的目标就是既然100个工人搬砖,就要全部搬砖,但同时也需要有手段…

中科院战略咨询院与戴尔发布《产业数字化转型:战略与实践》研究报告

中国北京– 2020年7月10日,中国科学院科技战略咨询研究院与戴尔科技集团联合发布《产业数字化转型:战略与实践》研究报告,总结当前产业数字化转型发展现状及主要问题,为促进中国产业数字化转型提出一系列战略和政策建议。 报告构…

“国货之光” 完美日记的微服务实践和优化思路

如果你是一位程序媛,你一定知道完美日记。 如果你是一位程序员,你的那个她一定知道完美日记。 今年双11,完美日记仅用28分钟就超过了2018年双11全天的销售额,成为第一个登上天猫双11彩妆榜首的国货品牌。在这个遍地都是漂亮小姐…

Vue 实现 Open Graph 分享预览

什么是 Open Graph Protocol?,可以去看这篇文章 Open Graph Protocol 像vue的插件,例如vue-head,vue-meta这些可以动态的添加meta标签到head头中,但是我在尝试之后,并没有什么作用,原因是我们…

Springboot2 Swagger3 集成

文章目录一、默认UI1. 版本尝鲜2. 导入依赖3. Swagger3Config配置类4. Swagger3.0常用注解4.Controller 层使用Swagger3注解例子5.访问Swagger3接口文档界面6.Swagger3接口文档界面展示二、bootstrapUI2.1. 导入依赖2.2. 访问地址一、默认UI 1. 版本尝鲜 Swagger3在Swagger2的…

10个月,15亿,阿里云如何赋能企业打造交付和创新竞争力?

阿里妹导读:中国有3000万卡车司机,他们每天开车12-16个小时,发生事故导致身亡的概率是普通人群的5倍。路歌旗下的“卡友地带”是中国最大的卡车司机交友互助平台,有超过150万的卡车司机在上面活跃。 “卡友地带”却在运行两年后&a…

涌之势,智造未来, 戴尔科技集团携新一代信息技术解决方案赋能“新基建”

2020年7月10日,戴尔科技集团邀请中国科学院专家、行业领袖、客户与合作伙伴、媒体和分析师朋友共同探讨“新基建”为行业所带来的机遇与智造未来的发展前景。 戴尔科技集团推出多款面向新一代信息技术的Power 家族创新产品组合与解决方案,多维度展示了戴…

重磅!阿里云发布最新服务等级协议SLA ,多实例可用性升为99.995%

12月13日,全球前三的云计算公司阿里云公布了最新的弹性计算服务等级协议SLA,单实例的可用性从99.95%提升至99.975%,多可用区多实例可用性从99.99%提升至99.995%,均为全球最高水准。 SLA即服务等级协议,代表了云服务商…

诚选app优化方案

解决大文件问题,目前发现整个项目打包的出来的文件过大 1.如图一、图二可以看到在Stat Parsed Gzip下文件的大小相差很大,目前从图三中可以看到两个属性productionSourceMap、ProductionGzip,productionSourceMap为true的时候会生成一些map文…

基于深度学习的图像分割在高德的实践

一、前言 图像分割(Image Segmentation)是计算机视觉领域中的一项重要基础技术,是图像理解中的重要一环。图像分割是将数字图像细分为多个图像子区域的过程,通过简化或改变图像的表示形式,让图像能够更加容易被理解。…

腾讯汤道生:AI是产业互联网的“中央处理器”,数字技术融合打造产业新动能

7月10日,2020世界人工智能大会腾讯论坛正式拉开帷幕。腾讯高级执行副总裁、云与智慧产业事业群总裁汤道生进行了开场致辞。汤道生表示,人工智能是新基建的核心技术之一,也是产业互联网的“中央处理器”。在AI的产业和技术发展趋势方面&#x…

小程序开发(1)-之目录结构和文件说明

#以下图片是小程序的目录结构,建议所有的目录都使用小写字母,不使用驼峰格式 #组件 components是自定义组件目录,对一些常用的组件的封装 #配置文件 config是配置文件,存有一些常用的字段和请求地址 #第三方库 libs是一些外部…