前言
Minio可能在国内知道和用的人不是很多,我第一次接触Minio是也是当时我们需要使用Spinnaker集群来管理和维护内部的Kubernetes集群,而Spinnaker的中的持久化存储就使用的是Minio Spinnaker集群搭建。
但其实,Minio这款开源的分布式对象存储服务在国外已经相当受欢迎,并且国内也有多中小型互联网公司使用它来作为对象存储服务。
有意思的是当年在开源的分布式存储方案中,比较有名的就是GlusterFS
和Ceph
。前者虽然也提供了块存储和对象存储的接口,但对于企业来说更多用于了分布式文件系统存储,其实就是一种高可用版本的NAS解决方案(通常用于替换NFS),而后者则针对多种存储场景设计了不同的产品,针对分布式文件系统存储有CephFS
,针对分布式块存储有Ceph RBD
,针对分布式对象存储有Ceph Radosgw
,基本上可以做到开箱即用。
所以,在后来GlusterFS后来被收购后,据说创始团队又开源了一个分布式存储软件,就是这个用Golang编写的小而美的对象存储Minio.
Minio介绍
MinIO
是一个用Golang
开发的基于Apache License v2.0
开源协议的对象存储服务
。
它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
Minio使用纠删码erasure code
和校验和checksum
来保护数据免受硬件故障和数据损坏。
因此,即便您丢失一半数量(N/2)的硬盘,您仍然可以恢复数据。
1. 创建Minio目录
用于存放Minio可执行文件及配置文件
SHELL
mkdir /usr/local/minio
2. 下载Minio
SHELL
# 进入到/usr/local/minio
cd /usr/local/minio
# 执行下载
wget https://dl.min.io/server/minio/release/linux-amd64/minio
# 授权下载文件为可执行文件
chmod +x minio
3. 创建data存储目录
SHELL
# 新建目录
mkdir /home/minio/data
# 授权
chmod -R 777 /home/minio/data
4. 设置Minio自启服务
SHELL
# 添加minio-user用户
adduser minio-user
# 把/home/minio/data目录授权给minio-user用户及minio-user用户组
chown minio-user:minio-user /home/minio/data
# 在/usr/local/minio目录下创建配置文件minio.conf
vim /usr/local/minio/minio.conf
配置文件内容如下
SHELL
#数据存放目录
MINIO_VOLUMES="/home/minio/data"
#端口号设置,9000为web端口,9001为api端口
MINIO_OPTS="--console-address :9000 -address :9001"
#用户名
MINIO_ROOT_USER="admin"
#密码
MINIO_ROOT_PASSWORD="minio@admin"
创建开机自启配置文件minio.service
SHELL
# 创建服务文件
vim /etc/systemd/system/minio.service
配置文件内容如下
SHELL
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
#minio执行文件具体位置
AssertFileIsExecutable=/usr/local/minio/minio
[Service]
# User and group 用户组
User=minio-user
Group=minio-user
#创建的配置文件minio.conf
EnvironmentFile=/usr/local/minio/minio.conf
#启动命令
ExecStart=/usr/local/minio/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
5. 服务操作命令如下
SHELL
# 重新加载某个服务的配置文件
systemctl daemon-reload
# 启动minio服务
systemctl start minio.service
# 停止服务
systemctl stop minio.service
# 重新启动服务
systemctl restart minio.service
# 查看所有已启动的服务
systemctl list-units --type=service
# 查看服务当前状态
systemctl status minio.service
# 设置开机自启动
systemctl enable minio.service
# 停止开机自启动
systemctl disable minio.service
扩展操作
主要开放防火墙端口供外部访问,如果是内网访问无需此操作。
SHELL
# 查看防火墙开放的端口
firewall-cmd --list-ports
# 开发9000端口,供外部访问web
firewall-cmd --zone=public --add-port=9000/tcp --permanent
# 开放9001端口,供外部api调用
firewall-cmd --zone=public --add-port=9001/tcp --permanent
如果是阿里云服务器,还需要开放组策略,在浏览器输入http://ip:9000就可以访问minio的控制台了, 至此,CentOS8安装最新版本Minio结束。
暂无评论内容