『壹』 ⑩ OpenStack高可用集群部署方案(train版)—OpenStack對接Ceph存儲
參考Ceph官方安裝文檔
Openstack環境中,數據存儲可分為臨時性存儲與永久性存儲。
臨時性存儲:主要由本地文件系統提供,並主要用於nova虛擬機的本地系統與臨時數據盤,以及存儲glance上傳的系統鏡像;
永久性存儲:主要由cinder提供的塊存儲與swift提供的對象存儲構成,以cinder提供的塊存儲應用最為廣泛,塊存儲通常以雲盤的形式掛載到虛擬機中使用。
Openstack中需要進行數據存儲的三大項目主要是nova項目(虛擬機鏡像文件),glance項目(共用模版鏡像)與cinder項目(塊存儲)。
下圖為cinder,glance與nova訪問ceph集群的邏輯圖:
ceph與openstack集成主要用到ceph的rbd服務,ceph底層為rados存儲集群,ceph通過librados庫實現對底層rados的訪問;
openstack各項目客戶端調用librbd,再由librbd調用librados訪問底層rados;
實際使用中,nova需要使用libvirtdriver驅動以通過libvirt與qemu調用librbd;cinder與glance可直接調用librbd;
寫入ceph集群的數據被條帶切分成多個object,object通過hash函數映射到pg(構成pg容器池pool),然後pg通過幾圈crush演算法近似均勻地映射到物理存儲設備osd(osd是基於文件系統的物理存儲設備,如xfs,ext4等)。
CEPH PG數量設置與詳細介紹
在創建池之前要設置一下每個OSD的最大PG 數量
PG PGP官方計算公式計算器
參數解釋:
依據參數使用公式計算新的 PG 的數目:
PG 總數= ((OSD總數*100)/最大副本數)/池數
3x100/3/3=33.33 ;舍入到2的N次幕為32
openstack集群作為ceph的客戶端;下面需要再openstack集群上進行ceph客戶端的環境配置
在openstack所有控制和計算節點安裝ceph Octopus源碼包,centos8有默認安裝,但是版本一定要跟連接的ceph版本一致
glance-api 服務運行在3個控制節點, 因此三台控制節點都必須安裝
cinder-volume 與 nova-compute 服務運行在3個計算(存儲)節點; 因此三台計算節點都必須安裝
將配置文件和密鑰復制到openstack集群各節點
配置文件就是生成的ceph.conf;而密鑰是 ceph.client.admin.keyring ,當使用ceph客戶端連接至ceph集群時需要使用的密默認密鑰,這里我們所有節點都要復制,命令如下
※Glance 作為openstack中鏡像服務,支持多種適配器,支持將鏡像存放到本地文件系統,http伺服器,ceph分布式文件系統,glusterfs和sleepdog等開源的分布式文件系統上。目前glance採用的是本地filesystem的方式存儲,存放在默認的路徑 /var/lib/glance/images 下,當把本地的文件系統修改為分布式的文件系統ceph之後,原本在系統中鏡像將無法使用,所以建議當前的鏡像刪除,部署好ceph之後,再統一上傳至ceph中存儲。
※Nova 負責虛擬機的生命周期管理,包括創建,刪除,重建,開機,關機,重啟,快照等,作為openstack的核心,nova負責IaaS中計算重要的職責,其中nova的存儲格外重要,默認情況下,nova將instance的數據存放在/var/lib/nova/instances/%UUID目錄下,使用本地的存儲空間。使用這種方式帶來的好處是:簡單,易實現,速度快,故障域在一個可控制的范圍內。然而,缺點也非常明顯:compute出故障,上面的虛擬機down機時間長,沒法快速恢復,此外,一些特性如熱遷移live-migration,虛擬機容災nova evacuate等高級特性,將無法使用,對於後期的雲平台建設,有明顯的缺陷。對接 Ceph 主要是希望將實例的系統磁碟文件儲存到 Ceph 集群中。與其說是對接 Nova,更准確來說是對接 QEMU-KVM/libvirt,因為 librbd 早已原生集成到其中。
※Cinder 為 OpenStack 提供卷服務,支持非常廣泛的後端存儲類型。對接 Ceph 後,Cinder 創建的 Volume 本質就是 Ceph RBD 的塊設備,當 Volume 被虛擬機掛載後,Libvirt 會以 rbd 協議的方式使用這些 Disk 設備。除了 cinder-volume 之後,Cinder 的 Backup 服務也可以對接 Ceph,將備份的 Image 以對象或塊設備的形式上傳到 Ceph 集群。
使用ceph的rbd介面,需要通過libvirt,所以需要在客戶端機器上安裝libvirt和qemu,關於ceph和openstack結合的結構如下,同時,在openstack中,需要用到存儲的地方有三個:
為 Glance、Nova、Cinder 創建專用的RBD Pools池
需要配置hosts解析文件,這里最開始已經配置完成,如未添加hosts解析需要進行配置
在cephnode01管理節點上操作 ;命名為:volumes,vms,images
記錄:刪除存儲池的操作
在cephnode01管理節點上操作 ;
針對pool設置許可權,pool名對應創建的pool
nova-compute與cinder-volume都部署在計算節點 ,不必重復操作,如果計算節點與存儲節點分離需要分別推送;
全部計算節點配置;以compute01節點為例;
Glance 為 OpenStack 提供鏡像及其元數據注冊服務,Glance 支持對接多種後端存儲。與 Ceph 完成對接後,Glance 上傳的 Image 會作為塊設備儲存在 Ceph 集群中。新版本的 Glance 也開始支持 enabled_backends 了,可以同時對接多個存儲提供商。
寫時復制技術(-on-write) :內核只為新生成的子進程創建虛擬空間結構,它們復制於父進程的虛擬空間結構,但是不為這些段分配物理內存,它們共享父進程的物理空間,當父子進程中有更改相應的段的行為發生時,再為子進程相應的段分配物理空間。寫時復制技術大大降低了進程對資源的浪費。
全部控制節點進行配置;以controller01節點為例;
只修改涉及glance集成ceph的相關配置
變更配置文件,重啟服務
ceph官網介紹 QEMU和塊設備
對接 Ceph 之後,通常會以 RAW 格式創建 Glance Image,而不再使用 QCOW2 格式,否則創建虛擬機時需要進行鏡像復制,沒有利用 Ceph RBD COW 的優秀特性。
總結
將openstack集群中的glance鏡像的數據存儲到ceph中是一種非常好的解決方案,既能夠保障鏡像數據的安全性,同時glance和nova在同個存儲池中,能夠基於-on-write(寫時復制)的方式快速創建虛擬機,能夠在秒級為單位實現vm的創建。
全部計算節點進行配置; 以compute01節點為例;只修改glance集成ceph的相關配置
全部計算節點重啟cinder-volume服務;
任意openstack控制節點上查看;
在任意控制節點為cinder的ceph後端存儲創建對應的type,在配置多存儲後端時可區分類型;
為ceph type設置擴展規格,鍵值 volume_backend_name ,value值 ceph
任意控制節點上創建一個1GB的卷 ;最後的數字1代表容量為1G
查看創建好的卷
openstack創建一個空白 Volume,Ceph相當於執行了以下指令
從鏡像創建 Volume 的時候應用了 Ceph RBD COW Clone 功能,這是通過 glance-api.conf [DEFAULT] show_image_direct_url = True 來開啟。這個配置項的作用是持久化 Image 的 location,此時 Glance RBD Driver 才可以通過 Image location 執行 Clone 操作。並且還會根據指定的 Volume Size 來調整 RBD Image 的 Size。
一直存在的cirros_qcow2鏡像為對接ceph之前的鏡像,現在已無法使用,所以將之刪除
在openstack上從鏡像創建一個Volume,Ceph相當於執行了以下指令
任意控制節點操作;
查看快照詳細信息
在openstack上對鏡像的卷創建快照,Ceph相當於執行了以下指令
如果說快照時一個時間機器,那麼備份就是一個異地的時間機器,它具有容災的含義。所以一般來說 Ceph Pool backup 應該與 Pool images、volumes 以及 vms 處於不同的災備隔離域。
https://www.cnblogs.com/luohaixian/p/9344803.html
https://docs.openstack.org/zh_CN/user-guide/backup-db-incremental.html
一般的,備份具有以下類型:
在虛擬磁碟映像的計算節點上使用本地存儲有一些缺點:
Nova 為 OpenStack 提供計算服務,對接 Ceph 主要是希望將實例的系統磁碟文件儲存到 Ceph 集群中。與其說是對接 Nova,更准確來說是對接 QEMU-KVM/libvirt ,因為 librbd 早已原生集成到其中。
如果需要從ceph rbd中啟動虛擬機,必須將ceph配置為nova的臨時後端;
推薦在計算節點的配置文件中啟用rbd cache功能;
為了便於故障排查,配置admin socket參數,這樣每個使用ceph rbd的虛擬機都有1個socket將有利於虛擬機性能分析與故障解決;
相關配置只涉及全部計算節點ceph.conf文件的[client]與[client.cinder]欄位,以compute163節點為例
全部計算節點配置 ceph.conf文件相關的 [client] 與 [client.cinder] 欄位,以compute01節點為例;
在全部計算節點配置nova後端使用ceph集群的vms池,以compute01節點為例;
在全部計算節點操作;
在全部計算節點操作,以compute01節點為例;
以下給出libvirtd.conf文件的修改處所在的行num
『貳』 swift能幹什麼,不能幹什麼及相關概念
本帖最後由 pig2 於 2014-3-11 18:45 編輯
1.swift 是什麼?
OpenStackObject Storage (Swift) 是開源的,用來創建可擴展的、冗餘的、對象存儲(引擎)。 swift使用標准化的伺服器存儲 PB 級可用數據。但它並不是文件系統 (file system) ,實時的數據存儲系統(real-timedata storage system) 。 swift 看起來更像是一個長期的存儲系統 (long term storage system) ,為了獲得、調用、更新一些靜態的永久性的數據。比如說,適合存儲一些類型的數據:虛擬機鏡像,圖片存儲,郵件存儲,文檔的備份。沒有「單點」或者主控結點 (master point of control) , swift看起來具有更強的擴展性、冗餘和持久性。
2.swift 能做什麼?
長於存儲非結構化數據,大、小文件性能據說都很好(目前沒有測試數據, adrian otto 說測試過10 億個 1byte 數據)。
簡單來說swift是開發蘋果iOS的最快捷的計算機語言。
但是實際上swift已經可以進行一次性編譯之後,同時實現在蘋果iOS和安卓系統上的部署。能夠實現這個功能的目前唯一的IDE是SCADE,一個德國的軟體產品(目前處於試用狀態)。
而且從2015年起,swift不但支持在手機前端的開發,還支持開發伺服器後端的程序,比如使用PerfectlySoft出品的Perfect 2.0就可以確保swift在Linux Ubuntu 16.04上運行並實現一個Web伺服器,訪問各種資料庫並調用遠程訪問。實際上Perfect 2.0是市面上最快的HTTP伺服器,比php和java伺服器都快得多。
3.swift 不能做什麼?
Objects must be <5GB : swift 1.2 之後已經對 object 的大小不做限制
Not a Filesystem :不是文件系統。 swift 使用 REST API ,而不是使用傳統意義上的文件操作命令, open(), read(), write(), seek(), 和 close() 等。
No File Locking :乾脆不支持「文件鎖」。其實在 swift 中,「鎖」的概念是沒有必要的。
No Directory Hierarchies :沒有文件目錄結構。 swift 可以模擬目錄結構,但沒有必要
Not a Database :不是資料庫。 swift 使用 account-container-object 的概念存儲 object ,可以列表出指定 container 中的 object ,不支持 server 端的查詢和處理操作。
『叄』 openstack中,為什麼要分離存儲
增加額外持久化的空間。
非持久化存儲用來運行操作系統,Cinder用來增加額外持久化的空間,Swift用於保存鏡像和數據,也可用於大數據。
非持久存儲開始,也稱為臨時存儲。顧名思義,在OpenStack環境中使用虛擬機的用戶在虛擬機終止後將丟失關聯的磁碟。當租戶在OpenStack集群上啟動虛擬機時,Glance鏡像的一份拷貝會下載到計算節點上。此鏡像將作為Nova實例的第一個磁碟,它提供臨時存儲。一旦Nova實例終止,存儲在該磁碟上的所有內容都將丟失。
『肆』 對象存儲 - Swift
Swift 是 提供 高可用分布式對象存儲 的服務,為nova組件提供虛擬機鏡像存儲服務。
在數據冗餘方面,無需採用read【?】通過在軟體層面,引入一致性散列技術和數據冗餘,犧牲一定程度的數據一致性,來達到高可用和可伸縮性。
支持多租戶模式下,容器和對象讀寫操作,適用於互聯網應用場景下非結構化的數據存儲,比如,華為雲盤等。
以上術語之間的關系:
首先,可以創建多個account,每個account里可以創建多個容器container,每個container下可以創建多個object。 【container 之間不能相互嵌套】
Swift的介紹
Swift在物理結構上往往會存儲對象的多個副本,通常按照物理位置的特點,將對象拷貝到不同的物理位置的特點,將對象拷貝到不同的物理位置上,來保證數據的可靠性。
以上術語之間的關系:
可以根據不同的物理位置,有不同的Region,不同的region代表兩個不同的城市,然後在同一個region下,為冗餘的考慮,設置了多個可用區,zone。每一個可用區可以有不同的存儲節點,node;在更大的架構上,兩個region可以構成一個cluster。
首先,用戶提出一個對象存儲服務的申請,由Swift的API接受和處理,收到之後,先去找 Keystone 認證節點,對用戶的身份進行認證。
認證通過後,將請求提交給名稱為Swift Proxy的組件,Swift Proxy是Swift 的代理,由Swift Proxy來確定究竟應該將存儲對象放在哪一個滿足存儲要求的存儲節點上。最終將對象存儲到指定的存儲節點上即可。最終將返回結果返回給用戶。
『伍』 swift和cinder的區別
你好
關於cinder和swift的區別:
cinder與swift各自的用途是什麼?
cinder是塊存儲,用來給虛擬機掛擴展硬碟,就是將cinder創建出來的卷,掛到虛擬機里。cinder是OpenStack到F版,將之前在Nova中的部分持久性塊存儲功能(Nova-Volume)分離了出來,獨立為新的組件Cinder
swift是一個系統,可以上傳和下載,裡面一般存儲的是不經常修改的內容,比如用於存儲 VM 鏡像、備份和歸檔以及較小的文件,例如照片和電子郵件消息。更傾向於系統的管理
塊存儲具有安全可靠、高並發大吞吐量、低時延、規格豐富、簡單易用的特點,適用於文件系統、資料庫或者其他需要原始塊設備的系統軟體或應用。
上面其實很多感覺不是太直觀,個人認為cinder可以理解為個人電腦的移動硬碟,它可以隨意格式化,隨時存取。
對於swift可以作為網盤,相信對於雲技術的同學來說,網盤應該是不陌生的,如果把一些經常用的內容,放到網盤中是非常不方便的。
Swift 還是 Cinder?何時使用以及使用哪一種?
那麼,應該使用哪一種對象存儲:Swift 還是 Cinder?答案取決於您的應用程序。如果需要運行商用或遺留應用程序,那麼很少需要進行這種選擇。這些應用程序不可能被編碼來利用 Swift API,但您可以輕松掛載一個 Cinder 磁碟,它表現得就像是直接將存儲附加到大多數應用程序。
當然,您還可以對新應用程序使用 Cinder,但是不會從 Swift 自動附帶的彈性和冗餘中獲益。如果編程人員面對這樣的挑戰,那麼 Swift 的分布式可擴展架構是一個值得考慮的特性。
單點故障
Swift 架構是分布式的,可防止所有單點故障和進行水平擴展。
cinder存在單點故障還未解決
更多內容,以下來自ibm資料庫:
塊存儲 (Cinder)
Cinder 是 OpenStack Block Storage 的項目名稱;它為來賓虛擬機 (VM) 提供了持久塊存儲。對於可擴展的文件系統、最大性能、與企業存儲服務的集成以及需要訪問原生塊級存儲的應用程序而言,塊存儲通常是必需的。
系統可以暴露並連接設備,隨後管理伺服器的創建、附加到伺服器和從伺服器分離。應用程序編程介面 (API) 也有助於加強快照管理,這種管理可以備份大量塊存儲。
對象存儲 (Swift)
Swift 是兩種產品中較為成熟的一個:自 OpenStack 成立以來一直是一個核心項目。Swift 的功能類似於一個分布式、可訪問 API 的存儲平台,可直接將它集成到應用程序中,或者用於存儲 VM 鏡像、備份和歸檔以及較小的文件,例如照片和電子郵件消息。
Object Store 有兩個主要的概念:對象和容器。
對象就是主要存儲實體。對象中包括與 OpenStack Object Storage 系統中存儲的文件相關的內容和所有可選元數據。數據保存為未壓縮、未加密的格式,包含對象名稱、對象的容器以及鍵值對形式的所有元數據。對象分布在整個數據中心的多個磁碟中,Swift 可以藉此確保數據的復制和完整性。分布式操作可以利用低成本的商用硬體,同時增強可擴展性、冗餘性和持久性。
容器類似於 Windows® 文件夾,容器是用於存儲一組文件的一個存儲室。容器無法被嵌套,但一個租戶可以供創建無限數量的容器。對象必須存儲在容器中,所以您必須至少擁有一個容器來使用對象存儲。
與傳統的文件伺服器不同,Swift 是橫跨多個系統進行分布的。它會自動存儲每個對象的冗餘副本,從而最大程度地提高可用性和可擴展性。對象版本控制提供了防止數據意外丟失或覆蓋的額外保護
希望對你有幫助
『陸』 什麼是SWIFT
BOFAUS3N。
SWIFT信用證是指凡通過SWIFT系統開立或予以通知的信用證。在國際貿易結算中,SWIFT信用證是正式的、合法的,被信用證各當事人所接受的、國際通用的信用證。
採用SWIFT信用證必須遵守SWIFT的規定,也必須使用SWIFT手冊規定的代號(Tag),而且信用證必須遵循國際商會2007年修訂的《跟單信用證統一慣例》各項條款的規定。
在SWIFT信用證可省去開證行的承諾條款(Undertaking Clause),但不因此免除銀行所應承擔的義務。SWIFT信用證的特點是快速、准確、簡明、可靠。
SWIFT的特點
1.SWIFT需要會員資格。我國的大多數專業銀行都是其成員。
2.SWIFT的費用較低,高速度。同樣多的內容,SWIFT的費用只有TELEX(電傳)的18%左右,只有CABLE(電報)的2.5%左右。
3.SWIFT的安全性較高;。SWIFT的密押比電傳的密押可靠性強、保密性高,且具有較高的自動化。
4.SWIFT的格式具有標准化。對於SWIFT電文,SWIFT組織有著統一的要求和格式。
用戶包括三種類型,分別為:分員(股東)、子會員以及普通用戶。會員可享受所有的SWIFT服務;普通用戶只享有與其業務相關的服務,主要來自於證券行業,如證券中介、投資管理公司、基金管理公司等。
『柒』 在openstack虛擬機和swift什麼關系
OpenStack其實有三個與存儲相關的組件,這三個組件被人熟知的程度和組件本身出現時間的早晚是相符的,按熟悉程度排列如下:Swift——提供對象存儲(ObjectStorage),在概念上類似於AmazonS3服務,不過swift具有很強的擴展性、冗餘和持久性,
『捌』 Swift模塊化最佳實踐
利用cocoapod模塊化:
國外大神項目: iOS-Molar-Architecture
詳情: Medium Post about Molar Architecture
本人項目地址: MolarApp
實踐中把各個模塊分離開來,例如:Networking(網路請求層),Base(基礎類),Common(公共類),MoleA(模塊A),MoleB(模塊B),MoleAB(模塊AB,由模塊A和模塊B組成的模塊,因為模塊A和模塊B不能互相引用),各個模塊都可單獨運行用來測試,有利於大項目多人協作開發。
實踐中若有其他App,例如商家端/管理端,可另由各個模塊組成一個新app,更能快速開發。
個人認為也有利於專業的外包型公司,可做成模版,能非常快速的在原有項目基礎上開發新app,實現模塊化工廠似的項目開發。
『玖』 swift存儲提供的服務有哪些
OpenStack Object Storage(Swift)是OpenStack開源雲計算項目的子項目之一,被稱為對象存儲,提供了強大的擴展性、冗餘和持久性。對象存儲,用於永久類型的靜態數據的長期存儲。
Swift 最初是由 Rackspace 公司開發的高可用分布式對象存儲服務,並於 2010 年貢獻給 OpenStack 開源社區作為其最初的核心子項目之一,為其 Nova 子項目提供虛機鏡像存儲服務。Swift 構築在比較便宜的標准硬體存儲基礎設施之上,無需採用 RAID(磁碟冗餘陣列),通過在軟體層面引入一致性散列技術和數據冗餘性,犧牲一定程度的數據一致性來達到高可用性和可伸縮性,支持多租戶模式、容器和對象讀寫操作,適合解決互聯網的應用場景下非結構化數據存儲問題
『拾』 ios swift中採用什麼持久化數據
1、plist文件(屬性列表),通常用於儲存用戶設置,也可以用於存儲捆綁的信息; 2、preference(偏好設置),常用於保存少量數據; 3、NSKeyedArchiver(歸檔),將內存中的對象實例保存成binary到磁碟並且可以逆向這個過程用來保存用戶操作狀態等; 4、SQLite 3,使用資料庫進行存儲; 5、CoreData,它提供了對象-關系映射(ORM)的功能,即能夠將OC對象轉化成數據,保存在SQLite資料庫文件中,也能夠將保存在資料庫中的數據還原成OC對象。