前期准备
网络和防火墙
- 网络互通:每个节点都应该能正常访问其他节点
- 防火墙策略:防火墙端口开放,服务端口9000,控制台端口;例如开放9000端口
firewall-cmd --permanent --zone=public --add-port=9000/tcp
firewall-cmd --reload
- 相同监听端口:所有Minio服务器使用的端口要保持一致
- 推荐负载均衡:官方建议使用负载均衡来管理与集群的连接(例如Nginx)
连续的主机名
创建服务器池时,MinIO需要使用扩展符号 {x...y}
来表示一系列连续的MinIO主机;MinIO支持在部署中使用连续的主机名 或 IP地址来表示每个Minio Sever进程。
对于非连续的主机名或ip地址,可以通过DNS配置,来重新定义映射关系;
配置DNS主机名映射:
# /etc/hosts
192.168.92.100 minio1.amos.com
192.168.92.102 minio2.amos.com
192.168.92.104 minio3.amos.com
192.168.92.106 minio4.amos.com
然后,我们就可以使用扩展符号 minio{1...4}..com
来指定整个主机名范围
存储需求
- 使用本地存储
- 直接连接存储在性能和一致性方面比网络存储NAS、存储区域网络SAN、网络文件存储NFS有显著优势。
- 使用xfs格式化驱动器
- 使用一致类型的驱动器
- 使用一致大小的驱动器
- 配置顺序挂载驱动器
内存要求
从RELEASE.2024-01-28T22-35-53Z版本开始,MinIO在分布式设置中为每个节点预分配了2GiB的内存,而在单节点设置中预分配了1GiB的内存。
时间同步
多节点系统需要保持时间和日期同步,以维持稳定的节点间操作和交互。可以使用ntp或chrony使用同一个时间服务器进行同步;
容量规划
MinIO建议在达到70%使用率之前,规划足够的存储容量以存储 至少 2年的数据。
安装步骤
在各节点安装Minio二进制包
wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/
创建systemd系统启动服务文件
创建文件:vim /usr/lib/systemd/system/minio.service
[Unit]
Description=MinIO
Documentation=https://minio.org.cn/docs/minio/linux/index.html
Wants=network-online.target
After=network-online.target
# minio二进制文件的路径
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})
创建环境变量文件
创建配置文件 vim /etc/default/minio
# 主机名和驱动器号
# (端口 9000)
MINIO_VOLUMES="http://minio{1...4}.amos.com:9000/disk/minio{1...4}"
# 控制台端口
MINIO_OPTS="--console-address :9001"
# 管理员账号
MINIO_ROOT_USER=minioadmin
# 管理员密码
MINIO_ROOT_PASSWORD=minioadmin123
创建用户
groupadd -r minio-user
useradd -M -r -g minio-user minio-user
chown minio-user:minio-user /disk/minio1 /disk/minio2 /disk/minio3 /disk/minio4
配置DNS映射
vim /etc/hosts
添加如下内容
192.168.92.100 minio1.amos.com
192.168.92.102 minio2.amos.com
192.168.92.104 minio3.amos.com
192.168.92.106 minio4.amos.com
配置防火墙端口
sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp
sudo firewall-cmd --permanent --zone=public --add-port=9001/tcp
firewall-cmd --reload
运行和启动MinIO服务器进程
# 启动服务
sudo systemctl start minio.service
# 查看状态
sudo systemctl status minio.service
# 查看日志
journalctl -f -u minio.service
# 设置开机自动重启
sudo systemctl enable minio.service
访问Minio
浏览器访问
访问任意一台服务器都可以
http://192.168.92.100:9001
创建桶
上传文件
随意上传一些文件
查看各节点下是否都存在
查看各节点路径下文件是否存在