2024-04-17 20:46:18 +08:00

190 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "Minio 笔记"
date: 2021-10-17T00:48:00+08:00
lastmod: 2024-04-17T20:08:00+08:00
keywords: []
tags: ["minio"]
categories: ["storage"]
---
## 部署单节点分布式存储
### 环境
- 服务器 IP: 192.168.1.10
- 自定义域名: X.X.X
### 安装 minio
- 下载
```bash
curl -L -o /usr/local/bin/minio https://dl.min.io/server/minio/release/linux-amd64/minio
curl -L -o /usr/local/bin/mc https://dl.min.io/client/mc/release/linux-amd64/mc
chmod 0755 /usr/local/bin/{minio,mc}
```
- 修改 hosts增加自定义域名解析
```
192.168.1.10 X.X.X
```
- 创建四个目录,用于存储 minio 数据
```bash
mkdir -p /minio/{1,2,3,4}
```
- 创建 /etc/systemd/system/minio.service内容如下
```ini
[Unit]
Description=MinIO
After=network.service
Wants=network.service
[Service]
Environment=MINIO_ROOT_USER=XXX
Environment=MINIO_ROOT_PASSWORD=XXXXXXXX
ExecStart=/usr/local/bin/minio server \
--address ":9000" \
--console-address ":9010" \
http://X.X.X:9000/minio/{1...4}
#Restart=on-failure
RestartSec=10s
[Install]
WantedBy=multi-user.target
```
### 启动 minio
- 配置开机自动启动
```bash
systemctl daemon-reload
systemctl enable minio
```
- 启动 minio
```bash
systemctl start monio
```
## 部署多节点分布式存储
### 环境
自定义域名 | 网卡 IP | 数据盘
---- | ---- | ----
X1.X.X | eth0: 192.168.1.11, eth1:10.0.0.11 | /dev/sdb, /dev/sdc, /dev/sdd, /dev/sde
X2.X.X | eth0: 192.168.1.12, eth1:10.0.0.12 | /dev/sdb, /dev/sdc, /dev/sdd, /dev/sde
X3.X.X | eth0: 192.168.1.13, eth1:10.0.0.13 | /dev/sdb, /dev/sdc, /dev/sdd, /dev/sde
X4.X.X | eth0: 192.168.1.14, eth1:10.0.0.14 | /dev/sdb, /dev/sdc, /dev/sdd, /dev/sde
- eth0 用于接收 api 请求
- eth1 用于集群内部通信
- 操作系统RockyLinux 9.3
### 挂载数据盘
- 在全部服务器上执行如下操作
- 格式化硬盘,设置卷标
```bash
mkfs.xfs -f /dev/sdb -L MINIO1
mkfs.xfs -f /dev/sdc -L MINIO2
mkfs.xfs -f /dev/sdd -L MINIO3
mkfs.xfs -f /dev/sde -L MINIO4
```
- 在 /etc/fstab 中增加挂载配置
```
LABEL=MINIO1 /mnt/minio1 xfs defaults,noatime 0 2
LABEL=MINIO2 /mnt/minio2 xfs defaults,noatime 0 2
LABEL=MINIO3 /mnt/minio3 xfs defaults,noatime 0 2
LABEL=MINIO4 /mnt/minio4 xfs defaults,noatime 0 2
```
- 创建挂载目录,挂载数据盘
```bash
systemctl daemon-reload
mkdir -p /mnt/minio{1,2,3,4}
mount -a
```
- 禁用 xfs 错误重试
```bash
for i in sdb sdc sdd sde; do
echo 0 > /sys/fs/xfs/$i/error/metadata/EIO/max_retries
echo 0 > /sys/fs/xfs/$i/error/metadata/ENOSPC/max_retries
echo 0 > /sys/fs/xfs/$i/error/metadata/default/max_retries
done
```
- 为 /etc/rc.d/rc.local 增加可执行权限
```bash
chmod 0755 /etc/rc.d/rc.local
```
- 编辑 /etc/rc.d/rc.local增加“禁用 xfs 错误重试”的脚本
```bash
for i in sdb sdc sdd sde; do
echo 0 > /sys/fs/xfs/$i/error/metadata/EIO/max_retries
echo 0 > /sys/fs/xfs/$i/error/metadata/ENOSPC/max_retries
echo 0 > /sys/fs/xfs/$i/error/metadata/default/max_retries
done
```
### 安装 minio
- 在全部服务器上执行如下操作
- 下载 minio rpm 包,安装
```bash
curl -L -o minio.rpm https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20240406052602.0.0-1.x86_64.rpm
rpm -Uvh minio.rpm
groupadd -r minio-user
useradd -r -g minio-user minio-user
chown minio-user:minio-user /mnt/minio{1..4}
```
- 下载 minio 客户端工具 mc
```bash
curl -L -o /usr/local/bin/mc https://dl.min.io/client/mc/release/linux-amd64/mc
chmod 0755 /usr/local/bin/mc
```
- 修改 hosts增加自定义域名解析**注意这里是集群通信,要用 eth1 网卡 ip**
```
10.0.0.11 X1.X.X
10.0.0.12 X2.X.X
10.0.0.13 X3.X.X
10.0.0.14 X4.X.X
```
- 创建 /etc/default/minio内容如下
```ini
MINIO_VOLUMES="http://X{1...4}:9000/mnt/minio{1...4}"
MINIO_OPTS="--console-address :9001"
MINIO_ROOT_USER=minio-admin
MINIO_ROOT_PASSWORD=1234567890
```
### 启动 minio
- 在全部服务器上执行如下操作
- 启动 minio并配置开机自动启动
```bash
systemctl daemon-reload
systemctl start monio
systemctl enable minio
```
## 客户端常用操作
- 创建 alias**注意这里是 api 调用,要用 eth0 网卡 ip**
```bash
mc alias set $ALIAS_NAME http://192.168.1.X:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD
```
- 创建 bucket
```bash
mc mb $ALIAS_NAME $BUCKET_NAME/$SUB_DIR
```
- 创建用户
```bash
mc admin user add $ALIAS_NAME $NEW_USER_NAME $NEW_PASSWORD
```
- 给新增用户授权
```bash
mc admin policy attach $ALIAS_NAME/$BUCKET_NAME/$SUB_DIR readwrite --user $NEW_USER_NAME
```