【愚公系列】2022年06月 .NET架构班 073-分布式中间件 Minio的落地情况分析

举报
愚公搬代码 发表于 2022/06/30 19:55:20 2022/06/30
【摘要】 一、单主机/多硬盘模式-情况1分析:目前部署的单主机使用的是单主机多硬盘模式,只有一个客户,如果需要给多个客户使用多租户方式部署不同的单主机多硬盘模式。如何实现?方案:多租户单主机/多硬盘 1.租户1单主机,多硬盘启动 1.1 进入到Minio目录中 1.2 然后输入以下命令minio server --address :9001 --console-address ":9002" D:/...

一、单主机/多硬盘模式-情况1

分析:目前部署的单主机使用的是单主机多硬盘模式,只有一个客户,如果需要给多个客户使用多租户方式部署不同的单主机多硬盘模式。如何实现?

方案:多租户单主机/多硬盘

1.租户1单主机,多硬盘启动

1.1 进入到Minio目录中

在这里插入图片描述

1.2 然后输入以下命令

minio server --address :9001 --console-address ":9002" D:/work/net/MinIO/tenant1/data1 D:/work/net/MinIO/tenant1/data2 D:/work/net/MinIO/tenant1/data3 D:/work/net/MinIO/tenant1/data4

在这里插入图片描述

1.3 进入到Minio查看结果

在这里插入图片描述

1.3.1 进入到tenant1目录中

在这里插入图片描述

2.租户2单主机,多硬盘启动

2.1 进入到Minio目录中

在这里插入图片描述

2.2 然后输入以下命令

minio server --address :9003 --console-address ":9004" D:/work/net/MinIO/tenant2/data1 D:/work/net/MinIO/tenant2/data2 D:/work/net/MinIO/tenant2/data3 D:/work/net/MinIO/tenant2/data4

在这里插入图片描述

2.3 进入到Minio查看结果

在这里插入图片描述

2.3.1 进入到tenant2目录中

在这里插入图片描述

3.租户3单主机,多硬盘启动

3.1 进入到Minio目录中

在这里插入图片描述

3.2 然后输入以下命令

minio server --address :9005 --console-address ":9006" D:/work/net/MinIO/tenant3/data1 D:/work/net/MinIO/tenant3/data2 D:/work/net/MinIO/tenant3/data3 D:/work/net/MinIO/tenant3/data4

在这里插入图片描述

3.3 进入到Minio查看结果

在这里插入图片描述

3.3.1 进入到tenant3目录中

在这里插入图片描述

二、单主机/多硬盘模式-情况2

分析:目前Minio部署在windows上,直接根据Minio文件夹来做Minio硬盘的区分,能够直接运行。但是,当我们需要在Linux系统上运行Minio,如何在Linux上运行?

方案:Linux虚拟机

1.Linux系统运行Minio单主机/多硬盘

1、Linux虚拟机准备

1.1 安装Linux虚拟机

在虚拟机管理器VMware Workstation安装Linux Centos 7.6版本虚拟机
在这里插入图片描述

1.2 连接Linux虚拟机

使用xshell连接Linux虚拟机
在这里插入图片描述

2.磁盘准备

2.1 磁盘安装

​ Linux虚拟机中安装4块磁盘
在这里插入图片描述

2.2 磁盘加载

将虚拟机添加的磁盘加载到Linux系统中,输入命令:

for host in $(ls /sys/class/scsi_host) ; do echo "- - -" > /sys/class/scsi_host/$host/scan; done

如图所示:

在这里插入图片描述

2.3 磁盘状态

查看磁盘状态,输入:lsblk

[root@tony02 minio]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   40G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   39G  0 part 
  ├─centos-root 253:0    0 35.1G  0 lvm  /
  └─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
sdb               8:16   0    1G  0 disk 
sdc               8:32   0    1G  0 disk 
sdd               8:48   0    1G  0 disk 
sde               8:64   0    1G  0 disk 

2.4 磁盘不分区操作

2.4.1 磁盘sdb不分区

​ 输入命令:mkfs.ext4 /dev/sdb
在这里插入图片描述

2.4.2 磁盘sdc不分区

​ 输入命令:mkfs.ext4 /dev/sdc
在这里插入图片描述

2.4.3 磁盘sdd不分区

输入命令:mkfs.ext4 /dev/sdd
在这里插入图片描述

2.4.4 磁盘sde不分区

输入命令:mkfs.ext4 /dev/sde
在这里插入图片描述

3.Minio准备

3.1 Minio下载

​ 1、创建minio文件夹

​ 输入命令:mkdir minio,如图所示:
在这里插入图片描述
2、进入minio文件夹,下载Minio

​ 下载命令:wget https://dl.min.io/server/minio/release/linux-amd64/minio

​ 如图所示:
在这里插入图片描述
执行命令:chmod +x minio

​ 如图所示:
在这里插入图片描述

3.2 Minio磁盘挂载

3.2.1 在minio文件中,创建四个数据目录

在这里插入图片描述

3.2.2 将4个数据目录挂载到4个磁盘上

输入命令:

[root@tony2 ~]# mount /dev/sdb /root/minio/data1/
[root@tony2 ~]# mount /dev/sdc /root/minio/data2/
[root@tony2 ~]# mount /dev/sdd /root/minio/data3/
[root@tony2 ~]# mount /dev/sde /root/minio/data4/

挂载结果如图所示:

[root@tony2 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   40G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   39G  0 part 
  ├─centos-root 253:0    0 35.1G  0 lvm  /
  └─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
sdb               8:16   0    1G  0 disk /root/minio/data1
sdc               8:32   0    1G  0 disk /root/minio/data2
sdd               8:48   0    1G  0 disk /root/minio/data3
sde               8:64   0    1G  0 disk /root/minio/data4

3.3 Minio运行

2.3.1 minio默认用户名和密码,输入命令:

[root@tony2 ~]# export MINIO_ROOT_USER=adminminio

[root@tony2 ~]# export MINIO_ROOT_PASSWORD=adminminio

2.3.2 minio运行命令

[root@tony2 minio]# ./minio server /root/minio/data1 /root/minio/data2 /root/minio/data3 /root/minio/data4 --console-address ":9001"

运行结果如图所示:
在这里插入图片描述

三、多主机/单硬盘模式

分析:如果一个主机宕机了,就会导致所有的图片数据全部丢失,客户端无法进行访问,如何保证当主机宕机了,商品图片数据依然可以访问呢?

方案:多主机/单硬盘

1.Linux虚拟机准备

1.1 Linux虚拟主机192.168.44.8

1.1.1 虚拟机准备

在这里插入图片描述

1.1.2 虚拟机磁盘准备

在这里插入图片描述

1.1.3 虚拟机连接

在这里插入图片描述

1.2 Linux虚拟主机192.168.44.7

1.2.1 虚拟机准备

在这里插入图片描述

1.2.2 虚拟机磁盘准备

在这里插入图片描述

1.2.3 虚拟机连接

在这里插入图片描述

1.3 Linux虚拟主机192.168.44.7

1.3.1 虚拟机准备

在这里插入图片描述

1.3.2 虚拟机磁盘准备

在这里插入图片描述

1.3.3 虚拟机连接

在这里插入图片描述

1.4 Linux虚拟主机192.168.44.7

1.4.1 虚拟机准备

在这里插入图片描述

1.4.2 虚拟机磁盘准备

在这里插入图片描述

1.4.3 虚拟机连接

在这里插入图片描述

2.Minio准备

2.1 Linux虚拟主机192.168.44.8

2.1.1 Minio准备:

在这里插入图片描述

2.1.2 Minio运行:

输入命令:

./minio server --address :9000 http://192.168.44.7/root/minio/data1/zz http://192.168.44.8/root/minio/data1/zz http://192.168.44.6/root/minio/data1/zz http://192.168.44.4/root/minio/data1/zz

​ 如图所示:
在这里插入图片描述
运行结果:
在这里插入图片描述

2.2 Linux虚拟主机192.168.44.7

2.2.1 Minio准备:

在这里插入图片描述

2.2.2 Minio运行:

输入命令:

./minio server --address :9000 http://192.168.44.7/root/minio/data1/zz http://192.168.44.8/root/minio/data1/zz http://192.168.44.6/root/minio/data1/zz http://192.168.44.4/root/minio/data1/zz

如图所示:
在这里插入图片描述
运行结果:
在这里插入图片描述

2.3 Linux虚拟主机192.168.44.6

2.3.1 Minio准备:

在这里插入图片描述

2.3.2 Minio运行:

输入命令:

./minio server --address :9000 http://192.168.44.7/root/minio/data1/zz http://192.168.44.8/root/minio/data1/zz http://192.168.44.6/root/minio/data1/zz http://192.168.44.4/root/minio/data1/zz

如图所示:
在这里插入图片描述
运行结果:
在这里插入图片描述

2.4 Linux虚拟主机192.168.44.4

2.4.1 Minio准备:

在这里插入图片描述

2.4.2 Minio运行:

输入命令:

./minio server --address :9000 http://192.168.44.7/root/minio/data1/zz http://192.168.44.8/root/minio/data1/zz http://192.168.44.6/root/minio/data1/zz http://192.168.44.4/root/minio/data1/zz

如图所示:
在这里插入图片描述
运行结果:
在这里插入图片描述

四、多主机/多硬盘模式

在这里插入图片描述

1.Linux虚拟主机准备

1.1 虚拟机192.168.44.8准备完成

1.2 虚拟机192.168.44.8准备完成

1.3 虚拟机192.168.44.8准备完成

1.4 虚拟机192.168.44.8准备完成

2.Minio准备

2.1 Linux虚拟主机192.168.44.8

2.1.1 Minio准备:

在这里插入图片描述

2.1.2 Minio运行:

输入命令:

./minio server --address :9000 http://192.168.44.7/root/minio/data1/dd{1..2} http://192.168.44.8/root/minio/data1/dd{1..2} http://192.168.44.6/root/minio/data1/dd{1..2} http://192.168.44.4/root/minio/data1/dd{1..2}

如图所示:
在这里插入图片描述
​ 运行结果:
在这里插入图片描述

2.2 Linux虚拟主机192.168.44.7

2.2.1 Minio准备:

在这里插入图片描述

2.2.2 Minio运行:

​ 输入命令:

./minio server --address :9000 http://192.168.44.7/root/minio/data1/dd{1..2} http://192.168.44.8/root/minio/data1/dd{1..2} http://192.168.44.6/root/minio/data1/dd{1..2} http://192.168.44.4/root/minio/data1/dd{1..2}

如图所示:
在这里插入图片描述
运行结果:
在这里插入图片描述

2.3 Linux虚拟主机192.168.44.6

2.3.1 Minio准备:

在这里插入图片描述

2.3.2 Minio运行:

​ 输入命令:

./minio server --address :9000 http://192.168.44.7/root/minio/data1/dd{1..2} http://192.168.44.8/root/minio/data1/dd{1..2} http://192.168.44.6/root/minio/data1/dd{1..2} http://192.168.44.4/root/minio/data1/dd{1..2}

​ 如图所示:
在这里插入图片描述
​ 运行结果:
在这里插入图片描述

2.4 Linux虚拟主机192.168.44.4

2.4.1 Minio准备:

在这里插入图片描述

2.4.2 Minio运行:

输入命令:

./minio server --address :9000 http://192.168.44.7/root/minio/data1/dd{1..2} http://192.168.44.8/root/minio/data1/dd{1..2} http://192.168.44.6/root/minio/data1/dd{1..2} http://192.168.44.4/root/minio/data1/dd{1..2}

如图所示:
在这里插入图片描述
运行结果:
在这里插入图片描述

五、微服务项目落地单主机/多硬盘

1.Nginx准备

1.1 Nginx下载

Nginx下载:http://nginx.org/download/nginx-1.20.2.zip

1.2 Nginx配置Minio

1.2.1 进入到Nginx conf目录中

在这里插入图片描述

1.2.2 在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;
    server {
        listen       8081;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

		location / {
            proxy_pass  http://YDT.Minioservices;
        }

     
    }
	
	#Minio负载均衡配置
    upstream YDT.Minioservices{
        server 192.168.44.4:9000;
        server 192.168.44.6:9000;
        server 192.168.44.7:9000;
        server 192.168.44.8:9000;
    }
}

1.2.3 nginx启动

使用cmd输入命令:nginx
在这里插入图片描述

2.微服务系统准备

2.1 先在ProductController类中添加代码(直接连接Nginx)

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Minio;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;

namespace YDT.FileService.Controllers
{
    /// <summary>
    /// 商品图片控制器
    /// </summary>
    [ApiController]
    [Route("[controller]")]
    public class ProductFileController : ControllerBase
    {

        private readonly ILogger<ProductFileController> _logger;

        public ProductFileController(ILogger<ProductFileController> logger)
        {
            _logger = logger;
        }

        /// <summary>
        /// 批量商品上传
        /// </summary>
        /// <returns></returns>
        [HttpPost("UploadList")]
        public IActionResult UploadList(IFormFile[] files)
        {
            // 2.1 遍历所有文件
            foreach (var formFile in files)
            {
                if (formFile.Length > 0)
                {
                    // 2.1 创建MinioClient客户端
                    MinioClient minioClient = new MinioClient("127.0.0.1:8081", "minioadmin", "minioadmin");

                    // 2.2 创建文件桶
                    if (!minioClient.BucketExistsAsync("product").Result)
                    {
                        minioClient.MakeBucketAsync("product").Wait();
                    }

                    // 2.3 上传文件
                    minioClient.PutObjectAsync("product", formFile.FileName, formFile.OpenReadStream(), formFile.Length).Wait();

                    _logger.LogInformation($"文件:{formFile.FileName}上传到MinIO成功");
                }
            }

            return new JsonResult("上传成功");
        }
    }
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。