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.效果

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度学习环境搭建问题汇总

pip无法通过国内源下载,could not find a version that satisfies the requirement 当遇见could not find a version that satisfies the requirement问题时,可以通过下载whl的方式进行离线安装,以torch1.12.0为例,如果用的是阿里…

苹果电脑怎么彻底删除软件 苹果电脑卸载软件在哪里 cleanmymac x怎么卸载 mac废纸篓怎么删除

苹果电脑卸载软件的方法相对直观和简单,尤其是对于习惯使用Mac操作系统的用户来说。以苹果MacBook Pro为例,以下是卸载软件的详细步骤、使用方法、注意事项与建议。 一、卸载软件的详细步骤: 1. 打开Mac电脑,进入桌面&#xff0c…

shardingSphere5.1.1 适配人大金仓

shardingSphere5.1.1 适配人大金仓 编译后的jar文件和源码下载 1. 官网适配数据库说明 图例可见,官网不支持人大金仓国产数据库,若要使用shardingSphere需要修改源码2. 需要修改的类 2.1 KingBase8DatabaseType.java package org.apache.shardingsphe…

Python | 超前滞后分析

Nino SST Indices (Nino 12, 3, 3.4, 4; ONI and TNI) 有几个指标用于监测热带太平洋,所有这些指标都是基于海表温度(SST)异常在一个给定的区域的平均值。通常,异常是相对于30年的周期来计算的。厄尔尼诺3.4指数(Nio 3.4 index)和海洋厄尔尼诺指数(Ocea…

虚拟网络设备的真正使命:实现有控制的通信

在数字化时代📲,网络安全🔒成为了企业和个人防御体系中不可或缺的一部分。随着网络攻击的日益复杂和频繁🔥,传统的物理网络安全措施已经无法满足快速发展的需求。虚拟网络设备🖧,作为网络架构中…

C++的stack和queue类(一):适配器模式、双端队列与优先级队列

目录 基本概念 stack的使用 queue的使用 适配器模式 stack.h test.cpp 双端队列-deque 仿函数 优先队列 priority_queue的使用 queue.h文件 stack.h文件 test.cpp文件 日期类的比较 商品的比较 结论 基本概念 1、stack和queue不是容器而是容器适配器&…

【漏洞复现】深澜计费管理系统任意文件读取漏洞

0x01 产品简介 深澜计费管理系统是一套完善的、领先的具有复杂生物型特征的弹性认证计费系统。其主要由以下几个模块组成:AAA认证计费平台、系统运营维护管理平台、用户及策略管理平台、用户自助服务平台、智能客户端模块、消息推送模块以及数据统计模块。该系统为…

进制转换(2 8 10 16 String)

题目 public class Main {static String s "0123456789abcdef";//m 2 8 10 16public static int res(int n,int m) {StringBuffer sb new StringBuffer(); while(n!0) {sb.append(s.charAt(n%m));n/m;}//转换为对应进制之后String s sb.reverse().toString();ch…

【就近接入,智能DNS-Geo DNS ,大揭秘!】

做过后端服务或者网络加速的小伙伴,可能或多或少都听说过,智能DNS或者Geo DNS,就是根据用户的位置,返回离用户最近的服务节点,就近接入,以达到服务提速的效果。 那么大家有没想过,这个背后的原理…

three.js尝试渲染gbl模型成功!(三)

参照教程:https://cloud.tencent.com/developer/article/2276766?areaSource102001.5&traceId88k805RaN_gYngNdKvALJ (作者:九仞山) 通过最近两天查three.js入门教程了解到 这玩应支持包括 .obj、.gltf等类型的模型结构。 g…

Harmony鸿蒙南向驱动开发-RTC

RTC(real-time clock)为操作系统中的实时时钟设备,为操作系统提供精准的实时时间和定时报警功能。当设备下电后,通过外置电池供电,RTC继续记录操作系统时间;设备上电后,RTC提供实时时钟给操作系…

李廉洋:4.9黄金屡创新高。黄金原油晚间最新分析建议。

但当下不管是战争因素所带来的避险情绪影响还是美国降息与否所带来的经济影响都无疑还是支撑着黄金继续走高,那么接下来,只要市场不出现较大的利空影响,黄金都不会有较大的回调力度,所以我们当下不管是短线还是长线仍旧以继续看多…

urwid,一个好用的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个好用的 Python 库 - urwid。 Github地址:https://github.com/urwid/urwid Urwid 是一个功能强大的 Python 库,用于创建基于文本的用户界面&#xf…

Linux CPU利用率

Linux CPU利用率 在线上服务器观察线上服务运行状态的时候,绝大多数人都是喜欢先用 top 命令看看当前系统的整体 cpu 利用率。例如,随手拿来的一台机器,top 命令显示的利用率信息如下 这个输出结果说简单也简单,说复杂也不是那么…

[Java基础揉碎]System类

1) exit 退出当前程序 2) arraycopy: 复制数组元素,比较适合底层调用,一般使用 Arrays.copyOf完成复制数组(Arrays.copyOf其实底层也是用的System.arraycopy, 本质是一样的) int[] src{1,2,3}; int[] dest new int[3]; System.arraycopy(src, 0, des…

【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注册 如果要注…

【力扣 Hot100 | 第一天】4.10 两数相加

文章目录 1.两数相加&#xff08;4.10&#xff09;1.1题目1.2解法一&#xff1a;模拟1.2.1解题思路1.2.2代码实现 1.两数相加&#xff08;4.10&#xff09; 1.1题目 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c…

Docker容器应用为工业连接提供了新选择

一 智能数据管理 Docker容器应用能够被灵活部署在异构计算平台上&#xff0c;且仅需占用少量的资源&#xff0c;这可为工业4.0提供一种新的数据集成方案。Docker容器应用程序是提供特定功能的小型软件模块&#xff0c;可在自动化领域中用于智能数据管理。而Softing推出的新产品…

day55 最长递增子序列 最长连续递增子序列 最长重复子数组

题目1 300 最长递增子序列 题目链接 300 最长递增子序列 题意 找到整数数组nums的最长严格递增子序列的长度&#xff08;子序列并不改变原始的顺序&#xff0c;但是可以删除元素&#xff09; 动态规划 动规五部曲 1&#xff09;dp数组及下标i的含义 dp[i] 表示以nums[i…

【现代C++】委托构造函数

现代C中的委托构造函数&#xff08;Delegating Constructors&#xff09;是C11引入的特性&#xff0c;它允许一个构造函数调用同一个类中的另一个构造函数&#xff0c;以避免代码重复。这种特性在初始化对象时提高了代码的复用性和清晰性。 1. 基本用法 在同一个类中&#xf…