成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如合通過與Ceph的整合提升Docker存儲性能

云計算
存儲問題是將Docker應用于生產(chǎn)環(huán)境中的備受關注的話題之一,這篇文章拋磚引玉,必將激發(fā)廣大開源和Docker技術愛好者探究現(xiàn)有存儲方案與Docker相整合的熱情。

 【原文編者的話】

Ceph是開源社區(qū)深受歡迎的存儲方案,具有穩(wěn)定性高、性能好、可擴展性強等特點。原作者的這篇文章展示并探討了如何將Ceph運行在Docker上,無疑為Docker生態(tài)系統(tǒng)的完善邁出了重要一步。存儲問題是將Docker應用于生產(chǎn)環(huán)境中的備受關注的話題之一,這篇文章拋磚引玉,必將激發(fā)廣大開源和Docker技術愛好者探究現(xiàn)有存儲方案與Docker相整合的熱情。

Ceph是一個完全開源的分布式存儲方案、網(wǎng)絡塊設備以及文件系統(tǒng),具有高穩(wěn)定性、高性能、高擴展性等特點,可應對terabyte到exabyte級別的數(shù)據(jù)量。通過使用創(chuàng)新性的調(diào)度算法(CRUSH)、主動存儲節(jié)點、以及peer-to-peer的gossip協(xié)議,Ceph規(guī)避了傳統(tǒng)集中控制和lookup table中的擴展性和可靠性問題。Ceph目前在整個開源社區(qū)中極受推崇,已被廣泛應用與虛擬化平臺(Proxmox)、云計算平臺(OpenStack、 CloudStack、OpenNebula)、容器技術(Docker)、以及大數(shù)據(jù)分析系統(tǒng)(Hadoop、作為HDFS的meted服務器)中。

我嘗試將Ceph運行在Docker中已經(jīng)快兩年了。直到今天我依然在做這些工作。最近我更是在Docker中部署Ceph方面投入了不小的精力。

(在展開技術細節(jié)前,我要特別感謝Sean C McCord對此工作的大力支持,當年的開源ceph-docker項目也的確是基于Sean的早期工作)

現(xiàn)在讓我們具體看看如何將Ceph運行在Docker里!

原理

將Ceph運行在Docker中是一個比較有爭議的話題,不少人質疑這樣操作的意義。雖然將檢測模塊、metadata服務器、以及RADOS gateway容器化都沒有太大問題,但對于OSD(object storage daemon),事情會變得很棘手。Ceph的OSD專門針對物理機器進行優(yōu)化,與底層硬件有很多關聯(lián)。如果物理硬盤失效,OSD也無法運作,這給容器化的場景帶來了問題。

坦白地講,在過去某個時刻我也在想:

“我不知道自己為什么做這個,我只知道有人需要這個功能(當然,他們可能也不知道為什么想要)。我只是覺得想進行技術嘗試,那就試試看!”

當然上述想法聽起來并不樂觀,但這確實是我當時真實的想法。我的觀點隨后有了一些變化,我來解釋下為什么是值得的。希望這個解釋也能改變你的看法(我的解釋不僅僅是“Docker很酷,所以我們要把所有東西都跑在Docker里!”)。

不少開發(fā)者已經(jīng)花了很多時間將他們的軟件容器化。在這個過程中,他們也用過多種不同的工具來構建和管理他們的環(huán)境。如果我看到有人用Kubernetes來作為管理工具也一點都不會吃驚。有的人就喜歡將***潮的技術應用到生產(chǎn)當中,否則他們會覺得工作很無聊。所以當他們看到自己最喜歡的開源存儲方案也正在被容器化時,他們會因為這個順應了“一切容器化”的方式而感到高興。

與傳統(tǒng)的yum或apt-get不同,容器使得軟件的升級和回卷變得容易:我們可以通過docker stop或者docker run來發(fā)布新的daemons版本。我們甚至可以在一臺物理機器上運行多個相互隔離的集群。這些都為開發(fā)過程提供了極大的便利。

項目

如上所述,所有的工作都基于Sean C McCord的早期貢獻,我們后來都在圍繞他的工作做完善。現(xiàn)在如果你用ceph-docker,你可以將每個單一的Ceph daemon運行在Ubuntu或CentOS上。我們在Docker Hub里有很多的鏡像,我們使用Ceph的命名空間,因此我們的鏡像前綴都是ceph/<daemon>。我們使用了自動構建,因此每次我們整合一個新的補丁就會觸發(fā)新的構建,從而生成一個新的容器鏡像。由于我們現(xiàn)在在從事代碼重構,你會看到有很多的鏡像版本。一直以來我們對每一個daemon構建一個單獨的鏡像(我們整合這些補丁的時候都會這樣做)。所以監(jiān)測、OSD、mds和radosgw各自都有獨立的鏡像。這個并不是最理想的方案,因此我們在嘗試將所有組件都整合到一個叫做daemon的鏡像中。這個鏡像包含了所有的模塊,你可以在運行docker run的時候通過命令行選擇性地激活不同模塊。如果你想試用我們的鏡像,我們推薦使用ceph/daemon鏡像。下面我就舉例說明如何運行。

器化Ceph

監(jiān)測

由于監(jiān)測模塊不能在NAT過的網(wǎng)絡中進行通信,我們必須使用 --net=host來將主機的網(wǎng)絡層開放給容器:

  1. $ sudo docker run -d --net=host \ 
  2. -v /etc/ceph:/etc/ceph \ 
  3. -v /var/lib/ceph/:/var/lib/ceph \ 
  4. -e MON_IP=192.168.0.20 \ 
  5. -e CEPH_PUBLIC_NETWORK=192.168.0.0/24 \ 
  6. ceph/daemon mon 

你可以配置如下選項:

  • MON_IP是運行Docker的主機IP
  • MON_NAME是你監(jiān)測模塊的名稱(默認為$(hostname))
  • CEPH_PUBLIC_NETWORK是運行Docker的主機的CIDR。它和MON_IP必須是同一個網(wǎng)絡。
  • CEPH_CLUSTER_NETWORK是運行Docker的主機的備用網(wǎng)口的CIDR,為OSD的備份流量使用。

Object Storage Daemon

我們現(xiàn)在能實現(xiàn)允許每一個OSD進程運行在一個獨立的容器里。按照微服務的理念,一個容器里不應該運行超過一個服務。而在我們這里,在同一個容器里運行多個OSD進程,打破了這一理念,當然這也會給系統(tǒng)的配置和維護帶來額外的復雜度。

在這樣的配置下,我們必須使用--privileged=true來使得容器中的進程可以訪問/dev等其他內(nèi)核功能。然后,我們在開放OSD的目錄的基礎上也支持其他配置,開放OSD的目錄可以讓operators來對設備做合適的準備工作。這樣我們就可以簡單地開放OSD目錄,配置OSD(ceph-osd mkfs)的工作就會通過Entry Point來完成。我下面介紹的配置方法是最簡單的,因為它只需要你指定一個block device,剩下的事情都會由Entry Point完成。

如果不想用--privileged=true可以采用我的第二個例子。

  1. $ sudo docker run -d --net=host \ 
  2. --privileged=true \ 
  3. -v /etc/ceph:/etc/ceph \ 
  4. -v /var/lib/ceph/:/var/lib/ceph \ 
  5. -v /dev/:/dev/ \ 
  6. -e OSD_DEVICE=/dev/vdd \ 
  7. ceph-daemon osd_ceph_disk 

如果你不想使用--privileged=true,你也可以使用你喜歡的配置管理工具來手動配置OSD。

#p#

下面這個例子我假定你已經(jīng)實現(xiàn)分區(qū)并配置好文件系統(tǒng)。運行下面的命令來生成你的OSD:

$ sudo docker exec <mon-container-id> ceph osd create.

然后運行你的容器:

  1. docker run -v /osds/1:/var/lib/ceph/osd/ceph-1 -v /osds/2:/var/lib/ceph/osd/ceph-2 
  2. $ sudo docker run -d --net=host \ 
  3. -v /etc/ceph:/etc/ceph \ 
  4. -v /var/lib/ceph/:/var/lib/ceph \ 
  5. -v /osds/1:/var/lib/ceph/osd/ceph-1 \ 
  6. ceph-daemon osd_disk_directory 

可配置的選項如下:

  • OSD_DEVICE i是OSD設備,例如:/dev/sdb
  • OSD_JOURNAL使用來儲存OSD journal的設備,例如:/dev/sdz
  • HOSTNAME是運行OSD的主機(默認為$(hostname)
  • OSD_FORCE_ZAP會強制將制定的設備內(nèi)容zapping(默認為 0,設為1去開啟)
  • OSD_JOURNAL_SIZE是OSD journal的大?。J為 100)

Metadata 服務器

這個組件的設置較為直觀。唯一需要注意的地方是在Docker中我們可以訪問Ceph管理員密鑰。這個密鑰會用來生成CephFS pools和文件系統(tǒng)。

如果你運行0.87以前的Ceph版本,你就不需要做此配置,然而我們***運行***的版本! 

  1. $ sudo docker run -d --net=host \ 
  2. -v /var/lib/ceph/:/var/lib/ceph \ 
  3. -v /etc/ceph:/etc/ceph \ 
  4. -e CEPHFS_CREATE=1 \ 
  5. ceph-daemon mds 

可配置的選項如下:

  • MDS_NAME是Metadata服務器的名字(默認為mds-$(hostname))。
  • CEPHFS_CREATE會為Metadata服務器生成文件系統(tǒng)(默認為0,設為1 去開啟)。
  • CEPHFS_NAME是Metadata文件系統(tǒng)的名字(默認為cephfs)。
  • CEPHFS_DATA_POOL是Metadata服務器data pool的名字(默認為cephfs_data)。
  • CEPHFS_DATA_POOL_PG是data pool的placement groups的數(shù)量 (默認為8)。
  • CEPHFS_DATA_POOL是Metadata服務器metadata pool的名字(默認為cephfs_metadata)。
  • CEPHFS_METADATA_POOL_PG是metadata pool的placement groups的數(shù)量(默認為 8)。

RADOS gateway

我們部署RADOS gateway時默認開啟civetweb。當然,我們也可以通過指定地址和端口來使用不同的CGI前端: 

  1. $ sudo docker run -d --net=host \ 
  2. -v /var/lib/ceph/:/var/lib/ceph \ 
  3. -v /etc/ceph:/etc/ceph \ 
  4. ceph-daemon rgw 

可配置的選項如下:

  • RGW_REMOTE_CGI指定是否使用嵌入的web服務器(默認為0,設為1去關閉)。
  • RGW_REMOTE_CGI_HOST指定運行CGI進程的遠程主機。
  • RGW_REMOTE_CGI_PORT是運行CGI進行的遠程主機端口。
  • RGW_CIVETWEB_PORT是civetweb的監(jiān)聽端口(默認為80)。
  • RGW_NAME是RADOS gateway實例的名字(默認為$(hostname))。

后續(xù)工作

后端配置存儲

在默認配置下,ceph.conf和所有的Ceph密鑰都會在監(jiān)測模塊啟動階段生成。這個過程假定了你必須在將集群擴展到多節(jié)點的時候去把這些配置傳送到所有節(jié)點上。這個操作并不靈活,我們希望去改善它。我馬上要提出的一個方案就是利用Ansible來生成這些配置文件和密碼,并將他們安裝到所有機器上。

另一種方法是將所有的配置信息存儲到不同的后端服務器上,例如etcd或consul。

部署管理

最直觀的方案是使用現(xiàn)成的ceph-ansible,雖然我還需要做一些變動,但主體工作已經(jīng)完成。另一種方案是使用Kubernetes,他們的預覽版本已經(jīng)發(fā)布。

支持Rocket等其他容器技術

也不需要做什么,因為你可以直接將你的Docker鏡像運送到Rocket里,然后運行。

原文鏈接:http://www.dockone.io/article/558

責任編輯:Ophira 來源: dockone
相關推薦

2021-05-06 21:26:00

BcacheCeph存儲

2020-09-08 08:15:26

存儲Ceph性能

2010-09-08 13:35:59

2015-07-09 13:19:17

Ceph分布式存儲性能調(diào)優(yōu)

2009-05-11 14:46:32

MySQL分區(qū)提升性能

2017-06-13 09:42:31

英特爾Ceph

2021-03-24 08:03:50

存儲Ceph運維

2025-04-16 08:01:05

Ceph對象存儲

2012-06-12 09:46:20

虛擬化

2024-10-28 08:26:55

SpringAI語言模型1. 多模型

2023-06-07 17:21:43

大數(shù)據(jù)低延遲分析

2013-09-05 09:48:44

網(wǎng)卡選項網(wǎng)絡性能關鍵服務器

2024-09-19 08:09:37

MySQL索引數(shù)據(jù)庫

2024-10-28 13:31:33

性能@Async應用

2012-09-28 16:21:26

2023-08-31 19:17:23

2014-07-04 09:58:15

gemsRails

2013-05-22 09:38:03

GoGo語言Go性能

2023-02-16 08:03:01

開源Kubernetes

2016-02-01 18:13:55

存儲華為
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产免费一区二区 | 国产精品一区二区久久 | 精品久久一区二区三区 | 99久久久无码国产精品 | 天天拍天天草 | 99免费在线| 亚洲高清视频在线观看 | 久久久久电影 | 综合久| 国产精品久久久久久久久久久新郎 | 美女激情av | 瑟瑟免费视频 | 久久久久se | 九九热在线观看视频 | 亚洲一区二区电影在线观看 | 啪视频在线| 色在线视频网站 | 浴室洗澡偷拍一区二区 | 日本高清中文字幕 | 国产特级毛片 | 午夜影院官网 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 91精品国产美女在线观看 | 成人性视频免费网站 | 日韩国产一区二区 | 久久精品一级 | 伊人春色成人 | 精品久久久久久久久久 | h片在线播放 | 9191成人精品久久 | 成人免费看黄网站在线观看 | 7777精品伊人久久精品影视 | 自拍视频网 | 在线免费看91 | 欧美精品一二三区 | 亚洲成人av在线播放 | 日韩在线免费视频 | 天天插天天狠天天透 | 亚洲日韩第一页 | 91久久精品一区二区三区 | 欧美日韩精品专区 |