Minio 的使用及问题解决
一、minio 介绍
对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。
对于中小型企业,如果不选择存储上云,那么 Minio 是个不错的选择,麻雀虽小,五脏俱全。当然 Minio 除了直接作为对象存储使用,还可以作为云上对象存储服务的网关层,无缝对接到 Amazon S3、MicroSoft Azure。
左边是 MINIO 集群的示意图,整个集群是由多个角色完全相同的节点所组成的。因为没有特殊的节点,所以任何节点宕机都不会影响整个集群节点之间的通信。
通过 rest 跟 RPC 去通信的,主要是实现分布式的锁跟文件的一些操作。
右边这张图是单个节点的示意图,每个节点都单独对外提供兼容 S3 的服务。
二、安装
1.1、docker 搭建 minio
docker run -d -p 9000:9000 -p 9001:9001 --name minio -v /data/minio:/data -e "MINIO_ROOT_USER=minio" -e "MINIO_ROOT_PASSWORD=Passw0rd@" -e MINIO_DOMAIN="yunxue521.top" --restart=always minio/minio server /data --console-address ":9001"
1.2、安装 mc 客户端
这里直接用我 bucket 的链接吧~
wget http://minio.yunxue521.top/bucket-01/mc
chmod +x mc
mv mc /usr/bin/
mc ##测试一下,返回正常即安装成功
1.3 登陆 minio 控制台
云服务器要放通 9001 跟 9000 端口,本地服务器直接访问 IP:9001,值得一提的是 9000 端也要开放,作为数据传输端口
三、mc 客户端使用
mc 自动补全
mc --autocompletion
bash ##重启bash
查看 minio server
./mc config host ls
添加 minio server
mc config host add minio http://192.168.1.5:9000 用户名 密码 ##前面docker指定的用户及密码
删除 minio server
mc config host remove minio
查看 minio server 中 bucket
[root@website /]# mc ls minio
[2021-11-14 12:31:33 CST] 0B bucket-01/
[root@website /]# mc ls minio/bucket-01/
[2021-11-14 17:01:56 CST] 20MiB mc
[2021-11-14 12:41:08 CST] 9.9KiB python.jpeg
[2021-11-14 17:25:41 CST] 0B music/
创建 bucket
mc mb minio/test
删除 bucket
mc rm minio/test
添加资源到 minio server
[root@website data] mc cp run.sh minio/bucket-01/
run.sh: 1.37 KiB / 1.37 KiB ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃ 33.25 KiB/s 0s[root@website data]#
四、遇到问题及解决
关于 minio 的问题还没遇到过,只要是 nginx 端口转发的问题,为了尽可能的少开放安全组的端口,所以我尽量都会用 nginx 来转发请求
4.1、端口转发后 css,js 文件 404 找不到
首先我写了反向代理代理 9001 的请求,但是当请求 css 文件时,请求的地址是指向 80 端口,并没有指向 9001 端口,所以会报 404 的错误,折腾了半天,最终换了一种方法实现: nginx 通过二级域名转发请求
配置文件如下:
注意:此方法需要域名
4.1.1、阿里云域名管理添加 A 纪录
4.1.2、nginx 设置二级域名代理
server {
listen 80;
server_name minio.yunxue521.top;
#charset koi8-r;
location / {
proxy_pass http://127.0.0.1:9001;
proxy_redirect off;
proxy_set_header Host $host;
proxy_hide_header Server;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 10;
proxy_send_timeout 10;
proxy_read_timeout 10;
proxy_intercept_errors on;
proxy_buffering off;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /bucket-01/ {
proxy_pass http://127.0.0.1:9000;
}
}
4.2 文件无法下载
因为上面只转发 9001 端口的流量,而 9000 端口数据服务没有转发,所以添加三行配置
location /bucket-01/ {
proxy_pass http://127.0.0.1:9000;
}
完美解决!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于