MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
1.安装
1.基于docker安装
docker search minio
docker pull minio/minio
docker run -p 9000:9000 minio/minio server /data
docker 启服务时指定挂在目录和登陆的用户名和密码
docker run -p 9000:9000 --name minio1
-e "MINIO_ACCESS_KEY=admin"
-e "MINIO_SECRET_KEY=12345678"
-v /Users/xiyou/my_minio/data:/data
-v /Users/xiyou/my_minio/config:/root/.minio
minio/minio server /data
服务启动之后可通过http://127.0.0.1:9000访问
2.基于linux平台搭建
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /xiyou/my_minio/data
后台运行:nohup ./minio server /xiyou/my_minio/data > /xiyou/my_minio/data/minio.log 2>&1 &
3.单机版数据备份与恢复
将data数据目录拷贝至新服务器即可重启服务,恢复数据。
具体实施如下:
使用两个linux服务器作测试
node1: 10.211.55.5
node2: 10.211.55.8
步骤1: 在node2上采用linux单机版启动minio服务后,创建两个bucket,分别为bucket1和bucket2,在bucket中上传文件;
步骤2: 停止node2上的minio服务;
步骤3: 将node2上的my_minio文件夹整个拷贝至node1;
scp -r ./my_minio [email protected]:/xiyou/
步骤4: 在node1重新启服务
2.集群搭建
1.集群服务器配置及启动
既然单机的minio可以采用异结点备份的方式恢复数据,为什么还要使用Distributed MinIO?
数据保护/高可用/限制/一致性
启动一个分布式Minio实例,你只需要把硬盘位置做为参数传给minio server命令即可,然后,你需要在所有其它节点运行同样的命令。
注意
- 分布式Minio里所有的节点需要有同样的access秘钥和secret秘钥,这样这些节点才能建立联接。为了实现这个,你需要在执行minio server命令之前,先将access秘钥和secret秘钥export成环境变量。
- 分布式Minio使用的磁盘里必须是干净的,里面没有数据。
- 下面示例里的IP仅供示例参考,你需要改成你真实用到的IP和文件夹路径。
- 分布式Minio里的节点时间差不能超过3秒,你可以使用NTP 来保证时间一致。
- 在Windows下运行分布式Minio处于实验阶段,请悠着点使用。
搭建的是4个结点的集群
示例: 启动分布式Minio实例,4个节点,每节点1块盘
搭建命令:
mkdir -p /xiyou/software
cd /xiyou/software
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo MINIO_ACCESS_KEY=minio MINIO_SECRET_KEY=minio123 ./minio server http://10.211.55.5/minio_data http://10.211.55.8/minio_data http://10.211.55.9/minio_data http://10.211.55.10/minio_data
注解:./minio为minio文件路径,minio_data是自定义的minio的文件的存放路径 可采取nohup 加& 进行后台启动
2.脚本方式启动
启动脚本
mkdir -p /opt/minio
vim /opt/minio/run.sh
#!/bin/bash
export MINIO_ACCESS_KEY=minio
export MINIO_SECRET_KEY=minio123
/xiyou/software/minio server http://10.211.55.5/minio_data \
http://10.211.55.8/minio_data\
http://10.211.55.9/minio_data\
http://10.211.55.10/minio_data
服务脚本
vim /usr/lib/systemd/system/minio.service
# vim /etc/systemd/system/minio.service #ubuntu下的启动脚本
---------------------------------------------------------------------------------------
[Unit]
Description=Minio service
Documentation=https://docs.minio.io/
[Service]
WorkingDirectory=/xiyou/software/
ExecStart=/opt/minio/run.sh
Restart=on-failure
RestartSec=5
# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
--------------------------------------------------------------------------------------
chmod +x /usr/lib/systemd/system/minio.service #centos的启动脚本
# chmod +x /etc/systemd/system/minio.service #ubuntu的启动脚本
#参考minio.service配置: https://github.com/minio/minio-service/blob/master/linux-systemd/minio.service
服务启动
chmod +x /opt/minio/run.sh
systemctl daemon-reload #刷新配置
systemctl enable minio
systemctl start minio
systemctl status minio
3.nginx配置
1.nginx安装
##我的os是centos7
#Install the prerequisites:
sudo yum install yum-utils
vim /etc/yum.repos.d/nginx.repo
#with the following contents:
-----------------------------------------------------------------------------------------
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
---------------------------------------------------------------------------------------
sudo yum install nginx
2.nginx配置
#安装好nginx之后就可以启动nginx
systemctl start nginx
#查看下端口监听
netstat -lntup|grep 80
#查看下nginx.conf文件的配置
cat /etc/nginx/nginx.conf
----------------------------------------------------------------------------------
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
gzip on;
#include /etc/nginx/conf.d/*.conf;
upstream minio_servers {
ip_hash;
server 10.211.55.5:9000;
server 10.211.55.8:9000;
server 10.211.55.9:9000;
server 10.211.55.10:9000;
}
server {
listen 80;
server_name minio.dev.com;
location / {
proxy_set_header Host $host;
proxy_pass http://minio_servers;
proxy_redirect off;
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#client_body_buffer_size 10M; #缓冲区代理缓冲请求的最大字节数
#client_max_body_size 10G; #客户端最大文件上传大小为10G
#proxy_buffers 1024 4k;
#proxy_read_timeout 300;
#proxy_next_upstream error timeout http_404;
}
}
}
--------------------------------------------------------------------------------
#location 内的注释的字段,建议可以在查看后根据需求修改
#可参考 https://docs.min.io/cn/setup-nginx-proxy-with-minio.html
#https://www.nginx.com/blog/enterprise-grade-cloud-storage-nginx-plus-minio/
4.MinIO Client
1.安装mc
cd /xiyou/software/
wget https://dl.minio.io/client/mc/release/linux-amd64/mc
2.使用mc
chmod +x mc
./mc config host add mcminio http://10.211.55.8:9000 minio minio123
mc ls mcminio
./mc mb mcminio/third
5.遇到的问题
1.node结点的ntp时间设置
node结点的ntp时间设置,别怪我没提醒你
设置系统时间为中国时区并启用NTP同步
yum install ntp //安装ntp服务
systemctl enable ntpd //开机启动服务
systemctl start ntpd //启动服务
timedatectl set-timezone Asia/Shanghai //更改时区
timedatectl set-ntp yes //启用ntp同步
ntpq -p //同步时间
参考https://www.cnblogs.com/tangxiaosheng/p/4986375.html
2.Allow port access for Firewalls
iptables -A INPUT -p tcp --dport 9000 -j ACCEPT
service iptables restart
参考:https://github.com/minio/minio
3.解决网页“打转转”问题
ifconfig ens4 mtu 1450
这跟系统的MTU设置有关,默认一般会设置为1500,有的系统也会设置为1450。集群中的MTU值一定要保持一致,如果是有多张网卡的,也可以把多张网卡的MTU值设置一致。
参考
https://github.com/minio/minio/blob/master/README_zh_CN.md
https://github.com/minio/minio
https://www.jianshu.com/p/bfde2495aa94