如何在 Ubuntu 20.04 上以独立模式设置 MinIO Object Storage Server

作者选择了 自由和开源基金作为 写给捐款计划的一部分接受捐款。

介绍

通过HTTP APIs存储非结构化对象数据,并使其可访问的能力,称为object storage,是现代技术环境的组成部分,特别是基于云的备份解决方案和高可用性(内容交付网络(CDNs)](https://andsky.com/tech/tutorials/using-a-cdn-to-speed-up-static-content-delivery)。

MinIO是一个与亚马逊S3云存储服务兼容的开源对象存储服务器。配置为与亚马逊S3接口的应用程序还可以配置为与MinIO接口,这意味着您可以使用MinIO作为对S3的可行替代品,以便对您的对象存储服务器进行更大的控制。该服务存储非结构化数据,如照片,视频,日志文件,备份和容器/VM图像,并可提供一个单一的对象存储服务器,可以聚集跨多个服务器的多个驱动器。

MinIO 以 Go 编写,配备命令行客户端和图形界面(MinIO 控制台),同时支持 Advanced Message Queuing Protocol (AMQP), Elasticsearch, Redis, NATSPostgreSQL的简单排队服务。

MinIO 可以在 Standalone Mode上安裝在單一伺服器上,或在 Distributed Mode上安裝在兩個或兩個以上的伺服器上,共有至少四個驅動器或儲存量。MinIO 的獨立部署缺乏一些先進的功能,這些功能是分布式部署的默認功能,例如版本化、擴展、浪費性和可用性。

在本教程中,您将通过:

  • 在运行 Ubuntu 20.04 的服务器上安装 MinIO 服务器
  • 在您的个人计算机上安装 MinIO 客户端并配置它以与 MinIO 服务器进行通信。

前提条件

要完成本教程,您将需要:

可选地,要通过域名访问 MinIO Console,而不是通过服务器的 IP 地址访问它,您需要:

您可以在 Namecheap购买域名,在 Freenom免费获取域名,或使用您所选择的域名注册器。

  • 以下 DNS 记录为您的服务器。 按照 DNS Quickstart获取如何添加域名的详细信息。
  • 指向您的服务器的公共 IP 地址的example.com记录。
  • 指向您的服务器的公共 IP 地址的www.example.com记录。

步骤1:下载和安装MinIO服务器

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

首先,您可以登入您的服务器:

1ssh sammy@your-server-ip

更新包数据库:

1sudo apt update

然后更新系统:

1sudo apt upgrade

y确认安装。

在升级过程中,您可能会在终端中收到一个屏幕(见下图)请求您提供有关 OpenSSH 服务器的配置文件的信息. 由于您对配置文件所做的更改不宜重写,请按输入来接受红色突出的默认选项(保持当前安装的本地版本

Ubuntu 20.04 package upgrade prompt

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

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

將名為「minio_20220523184511.0.0_amd64.deb」的檔案下載到您的工作目錄中。 使用「dpkg」命令來管理「.deb」套件,因此使用以下命令安裝下載的檔案:

1sudo dpkg -i minio_20220523184511.0.0_amd64.deb

-i选项将安装该包。

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

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

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

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

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

1sudo groupadd -r minio-user

-r旗指示命令将该组变成一个系统组。

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

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

-M旗指示命令不要为用户创建主目录. -r旗创建系统用户. -g旗分配用户到其主要组;在这种情况下,该组是先前创建的小用户组。

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

1sudo mkdir /mnt/data

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

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

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

1sudo nano /etc/default/minio

此文件将包含服务器和控制台所需的变量。

将下列代码添加到文件中,与您的服务器的非根用户更新 sammy:

1[label /etc/default/minio]
2MINIO_VOLUMES="/mnt/data"
3
4MINIO_OPTS="--certs-dir /home/sammy/.minio/certs --console-address :9001"
5
6MINIO_ROOT_USER=minioadmin
7
8MINIO_ROOT_PASSWORD=minioadmin

MINIO_VOLUMES变量定义了MinIO的数据目录,而MINIO_OPTS变量定义了数字证书目录、MinIO Console的收听地址和端口号(所有网络接口和端口9001)。

您可以用MINIO_ROOT_USERMINIO_ROOT_PASSWORD变量定义 MinIO Console 的登录用户和密码,目前两者都设置为minioadmin,但您应该使用安全登录凭证更新用户和密码。

保存并关闭文件。

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

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

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

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

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

1sudo ufw allow 9000:9001/tcp

您将看到以下结果:

1[secondary_label Output]
2Rule added
3Rule added (v6)

现在端口已经准备好了,您可以生成自签证证书,以便安全访问MinIO服务器。

步骤 4 – 通过自签证证书确保访问 MinIO 服务器

在此步骤中,您将使用certgen,由MinIO的开发者开发的Go应用程序,生成自签证书。在写作时的最新版本是 版本 1.2.0

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

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

此命令将将名为 certgen_1.2.0_linux_amd64.deb 的文件放入您的工作目录。

1sudo dpkg -i certgen_1.2.0_linux_amd64.deb

certgen命令现在在系统上可用,而certgen -h将输出其使用信息。

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

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

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

1sudo certgen -host your-server-ip

如果生成成功,输出应该是这样的:

1[secondary_label Output]
2Created a new certificate 'public.crt', 'private.key' valid for the following names
3 - "example.com"
4 - "your-server-ip"

如果您不使用域名,您的输出只会列出服务器的 IP。

文件 public.crtprivate.key 应该在你的工作目录. 这些文件需要移动到 /home/sammy/.minio/certs 目录. 因为那个目录还不存在,用以下命令创建它,用你的服务器的非根用户代替 sammy:

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

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

使用此命令移动文件(根据需要取代 sammy):

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

最后,将两个文件的所有权交给MinIO用户和组(必要时取代sammy):

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

在此步骤中,您为您的服务器和/或域创建了自签证书,接下来,您将启动MinIO服务器。

步骤 5 – 启动MinIO服务器

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

MinIO 服务器可以用minio命令启动,或者通过调用它的systemd启动脚本。但是,当 MinIO 服务器用minio命令启动时,它不会再重新启动,而且,使用minio命令启动 MinIO 服务器会自动在/root下创建.minio文件夹,这不会与 systemd 一起工作。

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

1sudo systemctl start minio

查看状态:

1sudo systemctl status minio

输出应该是这样的:

 1[secondary_label Output]
 2minio.service - MinIO
 3     Loaded: loaded (/etc/systemd/system/minio.service; disabled; vendor preset: enabled)
 4     Active: active (running) since Mon 2022-05-23 02:55:03 UTC; 2s ago
 5       Docs: https://docs.min.io
 6    Process: 21978 ExecStartPre=/bin/bash -c if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default>
 7   Main PID: 21989 (minio)
 8      Tasks: 7
 9     Memory: 49.5M
10     CGroup: /system.slice/minio.service
11             └─21989 /usr/local/bin/minio server --certs-dir /home/finid/.minio/certs --console-address :9001 /mnt/data
12
13May 23 02:55:03 minio-buntu systemd[1]: Starting MinIO...
14May 23 02:55:03 minio-buntu systemd[1]: Started MinIO.
15May 23 02:55:03 minio-buntu minio[21989]: WARNING: Detected default credentials 'minioadmin:minioadmin', we recommend that you chang>
16May 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:/>
17May 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:>
18May 23 02:55:03 minio-buntu minio[21989]: Documentation: https://docs.min.io
19May 23 02:55:03 minio-buntu minio[21989]: Finished loading IAM sub-system (took 0.0s of 0.0s to load data).

如果上述输出中的API和控制台引用https,一切都按预期工作。

但是,如果 API 和 Console 引用「http」,即使 MinIO 成功启动,也发生了错误,您可能需要使用步骤 4 生成新的证书,以便直接到「https」;然后重新启动 MinIO 服务。如果证书文件不在正确的目录中,或如果 MinIO 用户不拥有它们,则可能出现另一个错误源。

在此步骤中,您启动了 MinIO 服务器,接下来,您将连接到它。

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

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

点击您的浏览器到 https://your-server-ip:9001

<$>[注意] 注意: 由于没有 Web 服务器参与,所以 http://your-server-ip:9001 不会重定向到 https://your-server-ip:9001. 始终使用 https://your-server-ip:9001 访问您的 MinIO 控制台。 <$>

由于证书是自签名的,您的浏览器会发出类似于此图像中的提示:

Browser security exception

如果你正在使用Firefox,请点击Advanced,然后点击Accept the RiskContinue

MinIO Console 登录屏幕现在将加载:

MinIO Console's login screen

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

成功登录后,主界面将像这样加载:

MinIO Console's main interface

您可以从控制台界面执行管理任务,例如查看日志、创建和管理存储库、用户和组以及其他服务器配置任务。

您现在已经通过其图形界面连接到MinIO服务器,在下一步,您将在您的个人计算机上安装和使用MinIO客户端,并使用它连接到MinIO服务器。

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

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

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

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

「wget」將名為「mcli_20220509040826.0.0_amd64.deb」的檔案放入您的工作目錄。

1sudo dpkg -i mcli_20220509040826.0.0_amd64.deb

此命令使 MinIO 客户端在您的个人计算机上可用,然后您可以使用mcli命令调用它。 为了初始化客户端并启用您的壳的自动完成,这将有助于键入客户端命令,发出以下命令:

1mcli --autocompletion

你会得到这样的输出:

1[secondary_label Output]
2mcli: Configuration written to `/home/sammy/.mcli/config.json`. Please update your access credentials.
3mcli: Successfully created `/home/sammy/.mcli/share`.
4mcli: Initialized share uploads `/home/sammy/.mcli/share/uploads.json` file.
5mcli: Initialized share downloads `/home/sammy/.mcli/share/downloads.json` file.
6mcli: Your shell is set to 'bash', by env var 'SHELL'.
7mcli: enabled autocompletion in your 'bash' rc file. Please restart your shell.

此输出告知您隐藏的配置文件夹和其它文件夹和配置文件的位置。

要在实际上不关闭和重新启动当前壳中启用自动完成,请发出以下命令:

1source .profile

外面的框,配置文件包含 MinIO 服务器的访问凭证,您可以使用 MinIO 客户端来管理它. 您可以在终端编辑器中编辑该文件,或者您可以使用mcli添加一个条目。

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

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

alias set命令之后的名称可以设置为任何东西,在这种情况下,它被设置为myminio/

如果没有它,命令将失败,因为客户端将尝试验证该证书来自一个受信任的证书管理机构。

<$>[注] ** 提示:** 使用 MinIO 客户端连接到 MinIO 服务器时,请始终以 --insecure 旗号拨打 mcli 命令. 这并不意味着连接不安全.这只是意味着客户端不会试图验证证证书的真实性。

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

1sudo nano ~/.mcli/config.json

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

 1[label ~/.mcli/config.json]
 2{
 3  "version": "10",
 4  "aliases": {
 5    "gcs": {
 6      "url": "https://storage.googleapis.com",
 7      "accessKey": "YOUR-ACCESS-KEY-HERE",
 8      "secretKey": "YOUR-SECRET-KEY-HERE",
 9      "api": "S3v2",
10      "path": "dns"
11    },
12    "local": {
13      "url": "http://localhost:9000",
14      "accessKey": "",
15      "secretKey": "",
16      "api": "S3v4",
17      "path": "auto"
18    },
19    "myminio": {
20      "url": "https://your_server_ip:9000",
21      "accessKey": "minioadmin",
22      "secretKey": "minioadmin",
23      "api": "S3v4",
24      "path": "auto"
25    },
26    "play": {
27      "url": "https://play.min.io",
28      "accessKey": "ACCESS-KEY",
29      "secretKey": "SECRET-KEY",
30      "api": "S3v4",
31      "path": "auto"
32    },
33    "s3": {
34      "url": "https://s3.amazonaws.com",
35      "accessKey": "YOUR-ACCESS-KEY-HERE",
36      "secretKey": "YOUR-SECRET-KEY-HERE",
37      "api": "S3v4",
38      "path": "dns"
39    }
40  }

您现在已经准备好探索客户端附带的命令. 使用-h旗进行运行,以打印帮助页面:

1mcli -h

输出应包括以下内容:

 1[secondary_label Output]
 2COMMANDS:
 3  alias manage server credentials in configuration file
 4  ls list buckets and objects
 5  mb make a bucket
 6  rb remove a bucket
 7  cp copy objects
 8  mv move objects
 9  rm remove object(s)
10  mirror synchronize object(s) to a remote site
11  cat display object contents
12  head display first 'n' lines of an object
13...
14...
15
16GLOBAL FLAGS:
17  --autocompletion install auto-completion for your shell
18  --config-dir value, -C value path to configuration folder (default: "/home/finid/.mcli")
19  --quiet, -q disable progress bar display
20  --no-color disable color theme
21  --json enable JSON lines formatted output
22  --debug enable debug output
23  --insecure disable SSL certificate verification
24  --help, -h show help
25  --version, -v print the version
26...

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

1mcli alias -h

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

1mcli --insecure admin info myminio

结果将类似于此:

1[secondary_label Output]
2●  your-server-ip:9000
3   Uptime: 8 hours 
4   Version: 2022-05-19T18:20:59Z

當 MinIO 伺服器正在運行時,您可以使用:

1mcli --insecure admin service restart myminio

如果 MinIO 服务器被停止,您必须登录到服务器并从步骤 5 开始使用 systemctl 命令,您可以使用:

1mcli --insecure admin service stop myminio

在此步骤中,您使用mcli命令从本地计算机连接到您的MinIO服务器,并使用--insecure旗帜。

结论

在本教程中,您使用 MinIO 设置了对象存储服务器,并通过自签名的证书创建了一个安全连接,您还使用 MinIO Console 连接到 MinIO 服务器,并通过您在个人电脑上安装的 MinIO 客户端连接到 MinIO 服务器。

此设置是用于小型开发项目和评估目的的独立系统.当您准备好在生产或大型开发项目中使用它时,您应该在分布式模式下设置它。

Standalone 设置的存储容量仅限于服务器的存储容量,但您可以使用 Block Storage Volumes将服务器的存储容量扩展到 80 TB。

Published At
Categories with 技术
comments powered by Disqus