在 RedHat Linux 上部署 MinIO
本页档记录了在 RedHat Linux 操作系统上部署 MinIO 的过程,包括与 RHEL 二进制兼容的发行版。 本页档不对 RHEL 和这些发行版进行区分或特别说明,针对 RHEL 的指导通常也适用于这些发行版。
MinIO强烈建议生产部署使用RHEL版本完全支持 or 维护支持红帽生命周期的各个阶段。 在撰写本文时,包括:
RHEL 9.5+ (推荐)
RHEL 8.10+
您的组织应与红帽签订必要的服务合同,以确保部署的端到端可支持性。
MinIO可能运行在 Red Hat Linux 不再支持的 RHEL 版本上,只能获得来自 MinIO 或 RedHat 的有限支持或故障排除。
该流程主要针对生产级多节点多驱动器(MNMD)“分布式”配置。MNMD部署提供企业级的性能、可用性和可扩展性,是所有生产工作负载的推荐拓扑结构。
该流程包含部署单节点多驱动器(SNMD)和单节点单驱动器(SNSD)拓扑结构的指导,旨在支持早期开发和评估环境。
注意事项
审查清单
在尝试此过程之前,请确保您已查阅我们发布的硬件、软件和安全检查清单。
擦除编码奇偶校验
MinIO 自动确定默认值纠删码基于拓扑中的节点和驱动器总数配置集群。
您可以配置每个对象的奇偶性设置集群时的设置or让 MinIO 选择默认值(EC:4适用于生产级集群)。
Parity controls the relationship between object availability and storage on disk. Use the MinIOErasure Code Calculator为您的集群选择合适的纠删码奇偶校验级别提供指导。
虽然您可以随时更改擦除码奇偶校验设置,但使用特定奇偶校验写入的对象不自动更新到新的奇偶校验设置。
基于容量的规划
MinIO建议规划足够的存储容量来存储至少在达到70%使用率前的2年数据。 正在执行服务器池扩展更频繁地或"即时"地进行通常表明存在架构或规划问题。
例如,假设某个应用套件预计每年至少产生100 TiB数据,且设定3年扩容周期。 通过预先确保部署拥有约500 TiB可用存储空间,集群既能安全满足70%存储水位阈值,又能为每年数据存储量的增长提供额外缓冲空间。
考虑使用 MinIOErasure Code Calculator关于特定擦除编码设置的容量规划指导。
过程
1. 下载 MinIO RPM
MinIO 为以下架构提供构建版本:
AMD64
ARM64
PowerPC 64 LE
S390X
使用以下命令下载适用于您主机架构的最新稳定版 MinIO RPM 并安装。
wget RPMURL -O minio.rpm
sudo dnf install minio.rpm
wget RPMARM64URL -O minio.rpm
sudo dnf install minio.rpm
wget RPMPPC64LEURL -O minio.rpm
sudo dnf install minio.rpm
2. 审查systemd服务文件
The.rpmpackage install the followingsystemd服务文件到/usr/lib/systemd/system/minio.service:
[Unit]
Description=MinIO
Documentation=https://docs.min.io/community/minio-object-store/index.html
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio
[Service]
WorkingDirectory=/usr/local
User=minio-user
Group=minio-user
ProtectProc=invisible
EnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
# MinIO RELEASE.2023-05-04T21-44-30Z adds support for Type=notify (https://www.freedesktop.org/software/systemd/man/systemd.service.html#Type=)
# This may improve systemctl setups where other services use `After=minio.server`
# Uncomment the line to enable the functionality
# Type=notify
# Let systemd restart this service always
Restart=always
# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536
# Specifies the maximum number of threads this process can create
TasksMax=infinity
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
# Built for ${project.name}-${project.version} (${project.name})
3. 为 MinIO 创建用户和组
Theminio.service文件以...身份运行minio-user默认的用户和组。
您可以使用以下方式创建用户和组:groupadd和useradd命令。
以下示例创建用户、组,并设置访问 MinIO 使用的文件夹路径的权限。
这些命令通常需要 root(sudo) 权限。
groupadd -r minio-user
useradd -M -r -g minio-user minio-user
上面的命令创建了用户没有主目录,这是系统服务账户的典型配置。
你好必须 chown您打算与 MinIO 一起使用的驱动器路径。
如果minio-user用户或组无法读取、写入或列出任何驱动器的内容时,MinIO进程会在启动时返回错误。
例如,以下命令设置minio-user:minio-user作为所有驱动器的用户组所有者/mnt/drives-n哪里n介于1到16之间(含1和16):
chown -R minio-user:minio-user /mnt/drives-{1...16}
4. 启用 TLS 连接
创建或提供传输层安全协议 (TLS)证书到 MinIO 以自动启用服务器与客户端之间的 HTTPS 安全连接。
将证书放置在可访问的目录中minio-useruser/group:
mkdir -p /opt/minio/certs
chown -R minio-user:minio-user /opt/minio/certs
cp private.key /opt/minio/certs
cp public.crt /opt/minio/certs
对于本地测试或开发环境,您可以使用 MinIOcertgen要生成自签名证书。 例如,以下命令生成一个自签名证书,其中包含一组与MinIO服务器主机关联的IP和DNS使用者可选名称(SAN):
certgen -host "localhost,minio-*.example.net"
放置生成的public.crt和private.key进入/path/to/certsdirectory 来为 MinIO 部署启用 TLS。
应用程序可以使用public.crt作为受信任的证书颁发机构,允许连接到 MinIO 部署而无需禁用证书验证。
当MinIO启用TLS运行时,它还会根据操作系统的可信证书颁发机构列表验证连接的客户端证书。
要启用对第三方或内部签名证书的验证,请将CA文件放置在/opt/minio/certs/CAs文件夹。
CA 文件应包含从叶子证书到根证书的完整信任链,以确保验证成功。
有关配置 MinIO TLS 的更多具体指导,包括通过服务器名称指示(SNI)实现多域名支持,请参阅网络加密(TLS)您可以选择跳过此步骤以部署不启用 TLS 的配置。MinIO 强烈建议反对早期开发阶段之外的非TLS部署。
5. 创建 MinIO 环境文件
在以下位置创建环境文件:/etc/default/minioMinIO 服务使用此文件作为所有环境变量由 MinIO 使用和theminio.servicefile.
根据您的部署拓扑修改示例。
在生产环境中使用多节点多驱动器("分布式")部署拓扑。
# Set the hosts and volumes MinIO uses at startup
# The command uses MinIO expansion notation {x...y} to denote a
# sequential series.
#
# The following example covers four MinIO hosts
# with 4 drives each at the specified hostname and drive locations.
#
# The command includes the port that each MinIO server listens on
# (default 9000).
# If you run without TLS, change https -> http
MINIO_VOLUMES="https://minio{1...4}.example.net:9000/mnt/disk{1...4}/minio"
# Set all MinIO server command-line options
#
# The following explicitly sets the MinIO Console listen address to
# port 9001 on all network interfaces.
# The default behavior is dynamic port selection.
MINIO_OPTS="--console-address :9001 --certs-dir /opt/minio/certs"
# Set the root username.
# This user has unrestricted permissions to perform S3 and
# administrative API operations on any resource in the deployment.
#
# Defer to your organizations requirements for superadmin user name.
MINIO_ROOT_USER=minioadmin
# Set the root password
#
# Use a long, random, unique string that meets your organizations
# requirements for passwords.
MINIO_ROOT_PASSWORD=minio-secret-key-CHANGE-ME
在开发和评估环境中使用单节点多驱动器部署。 您也可以将它们用于可以容忍因节点停机而导致数据丢失或不可用的较小存储工作负载。
# Set the volumes MinIO uses at startup
# The command uses MinIO expansion notation {x...y} to denote a
# sequential series.
#
# The following specifies a single host with 4 drives at the specified location
#
# The command includes the port that the MinIO server listens on
# (default 9000).
# If you run without TLS, change https -> http
MINIO_VOLUMES="https://minio1.example.net:9000/mnt/drive{1...4}/minio"
# Set all MinIO server command-line options
#
# The following explicitly sets the MinIO Console listen address to
# port 9001 on all network interfaces.
# The default behavior is dynamic port selection.
MINIO_OPTS="--console-address :9001 --certs-dir /opt/minio/certs"
# Set the root username.
# This user has unrestricted permissions to perform S3 and
# administrative API operations on any resource in the deployment.
#
# Defer to your organizations requirements for superadmin user name.
MINIO_ROOT_USER=minioadmin
# Set the root password
#
# Use a long, random, unique string that meets your organizations
# requirements for passwords.
MINIO_ROOT_PASSWORD=minio-secret-key-CHANGE-ME
在早期开发和评估环境中使用单节点单驱动器("独立")部署。 MinIO 不建议在生产环境中使用独立部署,因为节点或其存储介质的丢失会导致数据丢失。
重要
SNSD部署不支持通过添加新服务器池来扩展存储。
# Set the volume MinIO uses at startup
#
# The following specifies the drive or folder path
MINIO_VOLUMES="/mnt/drive1/minio"
# Set all MinIO server command-line options
#
# The following explicitly sets the MinIO Console listen address to
# port 9001 on all network interfaces.
# The default behavior is dynamic port selection.
MINIO_OPTS="--console-address :9001 --certs-dir /opt/minio/certs"
# Set the root username.
# This user has unrestricted permissions to perform S3 and
# administrative API operations on any resource in the deployment.
#
# Defer to your organizations requirements for superadmin user name.
MINIO_ROOT_USER=minioadmin
# Set the root password
#
# Use a long, random, unique string that meets your organizations
# requirements for passwords.
MINIO_ROOT_PASSWORD=minio-secret-key-CHANGE-ME
指定任何其他环境变量或根据您的部署需求配置服务器命令行选项。
对于分布式部署,所有节点必须有匹配的/etc/default/minio环境文件。
使用诸如shasum -a 256 /etc/default/minio在每个节点上验证所有节点之间的精确匹配。
6. 启动 MinIO 部署
使用systemctl start minio启动部署中的每个节点。
您可以使用以下方式跟踪启动状态:journalctl -u minio在每个节点上。
成功启动后,MinIO 进程会输出如下所示的部署摘要:
MinIO Object Storage Server
Copyright: 2015-2024 MinIO, Inc.
License: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html
Version: RELEASE.2024-06-07T16-42-07Z (go1.22.4 linux/amd64)
API: https://minio-1.example.net:9000 https://203.0.113.10:9000 https://127.0.0.1:9000
RootUser: minioadmin
RootPass: minioadmin
WebUI: https://minio-1.example.net:9001 https://203.0.113.10:9001 https://127.0.0.1:9001
RootUser: minioadmin
RootPass: minioadmin
CLI: https://docs.min.io/community/minio-object-store/reference/minio-mc.html#quickstart
$ mc alias set 'myminio' 'https://minio-1.example.net:9000' 'minioadmin' 'minioadmin'
Docs: https://docs.min.io/community/minio-object-store/index.html
Status: 16 Online, 0 Offline.
在集群启动和同步过程中,您可能会看到日志活动增加。
创业失败的常见原因包括:
MinIO 进程对指定驱动器没有读写列表访问权限
驱动器不为空或包含非MinIO数据
驱动器未正确格式化或挂载
一个或多个主机无法通过网络访问
遵循我们的检查清单通常可以降低遇到这些或类似问题的风险。
7. 连接到部署
打开浏览器并通过端口访问任意 MinIO 主机名:9001要打开MinIO 控制台登录页面。
例如,https://minio1.example.com:9001.
使用登录MINIO_ROOT_USER和MINIO_ROOT_PASSWORD从上一步。
您可以使用 MinIO 控制台执行常规管理任务,例如身份和访问管理、指标和日志监控或服务器配置。 每个 MinIO 服务器都包含其自己内嵌的 MinIO 控制台。
遵循安装说明formc在您的本地主机上运行。mc --version验证安装。
如果您的 MinIO 部署使用第三方或自签名的 TLS 证书,请复制CA文件到~/.mc/certs/CAs允许mc
安装完成后,为 MinIO 部署创建别名:
mc alias set myminio https://minio-1.example.net:9000 USERNAME PASSWORD
将主机名、用户名和密码更改为反映您的部署配置。 主机名可以是部署中的任何 MinIO 节点。 您也可以指定处理连接到部署的主机名负载均衡器、反向代理或类似网络控制平面。
8. Next Steps
TODO