ZStack 0.9 版本今天發布,歡迎大家測試試用。在這個版本里,ZStack 新加了兩大重量級的功能:
支持分散式存儲 Ceph
從0.9版本開始,ZStack正式支持Ceph作為主存儲和備份存儲的設備。為了最大化的利用Ceph存儲的高級能力, 在一個Zone內,用戶需要使用一個Ceph Cluster同時作為主存儲和備份存儲。這樣做的好處是, 避免了用戶在創建新的雲主機、備份Volume等操作時,主存儲和備份存儲之間不必要的數據拷貝, 所有的數據操作都是通過COW(copy on write)來實現的。
ack和Ceph之間的交互是通過部署在Ceph Mon伺服器上的Agent來完成的。用戶可以動態的添加或刪除Ceph的Mon伺服器。
Ceph 備份存儲
Ceph 備份存儲只能和Ceph主存儲配合使用
使用Ceph的一個主要的好處是因為Ceph支持COW,所以在ZStack中,如果使用了Ceph的備份存儲,那麼主存儲也必須是同一個Ceph。 由於Ceph備份存儲和主存儲都使用相同的Ceph cluster,所以用戶不能把一個Ceph的備份存儲掛載到多個ZStack的Zones上。 最好的使用方法是每一個Zone使用獨立的Ceph cluster作為同一套主存儲和備份存儲。 換句話說,當ZStack的Zone僅僅掛載了Ceph作為備份存儲的時候,你不能再使用NFS、本地存儲以及ISCSI作為該Zone的主存儲。 當一個Zone同時掛載Ceph備份存儲和SFTP備份存儲的時候,可以混用多種主存儲類型。但是需要特別注意的是, 如果雲主機的鏡像文件只存在於Ceph備份存儲的時候,該雲主機只能在Ceph主存儲上創建成功。 假設創建雲主機時選擇的L3網路所在的Cluster上沒有掛載Ceph主存儲,但是該雲主機的鏡像文件只存在在Ceph備份存儲 上,那麼創建雲主機將會發生找不到合適主存儲的失敗。
從UI添加Ceph備份存儲
選擇類型 'Ceph'
輸入Ceph mon server的 IP/hostname
輸入Ceph mon server的 SSH 用戶名
輸入Ceph mon server的 SSH 密碼
點擊 'Add'
重複步驟 3 ~ 5 來添加其他的Ceph Mon伺服器
點擊 'Next'
通過CLI添加Ceph備份存儲
你可以使用 AddCephBackupStorage 來添加 Ceph 備份存儲. 例如:
>>>AddCephBackupStorage name=ceph monUrls=root:密碼@192.168.0.123,root:password@192.168.0.124,root:password@192.168.0.125
monUrls
是一個字元串列表,每一個Mon伺服器的信息通過逗號來分割,每一個Mon伺服器的信息遵從如下的格式:
ssh_用戶名:ssh_密碼@mon_server_ip:[ssh_port][/?monPort=ceph_mon_port]
ssh_用戶名
, ssh_密碼
, mon_server_ip
是必須的內容,而ssh_port
和 ceph_mon_port
是選填的。ceph_mon_port
是Ceph Mon伺服器的埠,默認值為6789. 一個完整的monUrl的例子是:root:password@192.168.0.123:22/?monPort=6789
.
指定 pool
AddCephBackupStorage
有一個特別的參數poolName
。通過它,用戶可以指定一個存在的Ceph Pool。 當用戶指定一個pool的名字的時候,ZStack會使用這個pool。當這個pool不存在的時候,ZStack將會報告一個添加失敗的錯誤。 當用戶不指定特別的pool名字的時候,ZStack會自動創建一個新的pool。 你可以利用這個功能預先創建一個合適的pool。
動態添加Mon伺服器
在添加了Ceph備份存儲后,用戶還可以給該備份存儲添加新的Ceph Mon伺服器:
>>>AddMonToCephBackupStorage uuid=d914841733fa499c9dc6d63ea339469d monUrls=root:password@192.168.0.123,root:password@192.168.0.124,root:password@192.168.0.125
動態刪除Mon伺服器
你還可以使用 RemoveMonFromCephBackupStorage 來刪除一個Ceph Mon伺服器。
>>>RemoveMonFromCephBackupStorage uuid=d914841733fa499c9dc6d63ea339469d monHostnames=192.168.0.123,192.168.0.124
monHostnames
是一個通過逗號分割的字元串列表,裡面是Mon的IP地址。
查詢Ceph備份存儲
使用QueryCephBackupStorage可以查詢所有Ceph備份存儲的詳情:
Ceph主存儲
Ceph主存儲既可以和Ceph備份存儲協同工作,也可以使用SFTP備份存儲。
通過UI添加
選擇類型 'Ceph'
輸入Ceph mon server的IP/hostname
輸入Ceph mon server的SSH 用戶名
輸入Ceph mon server的SSH 密碼
點擊 'Add'
重複步驟 3 ~ 5 來添加其他的Ceph Mon伺服器
點擊 'Next'
Add through CLI
你可以使用 AddCephPrimaryStorage 來添加一個 Ceph 主存儲。 例如::
>>>AddCephPrimaryStorage name=ceph zoneUuid=d914841733fa499c9dc6d63ea339469d monUrls=root:password@192.168.0.123,root:password@192.168.0.124,root:password@192.168.0.125
monUrls
是一個字元串列表,每一個Mon伺服器的信息通過逗號來分割,每一個Mon伺服器的信息遵從如下的格式:
ssh_用戶名:ssh_密碼@mon_server_ip:[ssh_port][/?monPort=ceph_mon_port]
ssh_用戶名
, ssh_密碼
, mon_server_ip
是必須的內容,而ssh_port
和 ceph_mon_port
是選填的。ceph_mon_port
是Ceph Mon伺服器的埠,默認值為6789. 一個完整的monUrl的例子是:root:password@192.168.0.123:22/?monPort=6789
.
指定 pool
AddCephPrimaryStorage
有三個個特別的參數imageCachePoolName, rootVolumePoolName, dataVolumePoolName
。 通過它們,用戶可以指定存在的Ceph Pool作為主存儲的Pool。 當用戶指定pool的名字的時候,ZStack會使用這個pool。當pool不存在的時候,ZStack將會報告一個添加失敗的錯誤。 當用戶不指定特別的pool名字的時候,ZStack會自動創建三個新的pool。你可以利用這個功能預先創建合適的pool。在指定Pool的時候,你可以只指定其中的一個或者兩個,然後由ZStack來創建其餘的Pool。