如何在 Ubuntu 20.04 上以独立模式设置 MinIO 对象存储服务器

news2024/11/20 21:17:54

前些天发现了一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站。

如何在 Ubuntu 20.04 上以独立模式设置 MinIO 对象存储服务器

介绍

存储非结构化对象数据 blob 并使其可通过 HTTP API(称为对象存储)进行访问的能力是现代技术领域不可或缺的一部分,尤其是基于云的备份解决方案和高可用性内容交付网络 (CDN)。

MinIO是一款与Amazon S3云存储服务兼容的开源对象存储服务器。配置为与 Amazon S3 交互的应用程序也可以配置为与 MinIO 交互,这意味着您可以使用 MinIO 作为 S3 的可行替代方案,以更好地控制对象存储服务器。该服务存储非结构化数据,例如照片、视频、日志文件、备份和容器/虚拟机映像,并可以提供单个对象存储服务器,该服务器可以池化分布在许多服务器上的多个驱动器。

MinIO用Go编写,带有命令行客户端和图形界面(MinIO 控制台),同时支持高级消息队列协议 (AMQP)、Elasticsearch、Redis、NATS和PostgreSQL目标的简单队列服务。出于所有这些原因,设置 MinIO 对象存储服务器可以为您的项目添加广泛的灵活性和实用性。

MinIO 可以以独立模式安装在单个服务器上,也可以以分布式模式安装在两台或多台服务器(总共至少有四个驱动器或存储卷)上。MinIO 的独立部署缺乏分布式部署默认的一些高级功能,例如版本控制、扩展、冗余和可用性。独立部署可用于评估和小型开发目的,而强烈建议使用分布式部署以满足生产或重大开发需求。

在本教程中,将通过以下方式设置 MinIO 的独立部署:

  • 在运行 Ubuntu 20.04 的服务器上安装 MinIO 服务器。
  • 个人计算机上安装 MinIO 客户端并将其配置为与 MinIO 服务器通信。
  • 设置数字证书以保护服务器和客户端之间的通信(包括通过 MinIO 控制台)。

先决条件

需要:

  • 一台 Ubuntu 20.04 服务器,包括 sudo 非 root 用户和防火墙。

或者,要通过域名访问 MinIO 控制台而不是通过服务器的 IP 地址访问它,或者除了通过服务器的 IP 地址访问它之外,还需要:

  • 已注册的域名。

第 1 步 — 下载并安装 MinIO 服务器

MinIO 服务器可以从二进制文件.deb或包安装。在此步骤中,将使用.deb包安装它。

首先,登录服务器:

ssh sammy@your-server-ip

更新包数据库:

sudo apt update

然后,更新系统:

sudo apt upgrade

使用 确认安装y

在升级过程中,可能会在终端中收到一个屏幕(参见下图),要求输入有关 OpenSSH 服务器配置文件的信息。由于不希望覆盖对配置文件所做的更改,因此请按Enter接受以红色突出显示的默认选项(“保留当前安装的本地版本”)。

Ubuntu 20.04 软件包升级提示

接下来,从MinIO 下载页面下载 MinIO 服务器的最新软件包:

wget https://dl.min.io/server/minio/release/linux-amd64/minio_20220523184511.0.0_amd64.deb
sudo dpkg -i minio_20220523184511.0.0_amd64.deb

-i选项将安装该软件包。

该命令设置了一个minio命令和一个systemd启动脚本,两者都可用于启动 MinIO 服务器。

在这里,更新了软件包并安装了 MinIO 服务。在下一步中,将创建 MinIO 服务器运行所需的文件系统对象。

步骤 2 — 创建 MinIO 用户、组、数据目录和环境文件

在此步骤中,将设置 MinIO 服务器的要求。如果此步骤中的任务未完成,MinIO 服务器将不会启动。

首先,使用以下命令创建 MinIO 服务器将运行的系统组:

sudo groupadd -r minio-user

-r标志指示命令将该组设为系统组。

然后,创建 MinIO 服务器将运行的用户:

sudo useradd -M -r -g minio-user minio-user

-M标志指示命令不要为用户创建主目录。该-r标志创建一个系统用户。该-g标志将用户分配到其主要组;在这种情况下,该组是minio-user之前创建的组。

接下来,使用以下命令创建 MinIO 将在其中存储其所有文件的数据目录:

sudo mkdir /mnt/data

然后,将数据目录的所有权授予 MinIO 用户和组:

sudo chown minio-user:minio-user /mnt/data

最后,使用以下命令创建并打开MinIO的环境文件:

sudo nano /etc/default/minio

该文件将保存服务器和控制台所需的变量。

将以下代码添加到文件中,使用服务器的非 root 用户:

/etc/default/minio

MINIO_VOLUMES="/mnt/data"

MINIO_OPTS="--certs-dir /home/sammy/.minio/certs --console-address :9001"

MINIO_ROOT_USER=minioadmin

MINIO_ROOT_PASSWORD=minioadmin

MINIO_VOLUMES:变量定义了MinIO的数据目录。

MINIO_OPTS:变量定义了数字证书的目录、监听地址和端口号(所有网络接口和端口9001)。有些目录尚不存在,但将在步骤 4 中创建。

MINIO_ROOT_USER:登录用户。

MINIO_ROOT_PASSWORD:密码。两者当前均设置为minioadmin

保存并关闭文件。

在此步骤中,设置了 MinIO 用户和其他要求。接下来,配置防火墙以允许 MinIO 流量通过。

步骤 3 — 设置防火墙以允许 MinIO 流量

在此步骤中,将配置防火墙以允许流量进入访问 MinIO 服务器和 MinIO 控制台的端口。以下内容与 MinIO 相关:

  • 9000是 MinIO 服务器侦听的默认端口。
  • 9001是访问 MinIO 控制台的推荐端口。

使用以下命令允许流量通过防火墙到达两个端口:

sudo ufw allow 9000:9001/tcp

将看到以下输出:

OutputRule added
Rule added (v6)

现在端口已准备就绪,下来可以生成自签名证书以启用对 MinIO 服务器的安全访问。

步骤 4 — 使用自签名证书保护对 MinIO 服务器的访问

在此步骤中,将使用MinIO 开发人员的 Go 应用程序来生成自签名证书。(注意版本,这里用的是1.2.0)

使用以下命令下载最新版本:

wget https://github.com/minio/certgen/releases/download/v1.2.0/certgen_1.2.0_linux_amd64.deb

此命令将在工作目录中放置一个名为certgen_1.2.0_linux_amd64.deb的文件。使用以下命令安装它:

sudo dpkg -i certgen_1.2.0_linux_amd64.deb

如果要将域名指向服务器并希望通过该域名和 IP 地址引用 MinIO 服务器,请使用以下命令为 MinIO 服务器生成证书:

sudo certgen -host example.com,your-server-ip

如果只想通过服务器的 IP 地址访问 MinIO 服务器,请使用以下命令为其生成证书:

sudo certgen -host your-server-ip

如果生成成功,输出应如下所示:

OutputCreated a new certificate 'public.crt', 'private.key' valid for the following names
 - "example.com"
 - "your-server-ip"

如果没有使用域名,您的输出将仅列出服务器的 IP。

文件public.crtprivate.key应位于系统工作目录中。这些文件需要移动到上面配置MINIO_OPTS的目录中。由于该目录尚不存在,请使用以下命令创建它:

sudo mkdir -p /home/sammy/.minio/certs

-p选项创建不存在的父目录。

使用此命令移动文件:

sudo mv private.key public.crt /home/sammy/.minio/certs

最后,将这两个文件的所有权授予 MinIO 用户和组:

sudo chown minio-user:minio-user /home/sammy/.minio/certs/private.key
sudo chown minio-user:minio-user /home/sammy/.minio/certs/public.crt

在此步骤中为服务器和/或域名生成了自签名证书。接下来,启动 MinIO 服务器。

第 5 步 — 启动 MinIO 服务器

在此步骤中,将启动 MinIO 服务器及其systemd服务。

MinIO 服务器可以使用minio命令或调用其systemd启动脚本来启动。但是,当使用该命令启动 MinIO 服务器时minio,它将无法重新启动。另外,使用命令启动 MinIO 服务器minio会自动在 .minio下创建文件夹/root,这不适用于 systemd。因此建议通过 systemd启动 MinIO 服务器。

使用以下命令启动 MinIO 服务器:

sudo systemctl start minio

检查状态:

sudo systemctl status minio

输出应如下所示:

Outputminio.service - MinIO
     Loaded: loaded (/etc/systemd/system/minio.service; disabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-05-23 02:55:03 UTC; 2s ago
       Docs: https://docs.min.io
    Process: 21978 ExecStartPre=/bin/bash -c if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default>
   Main PID: 21989 (minio)
      Tasks: 7
     Memory: 49.5M
     CGroup: /system.slice/minio.service
             └─21989 /usr/local/bin/minio server --certs-dir /home/finid/.minio/certs --console-address :9001 /mnt/data

May 23 02:55:03 minio-buntu systemd[1]: Starting MinIO...
May 23 02:55:03 minio-buntu systemd[1]: Started MinIO.
May 23 02:55:03 minio-buntu minio[21989]: WARNING: Detected default credentials 'minioadmin:minioadmin', we recommend that you chang>
May 23 02:55:03 minio-buntu minio[21989]: API: https://161.35.115.223:9000  https://10.10.0.6:9000  https://10.116.0.3:9000  https:/>
May 23 02:55:03 minio-buntu minio[21989]: Console: https://161.35.115.223:9001 https://10.10.0.6:9001 https://10.116.0.3:9001 https:>
May 23 02:55:03 minio-buntu minio[21989]: Documentation: https://docs.min.io
May 23 02:55:03 minio-buntu minio[21989]: Finished loading IAM sub-system (took 0.0s of 0.0s to load data).

如果上面的输出参考中的 API 和控制台https,那么大功告成。

第 6 步 — 通过 MinIO 控制台安全连接到 MinIO 服务器

MinIO 控制台是用于执行访问日志监控和服务器配置等管理任务的图形界面。在此步骤中,将通过此控制台连接到 MinIO 服务器。

浏览器输入https://your-server-ip:9001.

**注意:**由于不涉及网络服务器,因此http://your-server-ip:9001不会重定向到https://your-server-ip:9001. 始终用于https://your-server-ip:9001访问您的 MinIO 控制台。

现在将加载 MinIO 控制台登录屏幕:

MinIO 控制台的登录屏幕

使用在步骤 2 中创建的 MinIO 环境文件中配置的凭据登录。

登录成功后,主界面将如下所示:

MinIO Console主界面

步骤 7 — 在本地计算机上安装和使用 MinIO 客户端

MinIO 客户端是安装在本地计算机上的 MinIO 组件,用于管理 MinIO 服务器。此步骤中的所有命令都将在本地计算机的命令行上完成。与 MinIO 服务器一样,客户端可以从二进制文件或包安装。

在本地计算机上的新终端会话中,从MinIO 下载页面下载最新的 MinIO 客户端包:

wget https://dl.min.io/client/mc/release/linux-amd64/mcli_20220509040826.0.0_amd64.deb

wget在工作目录中放置一个名为的文件mcli_20220509040826.0.0_amd64.deb。使用以下命令安装它:

sudo dpkg -i mcli_20220509040826.0.0_amd64.deb 

此命令使 MinIO 客户端在个人计算机上可用,然后可以使用该mcli命令调用它。要初始化客户端并为 shell 启用自动完成功能(这将有助于键入客户端命令),请发出以下命令:

mcli --autocompletion

将得到如下输出:

Outputmcli: Configuration written to `/home/sammy/.mcli/config.json`. Please update your access credentials.
mcli: Successfully created `/home/sammy/.mcli/share`.
mcli: Initialized share uploads `/home/sammy/.mcli/share/uploads.json` file.
mcli: Initialized share downloads `/home/sammy/.mcli/share/downloads.json` file.
mcli: Your shell is set to 'bash', by env var 'SHELL'.
mcli: enabled autocompletion in your 'bash' rc file. Please restart your shell.

此输出告诉隐藏配置文件夹及其下的其他文件夹和配置文件的位置。

要在当前 shell 中启用自动完成功能而不实际关闭并重新启动它,请发出以下命令:

source .profile

开箱即用的配置文件包含可以使用 MinIO 客户端进行管理的 MinIO 服务器的访问凭据。可以在终端编辑器中编辑该文件,也可以使用mcli添加条目。

要使用 mcli为 MinIO 服务器在配置文件中添加条目,请使用以下命令以及在步骤 2 中为服务器设置的凭据:

mcli --insecure alias set myminio/ https://your-server-ip:9000 minioadmin minioadmin

alias set命令后面的名称可以设置为任何内容。这里它被设置为myminio/

--insecure标志是必要的,因为我们使用的是自签名证书。如果没有它,命令将失败,因为客户端将尝试验证证书是否来自受信任的证书颁发机构。

**提示:**当使用 MinIO 客户端连接到 MinIO 服务器时,请始终调用mcli带有--insecure标志的命令。这并不意味着连接不安全。这只是意味着客户端不会尝试验证证书的真实性。如果没有该标志,该命令将失败,但仅在使用自签名证书时才使用它。

使用以下命令查看~/.mcli/config.json文件内部:

sudo nano ~/.mcli/config.json

将看到myminio刚刚添加的主机:

〜/.mcli/config.json

{
  "version": "10",
  "aliases": {
    "gcs": {
      "url": "https://storage.googleapis.com",
      "accessKey": "YOUR-ACCESS-KEY-HERE",
      "secretKey": "YOUR-SECRET-KEY-HERE",
      "api": "S3v2",
      "path": "dns"
    },
    "local": {
      "url": "http://localhost:9000",
      "accessKey": "",
      "secretKey": "",
      "api": "S3v4",
      "path": "auto"
    },
    "myminio": {
      "url": "https://your_server_ip:9000",
      "accessKey": "minioadmin",
      "secretKey": "minioadmin",
      "api": "S3v4",
      "path": "auto"
    },
    "play": {
      "url": "https://play.min.io",
      "accessKey": "ACCESS-KEY",
      "secretKey": "SECRET-KEY",
      "api": "S3v4",
      "path": "auto"
    },
    "s3": {
      "url": "https://s3.amazonaws.com",
      "accessKey": "YOUR-ACCESS-KEY-HERE",
      "secretKey": "YOUR-SECRET-KEY-HERE",
      "api": "S3v4",
      "path": "dns"
    }
  }

现在已准备好探索客户端附带的命令。使用-h标志运行它以打印出帮助页面:

mcli -h 

输出应包括以下内容:

OutputCOMMANDS:
  alias      manage server credentials in configuration file
  ls         list buckets and objects
  mb         make a bucket
  rb         remove a bucket
  cp         copy objects
  mv         move objects
  rm         remove object(s)
  mirror     synchronize object(s) to a remote site
  cat        display object contents
  head       display first 'n' lines of an object
...
...

GLOBAL FLAGS:
  --autocompletion              install auto-completion for your shell
  --config-dir value, -C value  path to configuration folder (default: "/home/finid/.mcli")
  --quiet, -q                   disable progress bar display
  --no-color                    disable color theme
  --json                        enable JSON lines formatted output
  --debug                       enable debug output
  --insecure                    disable SSL certificate verification
  --help, -h                    show help
  --version, -v                 print the version
...

有关如何使用任何命令的提示,请使用选项调用它-h。例如:

mcli alias -h

要收集有关 MinIO 服务器的信息,请输入:

mcli --insecure admin info myminio

输出将与此类似:

Output●  your-server-ip:9000
   Uptime: 8 hours 
   Version: 2022-05-19T18:20:59Z

当 MinIO 服务器运行时,可以使用以下命令重新启动它:

mcli --insecure admin service restart myminio

无法从客户端启动已停止的 MinIO 服务器。如果 MinIO 服务器已停止,必须登录服务器并systemctl使用步骤 5 中的命令启动它。可以使用以下命令停止服务器:

mcli --insecure admin service stop myminio

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

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

相关文章

jenkins +jmeter 报告乱码解决

问题:生产报告会乱码的问题,一般是有编码格式引起的。我遇到的问题是,jmeter需要读取csv的数据作为参数。但是我们并不知道csv保存是什么编码格式,有可能不是utf-8的编码格式,所以会导致中文乱码的问题 解决方案&#…

sealor安装k8s

文章目录 平台介绍sealos(github下载)百度网盘 部署删除污点命令补全验证 平台介绍 模块功能描述公共部分权限管理(登录)集成K8s自身RBAC授权公共部分命名空间选择展示不通命名空间资源仪表盘命名空间|计算资源|存储资源|节点状态展示主要指标状况k8s集群node|namespace|pv创建…

【java爬虫】股票数据获取工具前后端代码

前面我们有好多文章都是在介绍股票数据获取工具,这是一个前后端分离项目 后端技术栈:springboot,sqlite,jdbcTemplate,okhttp 前端技术栈:vue,element-plus,echarts,ax…

Matlab论文插图绘制模板第133期—函数极坐标折线图

在之前的文章中,分享了Matlab函数折线图的绘制模板: 函数三维折线图: 函数网格曲面图: 函数曲面图: 函数等高线图: 函数等高线填充图: 进一步,再来分享一下函数极坐标折线图。 先来…

IPA打包过程中的Invalid Bundle Structure错误如果解决

在iOS应用程序开发中,打包和发布应用程序是一个必要的步骤。有的时候在打包的过程中可能会遇到一些错误,其中一个比较常见的错误是"Invalid Bundle Structure"。这个错误通常意味着应用程序的文件结构不正确,而导致的无法成功打包应…

webshell检测方式深度剖析 --- Pixy系列二(数据流分析)

开篇 书接上文,这次我们来聊聊数据流分析,数据流分析的内容非常广泛,我们力求深入浅出通俗易懂,在简短的篇幅内将这一概念描述清楚。 简单来说,数据流分析是一种用来获取相关数据沿着程序执行路径流动的信息分析技术…

如何移除视频中的背景音乐或人物声音

移除视频声音是将视频指定的声音移除,可以选择移除人物声音还是视频的背景音乐,方便实现二次创作。 小编给大家推荐一些方法帮助大家更轻松地移除视频中的背景音乐或人物声音,有兴趣的朋友请自行百度查找,或小程序查找 1、方法&a…

autograd与逻辑回归

一、autograd—自动求导系统 torch.autograd.backward() torch.autograd.backward()是PyTorch中用于计算梯度的函数。以下是对该函数的参数的解释: 功能:自动求取梯度 • tensors: 用于求导的张量,如 loss • retain_graph : 保存计算图 •…

密码学:带密钥的消息摘要算法一数字签名算法

文章目录 前言手写签名和数字签名前置知识点:消息摘要算法数字签名算法数字签名算法的由来数字签名算法在实际运用的过程附加:签名和摘要值的解释 数字签名算法的家谱数字签名算法的消息传递模型经典数字签名算法-RSA实现 数字签名标准算法-DSA实现 圆曲…

汽车架构解析:python cantools库快速解析arxml

文章目录 前言一、安装cantools二、官方说明文档三、cantools方法1、解析message的属性2、解析pdu中的signals3、根据message查找signals4、报文组成bytes 总结 前言 曾经有拿cantools来解析过dbc,用得比较浅,不知道可以用来解析arxml。最近有个需求需要…

Linux安装nginx(带http ssl)

nginx安装 nginx文件 以及gcc pcre zlib openssl 网盘下载 1.安装gcc yum -y install gcc gcc-c 2.安装pcre rpm -ivh pcre-8.32-17.el7.x86_64.rpm --force --nodeps rpm -ivh pcre-devel-8.32-17.el7.x86_64.rpm --force --nodeps 3.安装zlib tar -zxvf zlib-1.2.11.ta…

mfc100u.dll文件丢失,有五种不同解决方法

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“找不到mfc100u.dll文件”。那么,mfc100u.dll文件到底是什么?为什么会出现丢失的情况?本文将详细介绍mfc100u.dll文件的作用以及丢失的原因,并…

冒泡排序-排序算法

前言 如果有6个人站成一排,要将他们按从矮到高的顺序排列。你可能有多种方式来完成。但是如果其中有一个人特别高,比他身边的人高,在队伍中特别明显,你可以轻易看出那个最高的需要和身边的人交换位置,这是冒泡排序的核…

服务器硬件及RAID磁盘阵列详解

文章目录 一、服务器硬件服务器常见故障 二、RAID磁盘阵列详解1、RAID磁盘阵列概述2、RAID 0(条带化存储)3、RAID 1(镜像存储)4、RAID 55、RAID 66、RAID 10(先做镜像,再做条带)7、RAID 01(先做条带&#x…

计算机视觉 - 了解Mosaic数据增强

一、简述 数据增强包含各种扩展和增强机器学习和深度学习模型数据集的技术。这些方法跨越不同的类别,每种方法都会改变数据以引入多样性并提高模型的稳健性。几何变换(例如旋转、平移、缩放和翻转)会修改图像方向和结构。颜色和对比度调整会改变图像外观,包括亮度、对比度和…

贪心算法part04 860柠檬水找零 406根据身高重建队列

860 柠檬水找零 406 根据身高重建队列 452 用最少数量的箭引爆气球

使用ffmpeg实现视频裁剪并保持清高晰度

1 原始视频信息 通过ffmpeg -i命令查看视频基本信息 ffmpeg -i source.mp4 ffmpeg version 6.1-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable-…

Redis集群架构解密:打造高性能分布式缓存引擎

目录 1、前言 2、Redis集群概述 3、Redis集群架构的内部原理 4、Redis集群的实现方式 5、Redis集群的实现方式如何选择 6、Redis集群的搭建 7、结语 1、前言 在当今的互联网时代,随着用户数量的不断增长和业务流量的不断增加,对于高性能的缓存系…

线性代数笔记3 1.1

学习视频: 2.2 矩阵运算(二)_哔哩哔哩_bilibili 包括内容: p10矩阵运算(二) p11特殊矩阵 p12逆矩阵(一) p13逆矩阵(二)

Oracle 日志路径查询介绍

数据库日志分析详解:  ORACEL RAC 体系架构分析  Oracle RAC 包含GI(Grid Infrastructure) 集群软件与Oracle数据库组成。  GI包含两个最主要的组件:Clusterware集群软件和ASM存储软件,这两个软件提供数据库高可用能力。  …