博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
推荐:一款分布式的对象存储服务
阅读量:6944 次
发布时间:2019-06-27

本文共 4798 字,大约阅读时间需要 15 分钟。

最近公司在准备内部数据上云,并且内部数据库每天的数据量很大,需要采用大数据存储的方案。

方案调研

每个程序技术在实现之前,需要进行开源产品的调研,适合自己产品的技术方案才是最好的。

需求

我们需要处理是图像信息,大小在1M左右。

供以后各个项目组用来拉取图像。

自定义了一个按照标准存储的一批图像,这批图像大小可能在几百兆或者小到几兆大小

技术选型

我们选取了两种技术方案

采用hdfs的集群存储的方案,将数据进行流读取,存储二进制文;将相关的文件内容进行整合成一个大文件存储到hdfs上。

另外一个技术方案采用的是minio,分布式存储方案。

今天要给大家介绍的是minio技术方案。

Minio

什么是Minio
minio 是一款开源的对象存储服务。可以兼容亚马逊的S3存储服务接口,非常适合存储大容量的非结构化数据。

这些非结构化数据包含 图片,视频,日志文件,备份数据和容器、虚拟机镜像。

对象文件大小可以从几kb到最大5T.

我们可以用来做什么

企业上我们可以利用其分布式的功能,内部搭建图片处理服务器,文件存储服务器,公司内部的文件存储服务器,这样就不用限制存储的大小,也不限制存储位置。

我们个人可以直接在家庭内部搭建个人的云盘服务,开心的保存家里面的数据文件,再也不担心数据丢失的问题了。

怎么安装

Minio 分布式对象存储,在官网提供了很多的技术选择方案。

image

根据图中有5种不同的方案,让我们进行选择,可以使用docker 单机部署,也可以采用Docker-compose进行部署伪分布式。 可以使用Docker Swarm 和 k8s 部署分布式架构的选型。

因为是测试阶段,所以采用的是伪分布式的构建方式。使用docker-compose 方式进行部署。

部署

docker-compose 部署方案,我们需要进行安装docker 与docker-compose ,这个在docker文档中都有,可以参考docker-compose官网。为了方便小伙伴进行学习,简单流程安装给大小说下。

安装docker

centosyum install docker ubuntu apt-get install docker.io

安装docker-compose

sudo curl -L"https://github.com/docker/compose/releases/download/1.23.1/ocker-compose-$(uname -s)-$(uname -m)"-o /usr/local/bin/docker-compose执行下权限操作sudo chmod +x /usr/local/bin/docker-compose检验下版本是否是正确的docker-compose --versiondocker-compose version 1.23.1, build 1719ceb

以上步骤操作成功后,我们就可以安装minio 来进行实战演练了。

下载docker-compose.yaml文件

version: '2'# starts 4 docker containers running minio server instances. Each# minio server's web interface will be accessible on the host at port# 9001 through 9004.services: minio1:  image: minio/minio:RELEASE.2018-12-19T23-46-24Z  volumes:   - data1:/data    ports:- "9001:9000"  environment:   MINIO_ACCESS_KEY: minio   MINIO_SECRET_KEY: minio123  command: server http://minio1/data http://minio2/datahttp://minio3/data http://minio4/data  minio2:  image: minio/minio:RELEASE.2018-12-19T23-46-24Z  volumes:  - data2:/data  ports:   - "9002:9000"  environment:   MINIO_ACCESS_KEY: minio   MINIO_SECRET_KEY: minio123  command: server http://minio1/data http://minio2/data http://minio3/data http://minio4/data  minio3:  image: minio/minio:RELEASE.2018-12-19T23-46-24Z  volumes:   - data3:/data  ports:   - "9003:9000"  environment:   MINIO_ACCESS_KEY: minio   MINIO_SECRET_KEY: minio123  command: server http://minio1/data http://minio2/data http://minio3/datahttp://minio4/data  minio4:  image: minio/minio:RELEASE.2018-12-19T23-46-24Z  volumes:   - data4:/data  ports:   - "9004:9000"  environment:   MINIO_ACCESS_KEY: minio   MINIO_SECRET_KEY: minio123  command: server http://minio1/data http://minio2/data http://minio3/data http://minio4/data ## By default this config uses default local driver,## For custom volumes replace with volume driver configuration.volumes:  data1:  data2:  data3:  data4:

在上面我们需要注意两点。

volumes 全局:如果我们不进行配置的话,使用的是默认的路径文件。

在这里向找到相关的存储的文件内容我们可以使用docker inspect 镜像id 来查看。

不配置全局:我们每个镜像id配置一个路径那么我们需要改下文件配置文件

version: '2'# starts 4 docker containers running minio server instances. Each# minio server's web interface will be accessible on the host at port# 9001 through 9004.services: minio1:  image: minio/minio:RELEASE.2018-12-19T23-46-24Z  volumes:   - /media/data1:/data:z    ports:   - "9001:9000"  environment:   MINIO_ACCESS_KEY:minio   MINIO_SECRET_KEY: minio123  command: server http://minio1/data http://minio2/data http://minio3/data http://minio4/data  minio2:  image: minio/minio:RELEASE.2018-12-19T23-46-24Z  volumes:   - /meida/data2:/data:z  ports:-"9002:9000"  environment:   MINIO_ACCESS_KEY: minio   MINIO_SECRET_KEY: minio123  command: server http://minio1/data http://minio2/data http://minio3/data http://minio4/data  minio3:  image: minio/minio:RELEASE.2018-12-19T23-46-24Z  volumes:   -/media/data3:/data:z  ports:   - "9003:9000"  environment:   MINIO_ACCESS_KEY: minio   MINIO_SECRET_KEY: minio123  command: server http://minio1/data http://minio2/data http://minio3/datahttp://minio4/data  minio4:  image: minio/minio:RELEASE.2018-12-19T23-46-24Z  volumes:   - /media/data4:/data:z  ports:   -"9004:9000"  environment:   MINIO_ACCESS_KEY: minio   MINIO_SECRET_KEY: minio123  command: server http://minio1/data http://minio2/datahttp://minio3/data http://minio4/data

在这个文件中,我们主要做了两项修改:

/media/data1:/data ,我们将data里面的数据映射到media/data1本地目录下。

在:/data 后面增加:z ,这个是为了解决权限问题所增加的。

权限问题是这样的,在我们后面加上:z 就是我们就可以启动成功了 ERROR Unable to initialize posix backend: Unable to write to the backend.minio3_1_2ce510efd213 |       > Please ensure Minio binary has write permissions for the backend

启动

首先拉取镜像docker-compose pull镜像启动docker-compose up如果没有出现错误,那么我们程序就启动成功了

浏览器查看

ip:9001访问,第一次登陆我们需要填写ACCESS_KEY 与SECRET_KEY 。这个两个内容的值在我们配置文件中已存在,直接查看配置文件内容然后填写

浏览器页面展示:

image
image
出现以上界面就代表我们安装成功了

使用

进入界面后我们需要先点击右下角的加号,然后创建文件目录,我们的图像是存储在文件目录下的。

image
结束

这样我们的一个分布式系统就搭建完成了,怎么样是不是很简单?嘿嘿。

总结

分布式文件系统存储,是我们搭建开始的第一步,后面性能问题,存储压力都是我们需要面临的。做好准备工作才能更好的服务我们的产品。

原文发布时间为:2018-12-20

本文作者: 琪琪
本文来自云栖社区合作伙伴“ ”,了解相关信息可以关注“LuckQI”微信公众号

转载地址:http://ewonl.baihongyu.com/

你可能感兴趣的文章
雷电android game学习笔记(1)
查看>>
【转】iOS 6版本与之前版本差异总结
查看>>
极限编程(XP)基本原则与规范
查看>>
Angularjs Controller间通信的几种方法
查看>>
10个步骤让你成为高效的Web开发者
查看>>
深度学习-栈式自编码算法
查看>>
精益设计: 设计团队如何改善用户体验
查看>>
一起谈.NET技术,VS2010技巧:如何在js文件中使用jQuery智能感知
查看>>
计算机病毒中心:大量存在漏洞的Web网站被挂马
查看>>
python mock基本使用
查看>>
RapidJSON v1.1.0 发布简介
查看>>
sata硬盘id
查看>>
简单方法恢复linux以及windows启动引导
查看>>
[转]字符集编码常识
查看>>
Spring 3 MVC Registration Form Example
查看>>
2016第4周日
查看>>
[转]How do I use variables in Oracle SQL Developer?
查看>>
win 7 IIS 配置
查看>>
Angular2入门:TypeScript的类型 - 类型、null、undefined
查看>>
STATIC变量问题
查看>>