windows环境下搭建minio分布式存储系统并通过nginx实现负载均衡

一、环境准备

windows环境下的minio可执行文件(官网下载地址)以及nginx(官网下载地址)
在这里插入图片描述

二、本地搭建minio集群

2.1、创建minio存储目录

如下图所示,在minioData目录下创建八个空文件夹
在这里插入图片描述

2.2、批处理文件启动minio集群

这里将minio.exe可执行文件单独放到minio目录下,并编写两个批处理脚分别启动两台分布式存储系统的节点,目录结构如下:
在这里插入图片描述
其中 startCluster1.bat

cd %~dp0
set data_home=D:/minioData
 
 .\minio.exe server --address ":19011" ^
  http://127.0.0.1:19011/%data_home%/data{1...4} ^
  http://127.0.0.1:19012/%data_home%/data{5...8}

startCluster2.bat

cd %~dp0
set data_home=D:/minioData
 
 .\minio.exe server --address ":19012" ^
  http://127.0.0.1:19011/%data_home%/data{1...4} ^
  http://127.0.0.1:19012/%data_home%/data{5...8}

第一行cd %~dp0表示更改当前目录为批处理本身的目录
startCluster1.bat启动端口号19011的服务器节点,并且通过http://127.0.0.1:19011/%data_home%/data{1...4}指定该服务器节点下有四个存储磁盘(driver),分别对应了data1,2,3,4,并通过http://127.0.0.1:19012/%data_home%/data{5...8}将19011和19012这两个节点关联起来, startCluster2.bat内容含义也是一样。如果模拟三个或者四个服务器节点,需要创建对应个数的bat文件,每个文件依次往后添加,如下:

cd %~dp0
set data_home=D:/minioData

.\minio.exe server --address ":19011" ^
 http://127.0.0.1:19011/%data_home%/data{1...4} ^
 http://127.0.0.1:19012/%data_home%/data{5...8} ^
 http://127.0.0.1:19013/%data_home%/data{9...12} ^

编辑好两个批处理脚本后依次双击startCluster1.batstartCluster2.bat启动两台节点服务器
在这里插入图片描述
其中节点一对应的服务器端口为19011,控制台端口为50720;节点二对应的服务器端口为19012,控制台端口为50745。控制台端口是随机分配的。浏览器输入localhost:19011访问节点一的客户端页面
在这里插入图片描述
地址会自动转到50720端口,用户名密码均为minioadmin
在这里插入图片描述
这里会显示两台存储节点(19011和19012)和8个存储盘(data1到data8)
在这里插入图片描述

三、minio的简单使用

3.1、创建桶bucket

在这里插入图片描述
注意桶的名称不能包含大写字母,这里创建名为java-bucket的桶,结果发现我们在节点一下创建的桶,所有节点的存储盘(data1~data8)下均有java-bucket空目录,同时其他节点也可以访问到该桶。

3.2 上传文件到桶中

在这里插入图片描述
进入java-bucket中,点击upload上传按钮
在这里插入图片描述
上传文件之后可以在任意一个节点进行下载,同时我发现该文件存储到了其中一个节点的所有盘中,比如这次19011挂载了data1到data4,无论从19011节点还是19012节点上传,文件都存储到了19012节点所在的盘data5到data8中,目前对分布式节点的存储机制尚未清楚。

四、通过nginx搭建负载均衡

我们搭建多个服务器存储节点就会有多个访问入口,没有一个统一的入口,并且无论访问哪个入口能实现的操作都是一样的,这样我们就需要一个合理的机制来访问和管理我们现有的服务器存储节点的入口,这就需要搭配nginx来使用。
下载好windows下的nginx并解压
在这里插入图片描述
进入conf目录修改nginx.conf配置文件,修改后如下


#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_servers {
		server 127.0.0.1:19011;
		server 127.0.0.1:19012;
	}

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location /minio {
			proxy_pass http://minio_servers;
			proxy_set_header Host $host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-Proto $scheme;
			client_max_body_size 0;
			chunked_transfer_encoding on;
		}

        #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;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

其中

	upstream minio_servers {
		server 127.0.0.1:19011;
		server 127.0.0.1:19012;
	}

和下面的部分是对源文件所进行修改的部分。

        location /minio {
			proxy_pass http://minio_servers;
			proxy_set_header Host $host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-Proto $scheme;
			client_max_body_size 0;
			chunked_transfer_encoding on;
		}

修改保存后,命令行进入nginx.exe所在目录,输入start nginx启动nginx
启动后浏览器输入localhost/minio通过nginx轮询策略依次访问19011和19012两台服务节点。

至此,windows环境下搭建minio分布式存储系统并通过nginx实现负载均衡已实现,下一篇详细讲解springboot项目整合minio分布式存储。

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

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

相关文章

义乌等保测评公司有哪些?用哪款堡垒机好?

对于义乌,相信大家都听过,也都知道,耳熟能详。这不有义乌小伙伴在问,义乌等保测评公司有哪些?用哪款堡垒机好?今天我们就来简单聊聊。 义乌等保测评公司有哪些? 目前浙江义乌本地暂未有正规等保…

ETL与抖音数据同步,让数据流动无阻

在当今数字化时代,数据的价值日益凸显,企业需要从各种渠道获取有关用户行为、市场趋势和竞争对手活动的数据。作为一家专注于数据集成和转换的领先平台,ETLCloud为企业提供了强大的数据同步和转换功能。而与此同时,抖音作为一款热…

多模态融合技术升级!新阶段2大融合模式取得最优性能

传统的多模态融合方法面临着模态表示不一致、灵活性不足等问题,难以适应日益复杂的实际需求。 而随着大模型等新技术的发展,研究者将这些新技术与传统的多模态融合相结合,提出了新阶段的融合模式,包括多模态大模型时代的新架构、…

构建高效Web应用:Flask、Django和FastAPI的全面对比

构建高效Web应用:Flask、Django和FastAPI的全面对比 介绍Flask简介快速入门路由和视图函数模板渲染数据库操作Flask项目实战 Django简介快速入门模型和数据库视图和模板表单处理Django项目实战 FastAPI简介快速入门路径操作和参数请求和响应依赖注入FastAPI项目实战…

基于协同过滤的旅游推荐系统设计与实现

基于协同过滤的旅游推荐系统设计与实现 在当今旅游业蓬勃发展的背景下,人们对于旅游体验的需求日益增加,如何为用户提供更加个性化、精准的旅游推荐成为了旅游行业的一个重要课题。为解决这一问题,我们设计并实现了一个基于协同过滤的旅游推…

苹果电脑专业的Mac垃圾清理工具CleanMyMac X4.14.7

CleanMyMac X是一款专业的Mac清理工具,它具有强大的功能和易用的界面,可以帮助用户快速清理Mac上的无用文件和垃圾,优化系统性能,提升电脑运行速度。 该软件的核心功能包括智能扫描与清理、应用程序管理、隐私保护和系统维护等。…

通用电气 IS220PTURH1BF 涡轮机输入/输出(输入/输出组件)

通用电气 IS220PTURH1BF 涡轮机输入/输出(输入/输出组件) 一个完整的根据工程的解决方案 通用电气具有丰厚经历的功用安全专家能够设计、履行和支撑您的整个安全体系——包括硬件、软件和使用工程,使您的系统泊车危险最小,一起满意…

计算机组成原理之机器:存储器之主存储器

计算机组成原理之机器:存储器 笔记来源:哈尔滨工业大学计算机组成原理(哈工大刘宏伟) Chapter3:存储器 3.1 概述 存储器可分哪些类型? 现代存储器的层次结构,为什么要分层? …

强化学习工具箱(Matlab)

1、Get Started 1.1、MDP环境下训练强化学习智能体 MDP环境如下图 每个圆圈代表一个状态每个状态都有上或下的选择智能体从状态 1 开始智能体接收的奖励值为图中状态转移的值训练目标是最大化累计奖励 (1)创建 MDP 环境 创建一个具有 8 个状态和 2 …

MVO-CNN-BiLSTM多输入分类预测|多元宇宙优化算法-卷积-双向长短期神经网络分类预测(Matlab)

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、算法介绍: 四、完整程序下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台编译&am…

js【详解】原型 vs 原型链

原型 每个 class 都有显示原型 prototype每个实例都有隐式原型_proto_实例的_proto_指向对应 class 的 prototype 如下范例: class Student 创建了 实例 xialuo 获取属性 xialuo.name 或执行方法 xialuo.sayhi()时,先在自身属性和方法寻找&#xff0…

进程之舞:操作系统中的启动、状态转换与唤醒艺术

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua,在这里我会分享我的知识和经验。&#x…

【MOMO_Tips】批量将word转换为PDF格式

批量将word转换为PDF格式 1.打开文件–>选项–>自定义功能区–>开发工具–>确定 2.点开开发工具,选择第一个visual basic 3.进入页面后找到插入–>模块,就可以看到这样的画面之后将下列vba代码复制粘贴到模块中 Sub ConvertWordsToPd…

【Redis】Redis的应用场景

📝个人主页:五敷有你 🔥系列专栏:Redis ⛺️稳中求进,晒太阳 Redis的应用场景: 限流 要求10s内只能访问一次 RequestMapping("xian")public String xianLiu(String sign){String sign1 …

LVGL在VScode中安装模拟器运行配置笔记教程

1、LVGL模拟器工程搭建 LVGL(Light and Versatile Graphics Library,轻巧而多功能的图形库)是一个免费的开放源代码图形库,它提供创建具有易于使用的图形元素,精美的视觉效果和低内存占用的嵌入式GUI所需的一切。本文主要讲述如何实现在VScode中实现LVGL模拟器环境的搭建运行。…

Android Framework 通过脚本动态修改应用私有文件执行权限

你只活一次 要悦己 脚本配置 Android_source/device/sprd/***/test/test_chmod.rc service test_chmod /vendor/bin/test_chmod.shuser rootdisabledoneshoton property:sys.test_chmodtruestart test_chmodAndroid_source/device/sprd/***/test/test_chmod.sh #!/system/bin/…

【排序算法】深入理解快速排序算法:从原理到实现

目录 1. 引言 2. 快速排序算法原理 3. 快速排序的时间复杂度分析 4. 快速排序的应用场景 5. 快速排序的优缺点分析 5.1 优点: 5.2 缺点: 6. Java、JavaScript 和 Python 实现快速排序算法 6.1 Java 实现: 6.2 JavaScript 实现&#…

【随笔】程序员如何选择职业赛道,目前各个赛道的现状如何,那个赛道前景巨大

大家好,我是全栈小5,欢迎阅读文章! 此篇是【话题达人】系列文章,这一次的话题是《程序员如何选择职业赛道》 目录 背景热度柱状图赛道热度C/C云原生人工智能前沿技术软件工程后端JavaJavascriptPHPPython区块链大数据移动开发嵌入…

LeetCode100 刷题记录

文章目录 矩阵相关1. 旋转矩阵2. 搜索二维矩阵 矩阵相关 1. 旋转矩阵 题目描述: 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵…

JavaWeb-MyBatis(上)

学完项目管理工具Maven后,继续学习MyBatis。我们都知道,JDBC是一个与数据库连接相关的API,最开始学习数据库连接都是从JDBC开始学起,但是其也有缺点,比如硬编码和操作繁琐等等。而今天学习的MyBatis就是专门为简化JDBC…