作者:独笔孤行 公众号:云实战 官网:http://anyamaze.com/

minio是开源对象存储产品,具有简单、稳定、高性能特性。本文将近minio的基本配置的一些方法。minio有单点运行、纠删码、分布式纠删码三种方式。单点运行配置简单,只需启动minio服务并指定相关数据目录即可。在生产环境中常用的纠删码和分布式纠删码两种,纠删码类型是minio在单节点服务器配置多个数据盘作为数据存放目录的配置方式。分布式纠删码是minio跨节点配置方式,所有节点的盘位组建纠删码,保证业务数据访问的高可用。

一、 minio安装 本地运行minio

wget https://dl.minio.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /data

本地NAS运行minio

gluster v set fareyes disperse.eager-lock off
export MINIO_ACCESS_KEY=minio
export MINIO_SECRET_KEY=minio123
minio gateway nas /shared/nasvol

注解:此种方式适合在数据存储目录为NAS目录时的配置方法。

二、配置minio服务 1.编辑 /etc/default/minio 配置文件,按照实际目录配置 MINIO_VOLUMES、 MINIO_ACCESS_KEY 、 MINIO_SECRET_KEY 等参数,如果自定义minio占用端口号,需要配置 MINIO_OPTS 参数,但一般使用默认端口号9000,所以无需配置该参数。但要确保 MINIO_VOLUMES 有读写权限。

cat /etc/default/minio 
#Volume to be used for Minio server.
MINIO_VOLUMES="/data/export1/minio"

#Use if you want to run Minio on a custom port.
#MINIO_OPTS="192.168.20.246:9199"

#Access Key of the server.
MINIO_ACCESS_KEY=minioaccesskey

#Access Key of the server.
MINIO_SECRET_KEY=miniosecretkey

2.在 /etc/systemd/system 目录下,配置 minio.service 服务。

cd /etc/systemd/system/; curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service

编辑 /etc/systemd/system/minio.service 文件,可采用默认 User=root 、Group=root参数,也可根据实际情况配置此参数。

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

[Service]
WorkingDirectory=/usr/local/

User=root
Group=root

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

# Let systemd restart this service always
Restart=always

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

# 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软件存放到/usr/local/bin/目录下

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

4.启动或禁用minio.service服务

systemctl enable minio.service
systemctl disable minio.service

参考官方链接: https://github.com/minio/minio-service/tree/master/linux-systemd

三、分布式minio纠删码卷

前置条件: 1.要求至少4个磁盘 2.至少2个校验盘 3.节点可支持最小2节点至最大32节点 4.所有节点间时间一致,不超过3s,可配置ntp时间同步。此条件非常重要,对性能影响明显。 安装minio(所有节点执行命令)

wget https://dl.minio.io/server/minio/release/linux-amd64/minio
chmod +x minio
export MINIO_ACCESS_KEY=minioaccesskey
export MINIO_SECRET_KEY=miniosecretkey
./minio server http://192.168.20.2{7...8}/data/sd{a...b}/minio

./minio server http://192.168.20.2{7...8}/data/sd{a...b}/minio 命令表示:集群两节点ip地址为192.168.20.27和192.168.20.28,磁盘目录为两个节点的/data/sda/minio和/data/sdb/minio两个目录。其中/data/sda和/data/sdb分别为磁盘的挂载目录。

四、分布式minio服务

所有前提要求同《三、分布式minio纠删码卷》内容。本章节内容为将分布式minio配置以服务方式运行。解决重启后需要手动开启服务的问题。 由于配置分布式minio,以下所有命令操作,需要在所有节点执行。 1.下载minio二进制文件,存放到/usr/local/bin/目录下

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

2.创建环境配置文件

cat <<EOT >> /etc/default/minio
# Remote volumes to be used for Minio server.
MINIO_VOLUMES=http://192.168.20.27/data/sda/minio \
http://192.168.20.27/data/sdb/minio \
http://192.168.20.28/data/sda/minio \
http://192.168.20.28/data/sdb/minio

# Use if you want to run Minio on a custom port.
#MINIO_OPTS="--address :9199"

# Access Key of the server.
MINIO_ACCESS_KEY=minioaccesskey

# Secret key of the server.
MINIO_SECRET_KEY=miniosecretkey
EOT

其中,MINIO_VOLUMES参数为所有节点的所有磁盘目录,用存放minio数据,要求有读写权限。MINIO_ACCESS_KEY和MINIO_SECRET_KEY为认证方式,可采用文件中默认配置。 3.配置minio.service服务 下载minio.service 模板到 /etc/systemd/system/ 目录

cd /etc/systemd/system/
curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/distributed/minio.service

修改/etc/systemd/system/minio.service文件里[Service]部分的User和Group参数为root。

[Service]

User=root
Group=root

修改后,全文内容如下,其他配置保持默认不变

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

[Service]
WorkingDirectory=/usr/local

User=root
Group=root

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"
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_ACCESS_KEY}\" ]; then echo \"Variable MINIO_ACCESS_KEY not set in /etc/default/minio\"; exit 1; fi"
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_SECRET_KEY}\" ]; then echo \"Variable MINIO_SECRET_KEY not set in /etc/default/minio\"; exit 1; fi"

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=65536

# 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})

4.启动服务

systemctl enable minio.service
systemctl start minio.service

参考官方链接: https://github.com/minio/minio-service/tree/master/linux-systemd/distributed https://github.com/minio/minio-service/tree/master/linux-systemd

欢迎扫描关注本人公众号,会定时分享IT技术文章,如有其它技术问题,可随时咨询。