python分布式对象存储_推荐:一款分布式的对象存储服务
最近公司在準備內部數據上云,并且內部數據庫每天的數據量很大,需要采用大數據存儲的方案。
方案調研
每個程序技術在實現之前,需要進行開源產品的調研,適合自己產品的技術方案才是最好的。
需求
我們需要處理是圖像信息,大小在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”微信公眾號
總結
以上是生活随笔為你收集整理的python分布式对象存储_推荐:一款分布式的对象存储服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python zipfile 乱码_py
- 下一篇: navicat mysql 远程_Nav