推荐:一款分布式的对象存储服务
最近公司在准备内部数据上云,并且内部数据库每天的数据量很大,需要采用大数据存储的方案。
方案调研
每个程序技术在实现之前,需要进行开源产品的调研,适合自己产品的技术方案才是最好的。
需求
我们需要处理是图像信息,大小在1M左右。
供以后各个项目组用来拉取图像。
自定义了一个按照标准存储的一批图像,这批图像大小可能在几百兆或者小到几兆大小
技术选型
我们选取了两种技术方案
采用hdfs的集群存储的方案,将数据进行流读取,存储二进制文;将相关的文件内容进行整合成一个大文件存储到hdfs上。
另外一个技术方案采用的是minio,分布式存储方案。
今天要给大家介绍的是minio技术方案。
Minio
什么是Minio
minio 是一款开源的对象存储服务。可以兼容亚马逊的S3存储服务接口,非常适合存储大容量的非结构化数据。
这些非结构化数据包含 图片,视频,日志文件,备份数据和容器、虚拟机镜像。
对象文件大小可以从几kb到最大5T.
我们可以用来做什么
企业上我们可以利用其分布式的功能,内部搭建图片处理服务器,文件存储服务器,公司内部的文件存储服务器,这样就不用限制存储的大小,也不限制存储位置。
我们个人可以直接在家庭内部搭建个人的云盘服务,开心的保存家里面的数据文件,再也不担心数据丢失的问题了。
怎么安装
Minio 分布式对象存储,在官网提供了很多的技术选择方案。
根据图中有5种不同的方案,让我们进行选择,可以使用docker 单机部署,也可以采用Docker-compose进行部署伪分布式。 可以使用Docker Swarm 和 k8s 部署分布式架构的选型。
因为是测试阶段,所以采用的是伪分布式的构建方式。使用docker-compose 方式进行部署。
部署
docker-compose 部署方案,我们需要进行安装docker 与docker-compose ,这个在docker文档中都有,可以参考docker-compose官网。为了方便小伙伴进行学习,简单流程安装给大小说下。
安装docker
centos yum 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 --version docker-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 。这个两个内容的值在我们配置文件中已存在,直接查看配置文件内容然后填写
浏览器页面展示:
出现以上界面就代表我们安装成功了
使用
进入界面后我们需要先点击右下角的加号,然后创建文件目录,我们的图像是存储在文件目录下的。
结束
这样我们的一个分布式系统就搭建完成了,怎么样是不是很简单?嘿嘿。
总结
分布式文件系统存储,是我们搭建开始的第一步,后面性能问题,存储压力都是我们需要面临的。做好准备工作才能更好的服务我们的产品。
原文发布时间为:2018-12-20
本文作者: 琪琪
本文来自云栖社区合作伙伴“ LuckQI”,了解相关信息可以关注“LuckQI”微信公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Kubernetes 实战教学,手把手教您设置拥有5个节点的 K8S 群集(无需搭建任何基础设施)
出品丨Docker公司(ID:docker-cn)编译丨小东每周一、三、五,与您不见不散! 您是 Kubernetes新手吗?想用 Kubernetes 开创自己的事业吗?如果想,那么欢迎您,您来对地方了。本系列文章将为您提供帮助您使用 Kubernetes 获得实践经验的教程。在这里,您可以找到各种实验和教程,无论您是初学者、系统管理员、IT 专业人员还是开发人员,都可以为您提供帮助。而且,这是一个基于浏览器的免费学习平台,已经为您安装了 kubenetes 工具,如kubeadm、kompose 和 kubectl,您不需要额外增加任何基础设施,因为大多数教程都在 Play with K8s Platform 上(https://labs.play-with-k8s.com)运行。 Kubernetes(通常缩写为K8S)用于管理云平台中多个主机上的容器化的应用。Kubernetes 是自动化容器操作的开源平台,这些操作包括部署、调度和节点集群间扩展。在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理...
- 下一篇
KubeCon2018 -- Secret Management Deep Dive
在刚刚过去的Kubecon2018上,诸多大厂的安全专家为我们带来了很多kubernetes安全相关的精彩分享,议题包含集群权限控制,安全配置,漏洞分析等多个方向,其中secret management作为一个热点topic,有多位演讲者对其相关工作做了详尽分析。 什么是Secret? 连接是一个应用系统的灵魂,无论是人机或是机机之间的通讯,都会包含一些敏感信息用于我们常说的认证和鉴权,比如用户相关的用户名密码,配置文件中的数据库连接凭证,一个请求的API token,TLS证书等,这些都属于Secret的范畴。Google的安全工程师给了Secret一个很好的定义: Credentials, configurations, API keys, and other small bits of information needed
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Redis,开启缓存,提高访问速度