Docker部署minio集群

1.基本定义

由于是非常轻量级的软件,所以架构上也没有这么复杂,他使用操作系统的文件系统作为存储介质,我们在向任意节点写数据的时候,minio会自动同步数据到另外的节点,而机制叫做erasure code(纠删码)来保证集群的稳定,保证数据可用,所以我们建议至少使用4个节点来构建集群。

如果一个N节点的分布式minio,只要有N/2节点在线,数据就是安全的。但是要保证至少有N/2+1个节点来创建新的对象。比如:我们的集群有4个节点,每个节点上一块盘,就算有2两个节点宕机,这个集群仍然是可读的,但是,我们需要3个节点才能让集群写数据。这就是为什么我们要有4个节点来构建集群。

2.机器列表
机器资源挂载磁盘路径
172.30.0.2/home/minio/data1
172.30.0.3/home/minio/data2
172.30.0.4/home/minio/data3
172.30.0.5/home/minio/data4
3.网络
# 创建bridge
docker network create -d bridge --subnet 172.30.0.0/16 --gateway 172.30.0.1 minio-network
# 查看信息
docker network ls
docker network inspect minio-network
# 删除
docker network rm networkId
4.mioio安装
# 拉去镜像:指定版本
docker pull minio:RELEASE.2023-02-27T18-10-45Z
docker run \-p 8500:9000 \-p 8600:9090 \-d \--name minio1 \--network minio-network \--ip 172.30.0.2 \-v /home/minio/data1:/data1 \-e "MINIO_ROOT_USER=minioadmin" \-e "MINIO_ROOT_PASSWORD=minioadmin" \minio/minio:RELEASE.2023-02-27T18-10-45Z server http://172.30.0.2/data1 http://172.30.0.3/data1 http://172.30.0.4/data1 http://172.30.0.5/data1 --console-address ":9090"
   docker run \-p 8501:9000 \-p 8601:9090 \-d \--name minio2 \--network minio-network \--ip 172.30.0.3 \-v /home/minio/data2:/data1 \-e "MINIO_ROOT_USER=minioadmin" \-e "MINIO_ROOT_PASSWORD=minioadmin" \docker.io/minio/minio:RELEASE.2023-02-27T18-10-45Z server http://172.30.0.2/data1 http://172.30.0.3/data1 http://172.30.0.4/data1 http://172.30.0.5/data1 --console-address ":9090"
   docker run \-p 8502:9000 \-p 8602:9090 \-d \--name minio3 \--network minio-network \--ip 172.30.0.4 \-v /home/minio/data3:/data1 \-e "MINIO_ROOT_USER=minioadmin" \-e "MINIO_ROOT_PASSWORD=minioadmin" \docker.io/minio/minio:RELEASE.2023-02-27T18-10-45Z server http://172.30.0.2/data1 http://172.30.0.3/data1 http://172.30.0.4/data1 http://172.30.0.5/data1 --console-address ":9090"
   docker run \-p 8503:9000 \-p 8603:9090 \-d \--name minio4 \--network minio-network \--ip 172.30.0.5 \-v /home/minio/data4:/data1 \-e "MINIO_ROOT_USER=minioadmin" \-e "MINIO_ROOT_PASSWORD=minioadmin" \docker.io/minio/minio:RELEASE.2023-02-27T18-10-45Z server http://172.30.0.2/data1 http://172.30.0.3/data1 http://172.30.0.4/data1 http://172.30.0.5/data1 --console-address ":9090"
   docker run \-p 8504:9000 \-p 8604:9090 \-d \--name minio5 \--network minio-network \--ip 172.30.0.5 \-v /home/minio/data4:/data1 \-e "MINIO_ROOT_USER=minioadmin" \-e "MINIO_ROOT_PASSWORD=minioadmin" \docker.io/minio/minio:RELEASE.2023-02-27T18-10-45Z server http://172.30.0.2/data1 http://172.30.0.3/data1 http://172.30.0.4/data1 http://172.30.0.5/data1 --console-address ":9090"
5.nginx负载

#user  nobody;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;upstream minio_console {server 172.30.0.2:9090 max_fails=3 fail_timeout=5s;server 172.30.0.3:9090 max_fails=3 fail_timeout=5s;server 172.30.0.4:9090 max_fails=3 fail_timeout=5s;server 172.30.0.5:9090 max_fails=3 fail_timeout=5s;}upstream minio_api {server 172.30.0.2:9000 max_fails=3 fail_timeout=5s;server 172.30.0.3:9000 max_fails=3 fail_timeout=5s;server 172.30.0.4:9000 max_fails=3 fail_timeout=5s;server 172.30.0.5:9000 max_fails=3 fail_timeout=5s;}server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}server {listen          9001;server_name     localhost;ignore_invalid_headers off;client_max_body_size 0;proxy_buffering off; #access_log      /var/log/minio.com_access.log main;#error_log       /var/log/minio.com_error.log warn;location / {# 添加了websocket支持proxy_http_version      1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";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 Host $http_host;proxy_pass              http://minio_console;}}server {listen          9000;   server_name     localhost;ignore_invalid_headers off; client_max_body_size 0;proxy_buffering off;     #access_log      /var/log/minio.com_access.log main;#error_log       /var/log/minio.com_error.log warn;location / {# 添加了websocket支持proxy_http_version      1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";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 Host $http_host;proxy_pass              http://minio_api;}}}
6.效果

在这里插入图片描述

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

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

相关文章

Java基础知识总结(48)

(1)super关键字 1. super代表父类对象 2. 在构造器中访问父类的构造器(创建子类对象时会先创建父类对象) 3. super访问父类的实例变量 4. 访问父类的实例方法 如:/*** 父类* author Ray**/public class Animal {String…

linux内核驱动-在内核代码里添加设备结点

linux中,一切皆文件 我们在用户层用一些系统函数(如:fopen等等)时,会进入内核,内核会在字符注册了的设备号链表中查找。如果找到就运行我们写的设备文件的(驱动)函数 我们在前面已经…

【滑动窗口】无重复字符的最长字串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串的长度 示例 1: 输入: s "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: s "bbbbb"输出: 1解释: 因为无重复字…

day54 买卖股票的最佳时机含冷冻期 买卖股票的最佳时机含手续费

题目1:309 买卖股票的最佳时机含冷冻期 题目链接:309 买卖股票的最佳时机含冷冻期 题意 整数数组prices中prices[i]表示第i天的股票价格,可以进行多次交易,但是在卖出股票后,无法在第二天买入股票(冷冻期…

设计模式(017)行为型之责任链模式

责任链模式,它允许你将请求沿着处理者链传递,直到有一个处理者能够处理该请求为止。在责任链模式中,有三个核心角色:请求者(Client)、处理者(Handler)、以及具体处理者(C…

RuoYi-Vue若依框架-vue前端给对象添加字段

处理两个字段的时候有需求都要显示在下拉框的同一行,这里有两种解决方案,一是后端在实体类添加一个对象,加注解数据库忽略处理,在接口处拼接并传给前端,二是在前端获取的数据数组内为每个对象都添加一个字段&#xff0…

cannal的使用

搭建MySQL 安装canal 1.新建文件夹logs, 新建文件canal.properties instance.properties docker.compose.yml instance.properties ################################################# ## mysql serverId , v1.0.26 will autoGen # canal.instance.mysql.slaveId0# enable g…

06 Php学习:字符串

PHP 中的字符串变量 在 PHP 中,字符串是一种常见的数据类型,用于存储文本数据。字符串变量可以包含字母、数字、符号等字符,并且可以进行各种操作和处理。以下是关于 PHP 中字符串变量的一些重要信息: 定义字符串变量&#xff1…

【SpringBoot3】Bean管理

1.Bean扫描 1.1传统Spring 标签&#xff1a;<context:component-scan base-package"com. example "/>注解&#xff1a;ComponentScan(basePackages "com.example") 1.2SpringBoot SpringBoot默认扫描启动类所在的包及其子包 2.Bean注册 如果要注…

Linux从入门到精通 --- 1.初始Linux

文章目录 第一章&#xff1a;1.1 Linux的诞生1.2 Linux系统内核1.3 Linux系统发行版 第一章&#xff1a; 1.1 Linux的诞生 1991年由林纳斯 托瓦兹创立并发展至今称为服务器操作系统领域的核心系统。 1.2 Linux系统内核 Linux内核提供了系统的主要功能&#xff0c;甚至是开源…

最大公约数算法详解

一、引言 最大公约数&#xff08;Greatest Common Divisor&#xff0c;GCD&#xff09;是数学中一个非常重要的概念。在计算机科学中&#xff0c;求解最大公约数不仅是数学问题的实际应用&#xff0c;也是算法设计的基本技能之一。本文将详细介绍几种常见的求解最大公约数的算…

【JS】判断双层数组中每一项是否都不为空

需求 判断双层数组中每一项是否都不为空&#xff0c;都不为空返回true&#xff0c;否则返回false 数组格式&#xff1a; arr1 [{list: [12, 25, 7, 18, 55]},{list: [36, 9]} ] arr2 [{list: [12, , 7, , 55]},{list: [36, 9]} ]实现 export function checkEmpty(arr) {le…

坚持十天做完Python入门编程100题第三天

坚持十天做完Python入门编程100题第三天 第15题 依次输出列表的元素和下标第16题 编写加速度函数第17题 编写函数计算球的体积第18题 函数默认值参数第19题 全局变量第20题 局部变量第21题 字符串格式化第22题 字符串格式化&#xff08;二&#xff09;第23题 字符串分隔 第15题…

SQL注入sqli_labs靶场第五、六题

第五题 根据报错信息&#xff0c;判断为单引号注入 没有发现回显点 方法&#xff1a;布尔盲注&#xff08;太耗时&#xff0c;不推荐使用&#xff09; 1&#xff09;猜解数据库名字&#xff1a;&#xff08;所有ASCII码值范围&#xff1a;0~127&#xff09; ?id1 and length…

TDengine too many open files

too many open files 是比较常见的报错&#xff0c;尤其使用TDengine 3.0 集群时&#xff0c;大概率会遇到。这个报错很简单&#xff0c;但要想顺利解决&#xff0c;却涉及到很多知识点。 目录 知识点&#xff1a;fs.nr_open知识点&#xff1a;file-max & fs.file-nr知识点…

stl set 的 insert()

set 跟 map 容器很像&#xff0c;但它俩又有很大的不同&#xff0c;它们的底层实现都是树&#xff0c;元素都是有序的&#xff0c;但map是可以修改元素的&#xff0c;而 set 就不行了&#xff0c;set 里的元素只有删除的情况&#xff0c;没有修改的情况&#xff1b;所以发现没有…

客户关系处理成功秘籍

目录 绪论: 第一章:客户关系管理概述 1.1 客户关系管理简介 1.2 客户关系管理的重要性 1.3 CRM的目标和原则 1.4 本章小结 第二章:建立客户数据库 2.1 客户数据库的重要性 2.2 建立客户数据库的步骤 2.3 数据库管理系统(DBMS) 2.4 数据分析工具 2.5 数据库安全…

数据治理(二)-基线治理

本文只是大概讲&#xff0c;基线任务治理方法&#xff0c;分为从基线owner和节点owner角度讲述分为两个部分&#xff1a; 1.基线治理(从基线Owner角度) Owner离职/转岗。 基线配置不合理。 高频预警/破线治理。 应急不及时治理。 2.基线任务治理(从节点Onwer) 2.1模型治…

Linux多进程通信(4)——消息队列从入门到实战!

Linux多进程通信总结——进程间通信看这一篇足够啦&#xff01; 1.基本介绍 1&#xff09;消息队列的本质其实是一个内核提供的链表&#xff0c;内核基于这个链表&#xff0c;实现了一个数据结构&#xff0c;向消息队列中写数据&#xff0c;实际上是向这个数据结构中插入一个…

怎样系统地学习自动化测试?

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号&#xff1a;互联网杂货铺&#xff0c;回复1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 平时的测试工作其实细分一下&#xff0c;大概有三个领域…