百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

最新Minio+Docker+Nginx多机集群

bigegpt 2024-08-11 14:16 29 浏览

前述

  • 本次将使用最新的minio版本2022-09。自minio2022-06之后,minio的数据存储格式发生了变化。且已经不再兼容之前的版本。
  • 备份后,可通过mc命令,将数据从原来的集群迁移到新的集群。
  • 本次将直接采用swarm集群,让minio及nginx在swam集群内实现通讯。
  • 镜像可以使用minio/minio(官方)或bitnami/minio(docker认证的第三方),这两种的参数,略有不同。
  • 最后使用nginx实现minio的访问。
  • 建议机器有限,因为磁盘必须4及以上个,所以这儿选择使用两个宿主机。可根据要求进行扩展。注意,如果原集群有4个磁盘的话,再次扩展,必须也是4个磁盘,因为只有这样,才可以形成相同的纠错码。

配置建议

根据官方https://github.com/minio/minio/blob/master/docs/distributed/SIZING.md的配置列表,建议配置如下。

服务器指机器的数量,驱动器指磁盘的数量。

容量受限的环境,MinIO 可以工作,但不推荐用于生产。

生产的最低配置:

如果一个或多个磁盘在 PutObject 或 NewMultipartUpload 操作开始时处于脱机状态,则该对象将自动添加额外的数据保护位,以便为这些对象提供高达 50% 磁盘数量的常规安全性。这将允许在超出写入容限的系统上进行正常的写入操作。

这意味着在上面的示例中,系统将始终写入 4 个奇偶校验分片,代价是磁盘使用率略高。

规划

(由于本人宿主机有限,以下环境仅使供学习使用)。

主机/ip

程序

端口

目录

ubuntu21/192.168.56.21

minio 2022-9-1

Nginx 1.23.1

9000

9001

80

/app/minio/data{1..2}

ubuntu22/192.168.56.22

Minio 2022-9-1

9000

9001

/app/minio/data{1..2}

准备

  • 所有主机安装docker,请直接参考docker官网:https://docs.docker.com/engine/install/ubuntu/。
  • 所有主机,创建相同目录如/app/minio。
  • 所有主机,pull最新镜像:docker pull minio/minio:RELEASE.2022-09-01T23-53-36Z。
  • 如果开启的防火墙,请开放端口:# ufw allow 2377 和 ufw allow 7946

docker集群

在ubuntu21执行:

# docker swarm init --advertise-addr 192.168.56.21

拷贝上图的docker swarm命令,并在ubuntu22上执行:

# docker swarm join --token \
SWMTKN-1-1vmhn9t82kf2i4l11zditp52mldu6h3egbfb1ezep5c8o0amlg-6kvpgqa7evp13tribe8iabhhl 192.168.56.21:2377
This node joined a swarm as a worker.

在ubuntu21查看docker集群

# docker node ls

创建overlaym网卡,在ubuntu21上执行

# docker network create -d overlay --attachable myingress

minio启动脚本

在ubuntu21的app/minio目录下,创建启动脚本start.sh,

并添加可执行权限: chmod +x start.sh

#!/bin/bash
name=minio21
docker stop $name
docker rm $name
docker run --name $name -d \
--network myingress \
-p 9000:9000 \
-p 9001:9001 \
-e TZ=Asia/Shanghai \
-e MINIO_ROOT_USER=minio \
-e MINIO_ROOT_PASSWORD=12345678 \
-v ${PWD}/datas:/datas \
minio/minio:RELEASE.2022-09-01T23-53-36Z \
server \
http://minio2{1..2}:9000/datas/data{1..2} \
--address ":9000" --console-address ":9001"

在ubuntu22的/app/minio目录下,创建启动脚本start.sh,内容完全一样,只是name即创建的容器名称不同,因为,在同一个swarm集群内,可以通过容器名称进行通讯,所以名称不能一样,添加可执行权限:chmod +x start.sh

#!/bin/bash
name=minio22
docker stop $name
docker rm $name
docker run --name $name -d \
--network myingress \
-p 9000:9000 \
-p 9001:9001 \
-e TZ=Asia/Shanghai \
-e MINIO_ROOT_USER=minio \
-e MINIO_ROOT_PASSWORD=12345678 \
-v ${PWD}/datas:/datas \
minio/minio:RELEASE.2022-09-01T23-53-36Z \
server \
http://minio2{1..2}:9000/datas/data{1..2} \
--address ":9000" --console-address ":9001"

现在分别启动两台服务器的minio,在两台主机上,都执行:

# ./start.sh

查看两台服务器的启动日志,直到都出现以下信息,即为启动成功:

访问ui

访问minio的ui,因为是两台主机,所以两台主机,应该都可以访问:

http://192.168.56.21:9001/

http://192.168.56.22:9001/

界面:

查看集群状态,两台服务器,应该展示相同的数据:

创建桶

在任意一个ui上创建桶,并设置权限:

上传一个图片并访问

因为数据是集群的,所以访问任何一台主机,都可以查看到这个图片。

http://192.168.56.21:9000/one/1.png

http://192.168.56.22:9000/one/1.png

数据存储格式:

宕机测试

现在下线minio22,在ubuntu22上执行

# docker stop minio22

访问,依然可以看到图片:

http://192.168.56.21:9000/one/1.png

查看21的ui,会显示已经下线的主机和磁盘:

  • 由于已经下线1/2的主机和磁盘,所以已经不能上传文件了,请您在正式的环境上,至少配置4*4的集群。
  • 再次启动minio22后,即可以上传文件了。

配置Nginx

注意,配置后,只能通过nginx查看、下载资源。如果要上传资源还是需要直接访问minio的9000API端口。

下载镜像

在ubuntu21上执行:

# docker pull nginx:1.23.1

配置文件

创建配置文件,在/app/nginx/conf.d/default.conf,完整内容如下:

upstream miocluster {
		server minio21:9000;
		server minio22:9000;
}
server {
			listen 80;
			listen [::]:80;
			server_name localhost;
			#access_log /var/log/nginx/host.access.log main;
			location / {
						root /usr/share/nginx/html;
						index index.html;
		}
		error_page 500 502 503 504 /50x.html;
		location = /50x.html {
				root /usr/share/nginx/html;
		}
		location /oos/one/ {
						proxy_pass http://miocluster/one/;
						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;
			}
}
截图:

启动脚本

创建启动脚本:/app/nginx/start.sh:

#!/bin/bash
docker stop nginx
docker rm nginx
docker run --name nginx -d \
--network myingress \
-p 80:80 \
-e TZ=Asia/Shanghai \
-v ${PWD}/conf.d:/etc/nginx/conf.d \
-v ${PWD}/templates:/etc/nginx/templates \
-v ${PWD}/html:/usr/share/nginx/html \
nginx:1.23.1

截图:

测试访问

通过nginx的oss,就可以访问到minio上的图片。

http://192.168.56.21/oos/one/1.png

可选的配置域名

同样,可以配置域名转发到指定的ip进行访问。

客户端

mc客户端

在minio官网,下载mc客户端,并放到/usr/local/bin目录下。并设置可执行权限:chmod +x /usr/local/bin/mc

下载地址:https://dl.min.io/client/mc/release/linux-amd64/mc。

# wget https://dl.min.io/client/mc/release/linux-amd64/mc
# chmod +x mc
# mc -v
mc version RELEASE.2022-08-28T20-08-11Z (commit-id=a64491e101feeaf68735a20c204d06993ba531e5)
Runtime: go1.18.5 linux/amd64
Copyright (c) 2015-2022 MinIO, Inc.

设置访问环境

# mc alias set local http://192.168.56.21:9000 minio 12345678
Added `local` successfully.

导入数据

使用mc mirror可以导入其他minio服务器的数据、本地的数据到指定的minio集群。

如:mc mirror play/photos/2014 local/backup-photos

Java客户端

  • Java项目添加依赖:io.minio:minio:8.4.3
  • 以下仅列出部分API,功能太多。

列出桶:

MinioClient client = MinioClient.builder().endpoint("http://192.168.56.21:9000")
.credentials("minio", "12345678").build();
List<Bucket> buckets = client.listBuckets();
for (Bucket bucket : buckets) {
System.err.println(bucket.name());
}

相关推荐

5分钟调色大片的方法(5分钟调色大片的方法有哪些)

哈喽大家好。在大家印象中一定觉得ps非常难学非常难。大家不要着急,小编的教学都是针对ps零基础的同学的,而且非常实用哦。只要大家跟着图文练习一两遍,保证大家立马学会~!好了,废话少说,下面开始我们今天...

闪白特效原来是这么用的(闪白特效怎么使用)

作者|高艳侠订阅|010-86092062闪白特效是影视作品中应用比较多的效果之一,那么具体该在哪些场景使用闪白特效?具体该如何操作?下面就以AdobePremiere(以下简称PR)为例,...

ppt常用小图标去哪里找?3个矢量素材网站推荐!

ppt是一个注重可视化表达的演示载体,除了高清图片,ppt中另一类常用的素材是各种小图标,也叫矢量图标,巧妙运用小图标能提升整体美观度和表现力,那么ppt常用小图标去哪里找呢?为方便各位快速找到合适的...

有什么好用的截图录屏工具?试试这9款

经常有朋友反馈苦于缺乏截屏和录屏的趁手工具,本期我们分享几个相当好用的截屏和录屏工具,希望能帮到大家。ScreenToGifScreenToGif是一款免费且开源的录屏工具。此款工具最大的特点是可以...

配色苦手福音!专业快速色环配色PS插件

今天橘子老师给的大家介绍的是一款快速配色的插件,非常强大配色苦手福音来啦!(获取方式见文末)【插件介绍】配色在后期设计中占有主导地位,好的配色能让作品更加抢眼Coolorus这款专业的配色插件,能够...

如何用PS抠主体?(ps怎么抠主体)

1.主体法抠图-抠花苞和花梗导入一张荷花苞的照片,点击上图中顶部“选择”菜单栏,下拉单击“主体”。可以看到,只有花苞被选中,但是花梗并没有被选中。接下来单击上图中左侧工具栏的“快速选择工具”,上图中顶...

2799元的4K电视,有保障吗?(买4k电视机哪个品牌好)

在上一期《电脑报》的3·15专题报道中,我们揭露了一款不靠谱的42英寸4K智能电视——TCLD42A561U。这款售价2699元的4K智能电视不仅4K画质方面存在严重问题,而且各种功能和应用体验也不理...

苹果电脑的Touch Bar推出一段时间了 这款工具可以帮你开发适用于它的APP

距离苹果推出带有TouchBar的MacBookPro已经有一段时间了,除了那些像Adobe、Google和Microsoft大公司在开发适用于TouchBar的应用之外,其实还有很多独立的开...

如魔法般吸取颜色的桌灯(如魔法般吸取颜色的桌灯叫什么)

色彩为生活带来的感官刺激,逐渐被视为理所当然。一盏桌灯运用它的神奇力量,将隐藏于物件中的颜色逐一释放,成为装点环境的空间魔法师。ColorUp是一款可以改变颜色的吸色台灯,沿用传统灯泡的造型,融入了拾...

一篇文章带你用jquery mobile设计颜色拾取器

【一、项目背景】现实生活中,我们经常会遇到配色的问题,这个时候去百度一下RGB表。而RGB表只提供相对于的颜色的RGB值而没有可以验证的模块。我们可以通过jquerymobile去设计颜色的拾取器...

ps拾色器快捷键是什么?(ps2019拾色器快捷键)

ps拾色器快捷键是什么?文章末尾有获取方式,按照以下步骤就能自动获得!学会制作PS特效需要一定程度的耐心和毅力。初学者可以从基本的工具和技术开始学习,逐渐提高他们的技能水平。同时,观看更多优秀的特效作...

免费开源的 Windows 截图录屏工具,支持 OCR 识别和滚动截图等

功能很强大、安装很小巧的免费截图、录屏工具,提供很多使用的工具来帮我么能解决问题,推荐给大家。关于ShareXShareX是一款免费的windows工具,起初是一个小巧的截图工具,经过多年的迭...

入门到精通系列PS教程:第13篇 · 拾色器、颜色问题说明及补充

入门到精通系列PS教程:第13篇·拾色器、颜色问题说明及补充作者|侯潇问题说明我的第12篇教程里,有个小问题没有说清楚。要说是错误,又不算是错误,只是没有说准确。写完那篇教程后,因为已经到了深...

PS冷知识:用吸管工具吸取屏幕上的任意颜色

今天,我们给大家介绍PS中的一个冷知识:用吸管工具可以吸取屏幕上的任意颜色。其实,操作起来是非常简单的。大多数情况下,我们认为,PS的吸管工具只能吸取PS软件作图区域范围内的颜色,最多加上画布四周的...

Windows 11 将提供内置颜色选择器工具

Windows11内置了颜色选择器,可以扫描并识别屏幕上的颜色并生成颜色代码。此外,微软还利用人工智能技术,让屏幕上的文本扫描和选择变得更加便捷。这两项功能均已在SnippingToolv1...