① 【Minio】基于AWS S3协议搭建个人云存储服务
在2007年,GlusterFS演变为大型分布式存储方案后,任何配备合适硬件的公司,单位都可以利用个做分布式的流媒体,数据分析。在2011年,Red Hat收购了GlusterFS.
Minio是GlusterFS创始人之一Anand Babu Periasamy发野芹族布新的开源项目。Minio兼容Amason的S3分布式对象存储项目,采用Golang实现,客户端支持java,python,Javacript, Golang语言。
Minio 提供对象存颂弊储服务,兼容了 AWS S3 存储协议,用于非结构化的数据存。非结构化对象,比如图像,音、视频,日志文件,备份镜像…等等管理不方便,不定长,大小变化大、类型多,云端的访问复杂,minio就是来解决这种场景的。非结构化的文件从数KB到5TB都能很好的支持。开源并且用 Go 语言开发,有web操作界面,我们可以用它来搭建兼容S3协议的存储云服务。
Minio可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,linux, OS X和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来。
官网: https://minio.io
那么,如何自己搭建一个私有的S3存储云服务呢?
官方的话是首大推荐用Docker来搞,我们先用普通的二进制文件来直接解决了!
######################################################################################
# mkdir /data/aws_s3
# wget https://dl.minio.io/server/minio/release/linux-amd64/minio
# mv minio /usr/local/bin/
# chmod 755 /usr/local/bin/minio
# minio server /data/aws_s3
#############################################################
Created minio configuration file successfully at /root/.minio
Endpoint: http://10.5.10.89:9000 http://127.0.0.1:9000 http://172.17.0.1:9000
AccessKey: U3XLU4IMXY3IDKHU268F
SecretKey: /
Region: us-east-1
SQS ARNs:
Browser Access:
http://10.5.10.89:9000 http://127.0.0.1:9000 http://172.17.0.1:9000
Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide
################################################################
$ mc config host add myminio http://10.5.10.89:9000 U3XLU4IMXY3IDKHU268F /
Object API (Amazon S3 compatible):
Go: https://docs.minio.io/docs/golang-client-quickstart-guide
Java: https://docs.minio.io/docs/java-client-quickstart-guide
Python: https://docs.minio.io/docs/python-client-quickstart-guide
JavaScript: https://docs.minio.io/docs/javascript-client-quickstart-guide
Drive Capacity: 8.3 GiB Free, 9.1 GiB Total
##############################################################
我们就成功启动了minio的s3服务,默认端口9000,可以通过网页访问:
http://10.5.10.89:9000
http://127.0.0.1:9000
http://172.17.0.1:9000
注意 :第一次打开时候需要填写AccessKey和SecretKey才能进入,我们上面启动服务的时候,已经看到屏幕有输出:
AccessKey: U3XLU4IMXY3IDKHU268F
SecretKey:
把这两个Key填入,就能顺利进入,进入后展开页面如下:
这就是我们的S3云存储的管理页面了,看着是不是和七牛什么的提供云存储的产品页面挺像的,大家都是基于S3协议开发的!
上传个文件试试:
点击右下角的红色小加号按钮,弹出的菜单选择”create bucket”则会创建一个桶,输入名字”test”
点击刚才那个红色小加号按钮,这次选择”Upload file”上传文件,给这个桶上传了一个叫login.txt的文本文档
此时页面如下:
至此我们可以看到文件已经上传,要访问这个文件,可以点击文件右侧的三个点的按钮,选择分享就可以得到一个外链,在浏览器中访问这个外链就可以直接访问文件。
那么文件到底被存到哪里去了呢,我们启动命令中其实指定了工作路径/data/aws_s3/,所以到服务器这个目录下看看:
# ls /data/aws_s3/
test
# ls /data/aws_s3/test/
login.txt
桶名称test是一个目录,其下就有上传的login.txt文件。
如果想指定ip和端口,可以这样写:
# minio server /data/aws_s3 --address=0.0.0.0:9000
如果想让服务在后台运行:
# nohup minio server /data/aws_s3 --address=0.0.0.0:443 &
[1] 19882
// nohup: 忽略输入并把输出追加到启动命令的当前目录下的 "nohup.out"文件
minio可以用来搭建分布式存储系统 GlusterFS,这样就成了真正的云存储了,有时间再研究下把它从现在的单机测试,变成一朵存储云!
minio官网: https://minio.io
minio官方文档: https://docs.minio.io/docs/minio-docker-quickstart-guide
minio github主页: https://github.com/minio/minio
② 如何搭建私有云存储
虚拟化技术在企业私有云IT基础架构中仍然占据重要地位,同时,为了进一步提升应用效率,越来越多的生产环境也正在逐步变革,从以虚拟机为中心的架构向以容器和微服务为中心的云原生架构过渡,在这个过程中,存储如何有效支撑各种云主机应用与微服务应用,对于企业的私有云数据中心提出了新的挑战。
企业面临的问题
存储设施七国八制,硬件锁定缺少弹性
多种云平台对于存储的要求各不相同,块/文件/对象存储对应不同类型的应用,对外提供不同的服务接口,一种存储设备无法满足多种类型的云平台存储需求,而且传统存储在扩展性方面不能满足云时代大规模云平台对存储在线弹性扩容的需求,在可维护性方面则面临硬件架构绑定、运维复杂、难以维保等问题,而且这些问题会随着存储设备种类和数量的增多进一步放大。
业务调度变更频繁,资源不能共享
随着开发测试虚拟机以及容器、微服务平台在企业私有云平台的上线,大型企业的应用快速迭代、频繁发布对存储系统的支撑提出了严峻挑战,不同业务的数据保存在不同厂商的存储设备中,数据流动性差,不仅导致存储空间及性能资源浪费严重,数据灾备方案也很难统一化。
开源产品难以维护,不能实现企业级产品化
基于开源虚拟化技术的云平台如OpenStack为众多客户提供了快速构建私有云基础设施的能力,但是存储部分却不一样,开源的存储系统如Ceph虽然可以小规模部署试用, 但在大规模商用时会遇到很多问题:与硬件和企业级应用生态融合程度不高,严重依赖人工开发运维,在性能和服务质量方面不能满足核心业务的需求
杉岩私有云存储解决方案
杉岩私有云存储解决方案充分发挥了杉岩统一存储平台(USP)的云适配、开放等优势,支持各种复杂的应用负载,可灵活支撑私有云的虚拟化平台,如VMware、Citrix、OpenStack等虚拟化和云平台,以及通过Kubernetes软件一致性认证的所有容器云平台,如:Rancher、Openshift、Kubernetes等。
通过杉岩统一存储平台,用户可快速构建能够兼容所有主流虚拟化平台与容器微服务平台的统一存储资源池,面对各种虚拟机和微服务需求,池化的存储平台为大规模云环境提供了可靠的存储基础架构支撑,帮助用户从纷繁复杂的基础架构运维工作中解放出来,更关注于私有云上运行的业务本身。
客户价值
资源整合,链接企业信息孤岛
单资源池提供块、文件、对象多种存储服务,支持虚拟化平台和数据库应用;强大的存储资源生命周期管理能力,跨云平台在线迁移数据,实现数据共享和提高资源利用率;存储卷QoS等级和性能优先级在线调整,可根据企业资源和业务需求合理配置资源。
开放兼容,适配多种私有云平台
通过VMware VAAI和Citrix Ready认证,针对主流虚拟化平台优化I/O性能,大幅提升虚拟机访问的性能。通过OpenStack Cinder认证,可提供块和对象存储基础架构支撑支持容器平台CSI接口认证,为Kubernetes生态的容器应用提供块和文件存储服务。
智能管理,解决规模化运维难题
向导式安装部署和自助扩容配置,极大提升易用性和可维护性,管理自动化降低运维成本;针对大规模集群优化的可靠性管理,检测和修复硬盘软错误的专利技术,节约用户硬件投资。存储视角的管理功能,可视化展示主机、容器与存储的映射关系和性能监控协助管理员快速定位和解决问题。
③ 通过K8S部署对象存储MinIO
MinIO 是全球领先的对象存储先锋,以 Apache License v2.0 发布的对象存储服务器,是为云应用和虚拟机而设计的分布式对象存储服务器。在标准硬件上,读/写速度上高达183GB/s和171GB/s。它与 Amazon S3 云存储服务兼容。 它最适用租察于存储非结构迅念化数据,如照片、视频、日志文件、备份和容器/虚拟机映像。 对象的大小可以从几KB 到最大5TB。
MinIO是一个非常轻量的服务,可以很简单的和其他应用的结弊昌茄合,类似 NodeJS, Redis 或者 MySQL。
MinIO支持多种灵活的部署方式,支持Docker Compose、Docker Swam、Kubernetes等,详见官网: https://docs.min.io/docs/minio-deployment-quickstart-guide.html 或者 https://min.io/download#/linux
这里着重介绍K8S下部署
1、standalone模式
由于service采用NodePort类型,通过主机IP:32593访问web
2、distributed模式
分布式部署,实例数至少4个,所以需要另外创建4个pv
④ 如何建立单位内部云存储服务器
看云存储的需求,是做云盘,做大文件存储,小文件存储,或者块读写等等。
开源系统就不少,自己建的话,省钱就用开源。
OpenStack里面有Swift,是一个对象存储,适合于存放比较小的,以对象为单位的文件。
SeaFile开源云存储系统平台是由国人开发的新一代的开源云存储系统软件,SeaFile提供丰富的文件同步和管理功能,搭个网盘是比较方便的。
还有GlusterFS,是一个集群的文件系统,支持 PB 级的数据量。
Ceph,分布式文件系统,支持作为块设备进行读写访问。
按照教程来,搭建起来不难。当然,要深入使用,解决生产运行中的各种坑,还是需要一定时间的积累的。
我们就是选择的Swift,然后在此基础上开发的文档管理系统。
⑤ 什么是对象存储
对象存储,也叫做基于对象的存储,是用来描述解决和处理离散单元的方法的通用术语,这些离散单元被称作为对象。
存储局域网(SAN)和网络附加存储(NAS)是目前两种主流网络存储架构,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device)简称OSD。1999年成立的全球网络存储工业协会(SNIA)的对象存储设备工作组发布了ANSI的X3T10标准。总体上来讲,对象存储综合了NAS和SAN的优点,同时具有SAN的高速直接访问和NAS的分布式数据共享等优势,提供了具有高性能、高可靠性、跨平台以及安全的数据共享的存储体系结构。