minio集群部署–linux环境

原文地址:minio集群部署--linux环境 -- 无敌牛

欢迎参观我的个人博客无敌牛 -- 技术/著作/典籍/分享等

第一步:安装

有rpm、deb、和二进制文件安装方式。参考文档在:MinIO Object Storage for Linux --- MinIO Object Storage for Linux

每一台参与集群的服务器都需要安装。

1.1 rpm安装

直接从官方下载,使用 rpm -i 或者 dnf install 命令就可以

wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20240826153307.0.0-1.x86_64.rpm -O minio.rpm
sudo dnf install minio.rpm

1.2 deb安装

直接从官方下载运行,使用 dpkg -i 就可以

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

1.3 二进制安装

由于minio是纯静态编译的,不需要外部链接库,可以直接下载后运行。只要CPU指令集和操作系统合适,基本就会运行,兼容性很强。加可执行权限后,放在 /usr/local/bin/ 目录即可。

wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/

第二步:创建用户

不推荐用root直接运行minio,此处创建用户minio,并把存储卷(数据目录)权限给到minio用户。用户名随意。每一台参与集群的服务器都需要创建用户。

adduser 和 useradd 命令各个系统版本参数不一致,根据实际情况添加用户。

存储卷每个目录最好单独挂载硬盘,关于硬盘分区、制作文件系统、挂载,参看往期文章:linux磁盘分区、制作文件系统及挂载 -- 无敌牛

第三步:配置部署

此处需要配置 minio.service、主机名和启动时的环境变量。每一台参与集群的设备都要做如下相同的配置。

3.1 配置 minio.service

创建 /usr/lib/systemd/system/minio.service 文件。如果是 rpm 或者 deb 安装的,则默认就存在这两个文件,只需要修改即可。内容如下:

[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio

[Service]
Type=notify

WorkingDirectory=/usr/local

User=minio
Group=minio
ProtectProc=invisible

EnvironmentFile=-/etc/minio/minio.conf
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES

# Let systemd restart this service always
Restart=always

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=1048576

# Turn-off memory accounting by systemd, which is buggy.
MemoryAccounting=no

# Specifies the maximum number of threads this process can create
TasksMax=infinity

# Disable timeout logic and wait until process is stopped
TimeoutSec=infinity

SendSIGKILL=no

[Install]
WantedBy=multi-user.target

# Built for ${project.name}-${project.version} (${project.name})

其中,环境变量文件,默认是 EnvironmentFile=-/etc/default/minio 。我这里修改成 EnvironmentFile=-/etc/minio/minio.conf

User和Group使用了第二步创建的minio用户

3.2 设置 /etc/hosts 信息

打开 /etc/hosts 文件,添加需要做集群的几台系统 IP 地址和主机名,如下图,这是3台设备的配置。

3.3 配置启动环境变量

创建 /etc/minio/minio.conf 文件,并做以下配置:

我这里准备了3台设备分别是 xxxnode1 xxxnode2 xxxnode3,每台设备提供两个磁盘,挂载到 /data/minio_1 和 /data/minio_2目录,所以这样配置。需要根据自己的环境调整配置。

字段解释:

MINIO_ROOT_USER : 管理员用户名
MINIO_ROOT_PASSWORD : 管理员密码
MINIO_STORAGE_CLASS_STANDARD : 标准存储纠删码级别设置为 EC:2
MINIO_STORAGE_CLASS_RSS : REDUCED存储类纠删码级别也设置为 EC:2
MINIO_VOLUMES : 设置存储卷地址

如果设置其他参数,可以加在MINIO_OPTS变量里。例如:
MINIO_OPTS="--console-address :9013 --address :9011"

设置管理台登录页面端口是 9013,可以通过 http://xx.xx.xx.xx:9013 访问管理页面。

设置数据访问端口为 9013,默认是 9000,修改此端口,MINIO_VOLUMES 也要做相应的改变。

如果要单机部署 ,需要把MINIO_STORAGE_CLASS_STANDARD 和 MINIO_STORAGE_CLASS_RSS 设置为 EC:0 ,把MINIO_VOLUMES 设置为绝对路径即可,不需要带域名端口等信息。

第四步,启动

systemctl daemon-reload 重新加载 systemd 配置

systemctl start minio 启动minio,需要对每台设备都启动才可以。

systemctl enable minio 设置为开机启动


关于客户端的使用问题,参看往期文章:minio的客户端mcli基本操作 -- 无敌牛 可用创建 bucket ,复制进去文件及cat获取,以及切换连接不同的设备来查看集群是否生效。

SDK开发参看往期文章:

python连接minio:python连接minio,实现创建桶、上传和下载功能 -- 无敌牛

golang连接minio: golang连接minio,实现创建桶、上传和下载功能 -- 无敌牛

由于时间不同步导致minio服务异常,参看往期文章:chrony实现NTP时间同步 -- 无敌牛 实现NTP时间同步

相关推荐
潜洋2 分钟前
Sping Boot教程之五十四:Spring Boot Kafka 生产者示例
java·spring boot·后端·kafka
每天敲200行代码3 分钟前
Linux开发工具--vim编辑器-gcc/g++编译器-gdb调试器
linux·c++·编辑器·vim·gdb
李长渊哦10 分钟前
Spring Boot 动态表操作服务实现
java·spring boot·后端
JINGWHALE143 分钟前
设计模式 行为型 访问者模式(Visitor Pattern)与 常见技术框架应用 解析
前端·人工智能·后端·设计模式·性能优化·系统架构·访问者模式
大强的博客44 分钟前
《Spring Framework实战》9:4.1.4.依赖注入
java·后端·spring
流星白龙1 小时前
【Linux】5.Linux常见指令以及权限理解(3)
android·linux
茉莉玫瑰花茶1 小时前
调试器gdb/cgdb的使用
linux
carl.xu1 小时前
ubuntu 配置OpenOCD与RT-RT-thread环境的记录
linux·运维·ubuntu
代码驿站5202 小时前
R语言的语法
开发语言·后端·golang
代码驿站5202 小时前
R语言的正则表达式
开发语言·后端·golang