原创 

MinIO 分布式存储方案+nginx 部署实施 问题与坑

分类:运维    5623人阅读    IT小君  2020-10-17 16:12

介绍:

    MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。


下载:

官网下载:https://docs.min.io/cn/minio-quickstart-guide.html (神卡

本站下载:MinIO window 服务端和客户端(mc)&linux服务器端


部署(以centos为例)

将下载文件上传服务器,使用如下命令启动:

/opt/minio server /var/upload

启动会提示修改默认用户名和密码(默认为:minioadmin/minioadmin)

启动后使用 curl localhost:9000 查看 如果返回html服务启动成功


nginx集成:

添加如下配置:

server {
 listen 80;
 server_name example.com;#改成你自己的

 # To allow special characters in headers
 ignore_invalid_headers off;
 # Allow any size file to be uploaded.
 # Set to a value such as 1000m; to restrict file size to a specific value
 client_max_body_size 0;
 # To disable buffering
 proxy_buffering off;

 location / {
    #这几个头设置很重要丢失了会报错,见后面坑分析
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header X-Forwarded-Proto $scheme;
   proxy_set_header Host $http_host;

   proxy_connect_timeout 300;
   # Default is HTTP/1, keepalive is only enabled in HTTP/1.1
   proxy_http_version 1.1;
   proxy_set_header Connection "";
   chunked_transfer_encoding off;

   proxy_pass http://localhost:9000; #改成你自己的
 }
}

如果使用分享连接功能可以添加如下配置:

location /photos/ {
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header X-Forwarded-Proto $scheme;
   proxy_set_header Host $http_host;

   proxy_connect_timeout 300;
   # Default is HTTP/1, keepalive is only enabled in HTTP/1.1
   proxy_http_version 1.1;
   proxy_set_header Connection "";
   chunked_transfer_encoding off;

   proxy_pass http://localhost:9000;
 }


坑:

报错:The request signature we calculated does not match the signature you provided.

1、使用 mc config host add damon_server http://your.fileserver.address Damon *** AWS15 --api s3v4

     报错:The request signature we calculated does not match the signature you provided.

     原因:nginx代理没有设置 proxy_set_header 导致头信息丢失,参考上述配置修改

     临时方案 ,使用 mc config host add damon_server http://your.fileserver.address Damon *** AWS15 --api s3v2

      连接,因为签名 s3v4 是严格模式 ,s3v2 不是 

2、生成分享连接报错 The request signature we calculated does not match the signature you provided.

    原因1:同上

    原因2:生成分享连接连接服务器时使用的服务器地址和分享链接不一致(minio会校验连接host)

                比如,小编文件服务起和应用服务器在同一台主机,于是使用如下代码(python)生成连接

def makeShareUrl(fileName):
    try:
        minioClient = Minio('localhost:9000',
                            access_key='you guess',
                            secret_key='you guess',
                            secure=False)
        return minioClient.presigned_get_object('resource', fileName, expires=timedelta(hours=6))
    except Exception as e:
        print(str(e))
    return None

然后将地址改成外网地址,一直报错

应该在连接也是用外网地址,如下:

def makeShareUrl(fileName):
    try:
        minioClient = Minio('yy123.ink',
                            access_key='you guess',
                            secret_key='you guess',
                            secure=False)
        return minioClient.presigned_get_object('resource', fileName, expires=timedelta(hours=6))
    except Exception as e:
        print(str(e))
    return None
3、配置文件位置

    官网说默认配置文件在用户目录~/.minio/config.json其实是在的文文件存放目录 /文件存放路径/.minio.sys/config/config.json 中

点击广告,支持我们为你提供更好的服务

中小型创意设计服务公司网站模板

js+css3抽奖转盘旋转点餐代码

响应式太阳能能源公司网站模板

HTML5现代家居装潢公司网站模板

HTML5数字产品服务公司网站模板

html5 svg夜空中星星流星动画场景特效

html5图标下拉搜索框自动匹配代码

css+js实现的颜色渐变数字时钟动画特效

响应式时尚单品在线商城网站模板

现代时尚家具公司网站模板

HTML5 Canvas竖直流动线条背景动画特效

小众时尚单品在线电子商务网站模板

响应式咖啡饮品宣传网站模板

css鼠标跟随文字模糊特效

jQuery右端悬浮带返回顶部特效

有机水果蔬菜HTML5网站模板

html5 canvas彩色碎片组合球形旋转动画特效

html5 canvas进度条圆环图表统计动画特效

网页设计开发公司网站模板

canvas炫酷鼠标移动文字粒子特效

点击广告,支持我们为你提供更好的服务
 工具推荐 更多»
点击广告,支持我们为你提供更好的服务