溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ceph與openstack結合提供存儲后端的示例分析

發(fā)布時間:2021-12-17 10:18:21 來源:億速云 閱讀:312 作者:小新 欄目:云計算

這篇文章將為大家詳細講解有關ceph與openstack結合提供存儲后端的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

CEPH BLOCK DEVICES AND OPENSTACK

官方文檔:http://ceph.com/docs/master/rbd/rbd-openstack/

環(huán)境:ubuntu14.04 server,openstack icehouse版本, ceph version 0.94.2

libvirt 配置了 librbd 的 QEMU 接口,通過它可以在 OpenStack 中使用 Ceph 塊設備鏡像。Ceph 塊設備鏡像被當作集群對象,這意味著它比獨立的服務器有更好的性能。

在 OpenStack 中使用 Ceph 塊設備,必須首先安裝 QEMU,libvirt 和 OpenStack。建議 OpenStack 安裝的時候使用獨立的物理節(jié)點。OpenStack 節(jié)點建議最小 8G RAM和四核處理器。下圖描述了 OpenStack 和 Ceph 技術層次。

Important:要在 OpenStack 中使用 Ceph,必須首先運行 Ceph 存儲集群

 ceph與openstack結合提供存儲后端的示例分析 

OpenStack 與 Ceph 的三個結合點:

鏡像:OpenStack Glance 管理虛擬機鏡像。鏡像是不變的。OpenStack 把鏡像當作二進制對象并以此格式下載。

卷:卷是塊設備。OpenStack 使用卷來啟動虛擬機,或者綁定卷到運行中的虛擬機。OpenStack 使用 Cinder 服務管理卷。

客戶磁盤:客戶磁盤是客戶操作系統(tǒng)磁盤。默認情況下,當啟動一臺虛擬機時,它的系統(tǒng)盤以文件的形式出現(xiàn)在 hypervisor 系統(tǒng)上(通常/var/lib/nova/instances/<uuid>)。在 OpenStack Havana 以前的版本,在 Ceph 中啟動虛擬機的唯一方式是使用 Cinder 的 boot-from-volume 功能,現(xiàn)在能夠在 Ceph 中直接啟動虛擬機而不用依賴于 Cinder,這是非常有利的因為它能夠讓你很容易的進行虛擬機的熱遷移。除此之外,如果 hypervisor 掛掉還能夠方便地觸發(fā) nova evacute 然后無縫得在其他的地方繼續(xù)運行虛擬機。

可以使用 OpenStack Glance 來存儲鏡像在 Ceph 塊設備中,也可以使用 Cinder 通過鏡像的寫時復制來啟動虛擬機。

下面詳細介紹 Glance,Cinder 和 Nova 的配置過程,盡管它們沒有必要一起使用。當虛擬機運行使用本地磁盤運行的時候,可以把鏡像存儲在 Ceph 塊設備中,或者正相反。

Important:Ceph 不支持 QCOW2 格式的虛擬機磁盤。所以,如果想要在 Ceph 中啟動虛擬機(后端文件或者從卷啟動),Glance 鏡像必須是 RAW格式

創(chuàng)建一個池

默認情況下,Ceph 塊設備使用 rbd 池??梢允褂萌魏文軌蚴褂玫某?。建議為 Cinder 和 Glance 單獨創(chuàng)建池。確保 Ceph 集群正常運行,然后創(chuàng)建池。

ceph osd pool create volumes 128
ceph osd pool create images 128
ceph osd pool create backups 128(注:未安裝cinder-backup可不創(chuàng)建)
ceph osd pool create vms 128

看 Create a Pool 和 Placement Groups 來了解指定池的 pg 數(shù)量的詳細信息和應該為你的池指定多少 pg。

配置 OpenStack Ceph 客戶端

運行 glance-api,cinder-volume,nova-compute 和 cinder-backup(注:未安裝) 的節(jié)點是 Ceph 客戶端。每一個節(jié)點都需要 ceph.conf 文件:

ssh {your-openstack-server} sudo tee /etc/ceph/ceph.conf < /etc/ceph/ceph.conf

安裝 Ceph 客戶端包

在 glance-api 節(jié)點,需要為 librbd 綁定 Python

sudo apt-get install python-ceph

在 nova-compute,cinder-backup 和 cinder-volume 節(jié)點要用到 Python 和 Ceph 客戶端命令行工具:

sudo apt-get install ceph-common

設置 Ceph 客戶端認證

如果使用了 cephx authentication,創(chuàng)建一個新用戶為 Nova/Cinder 和 Glance。執(zhí)行下面的命令:

ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images'
ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'

為 client.cinder,client.glance添加密鑰來訪問節(jié)點并改變所有者:

ceph auth get-or-create client.glance | ssh {your-glance-api-server} sudo tee /etc/ceph/ceph.client.glance.keyring
ssh {your-glance-api-server} sudo chown glance:glance /etc/ceph/ceph.client.glance.keyring
ceph auth get-or-create client.cinder | ssh {your-volume-server} sudo tee /etc/ceph/ceph.client.cinder.keyring
ssh {your-cinder-volume-server} sudo chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring

運行 nova-compute 的節(jié)點 nova-compute 進程需要密鑰文件。它們也存儲 client.cinder 用戶的密鑰在 libvirt。libvirt 進程在 Cinder 中綁定塊設備時需要用到它來訪問集群。

創(chuàng)建一個臨時的密鑰文件副本在運行 nova-compute 的節(jié)點:

ceph auth get-key client.cinder | ssh {your-compute-node} tee client.cinder.key

然后在計算節(jié)點,為 libvirt 添加密鑰文件并且移除臨時的副本密鑰:

$~:uuidgen
457eb676-33da-42ec-9a8c-9293d545c337
$~:cat > secret.xml <<EOF
<secret ephemeral='no' private='no'>
  <uuid>457eb676-33da-42ec-9a8c-9293d545c337</uuid>
  <usage type='ceph'>
    <name>client.cinder secret</name>
  </usage>
</secret>
EOF
$~:sudo virsh secret-define --file secret.xml
Secret 457eb676-33da-42ec-9a8c-9293d545c337 created
$~:sudo virsh secret-set-value --secret 457eb676-33da-42ec-9a8c-9293d545c337 --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml

配置 OpenStack 使用 Ceph

配置 Glance

Glance 能夠使用多種后端來存儲鏡像。默認使用 Ceph 塊設備,配置 Glance 如下:

Juno 之前的版本編輯 /etc/glance/glance-api.conf 并且添加下面的 [DEFAULT] 部分:

default_store = rbd
rbd_store_user = glance
rbd_store_pool = images
rbd_store_chunk_size = 8

Juno

編輯 /etc/glance/glance-api.conf 并且添加 [glance_store] 部分:

[DEFAULT]
...
default_store = rbd
...
[glance_store]
stores = rbd
rbd_store_pool = images
rbd_store_user = glance
rbd_store_ceph_conf = /etc/ceph/ceph.conf
rbd_store_chunk_size = 8

更多關于 Glance 的配置信息請看:http://docs.openstack.org/trunk/config-reference/content/section_glance-api.conf.html。

Important:Glance 還沒有完全移到 'store'。所以仍然需要在 DEFAULT 部分配置 store。

所有 OpenStack 版本

如果要啟用鏡像的寫時復制功能,添加下面的 [DEFAULT] 部分:

show_image_direct_url = True

注意這會在 Glance API 中暴露后端存儲位置,所以 endpoint 不應該被公開訪問

禁用 Glance 緩存管理來避免鏡像被緩存到 /var/lib/glance/image-cache/,確保配置文件中有 flavor = keystone+cachemanagement:

[paste_deploy] flavor = keystone

配置 Cinder

OpenStack 需要驅(qū)動來與 Ceph 塊設備交互。必須為塊設備指定池,在 OpenStack 節(jié)點編輯 /etc/cinder/cinder.conf 并添加:

volume_driver = cinder.volume.drivers.rbd.RBDDriver
rbd_pool = volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
glance_api_version = 2

配置 Nova 綁定 Ceph rbd 塊設備

為了綁定 Cinder 設備(塊設備或者啟動卷),必須告訴 Nova(和 libvirt)用戶和 UUID。libvirt 在與 Ceph 集群進行連接和認證的時候提供這個用戶。

rbd_user = cinder
rbd_secret_uuid = 457eb676-33da-42ec-9a8c-9293d545c337

這兩個配置項同樣用于 Nova 的后端。

配置 Nova

為了直接從 Ceph 啟動所有虛擬機,你必須配置 Nova 的臨時后端。

建議在 Ceph 配置文件中啟用 RBD 緩存(從 Giant 版本默認啟用)。還有,啟用 admin socket 對于故障排除的時候很有幫助。每臺使用 Ceph 塊設備的虛擬機都有一個 socket 有助于性能分析和錯誤判斷。

socket 可以通過這種方式訪問:

ceph daemon /var/run/ceph/ceph-client.cinder.19195.32310016.asok help

現(xiàn)在,在每個計算節(jié)點編輯 Ceph 配置文件:

[client]
    rbd cache = true
    rbd cache writethrough until flush = true
admin socket = /var/run/ceph/$cluster-$type.$id.$pid.$cctid.asok

Tip:如果虛擬機正在運行,可以直接重啟來獲得 socket。

HAVANA 和 ICEHOUSE

HAVANA 和 ICEHOUSE 需要補丁來實現(xiàn)寫時復制并且修復 rbd 臨時磁盤的鏡像大小和熱遷移 Bug。

這些可用的分支基于主干Nova stable/havana 和 stable/icehouse。使用它們不是強制性的但是是非常建議的,為了利用寫時復制的功能。

在每個計算節(jié)點,編輯 /etc/nova/nova.conf 并且添加:

libvirt_images_type = rbd
libvirt_images_rbd_pool = vms
libvirt_images_rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_user = cinder
rbd_secret_uuid = 457eb676-33da-42ec-9a8c-9293d545c337

禁用文件注入也是一個好的習慣。啟動一個實例的時候,Nova 通常試圖去打開虛擬機的根文件系統(tǒng)。然后 Nova 注入值比如密碼,ssh 密鑰等,直接進入文件系統(tǒng)。然而,最好依賴元數(shù)據(jù)服務和 cloud-init。

在每個計算節(jié)點,編輯 /etc/nova/nova.conf 并且添加:

libvirt_inject_password = false
libvirt_inject_key = false
libvirt_inject_partition = -2

Juno

在 Juno 版本,Ceph 塊設備被移到 [libvirt] 部分。在每個計算節(jié)點,編輯 /etc/nova/nova.conf 在 [libvirt] 部分添加:

[libvirt]
images_type = rbd
images_rbd_pool = vms
images_rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_user = cinder
rbd_secret_uuid = 457eb676-33da-42ec-9a8c-9293d545c337

禁用文件注入也是一個好的習慣。啟動一個實例的時候,Nova 通常試圖去打開虛擬機的根文件系統(tǒng)。然后 Nova 注入值比如密碼,ssh 密鑰等,直接進入文件系統(tǒng)。然而,最好依賴元數(shù)據(jù)服務和 cloud-init。

在每個計算節(jié)點,編輯 /etc/nova/nova.conf 并且添加:

libvirt_inject_password = false
libvirt_inject_key = false
libvirt_inject_partition = -2

確保熱遷移,使用下面的標志:

live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST"

重啟 OpenStack

激活 Ceph 塊設備驅(qū)動并且載入塊設備池的名稱到配置中,必須重啟 OpenStack。

sudo glance-control api restart
sudo service nova-compute restart
sudo service cinder-volume restart

OpenStack 啟動并運行起來之后,就能夠創(chuàng)建一個卷并從它啟動。

從塊設備啟動

使用下面的 Cinder 命令創(chuàng)建一個啟動卷:

cinder create --image-id {id of image} --display-name {name of volume} {size of volume}

注意鏡像必須是 RAW 格式。可以使用 qemu-img 轉(zhuǎn)換鏡像格式。例如:

qemu-img convert -f {source-format} -O {output-format} {source-filename} {output-filename}
qemu-img convert -f qcow2 -O raw precise-cloudimg.img precise-cloudimg.raw
glance image-create --name cirros --file cirros-0.3.2-x86_64-disk.raw --disk-format raw --container-format bare --is-public True

或者:

在Dashboard中創(chuàng)建一個啟動卷:

ceph與openstack結合提供存儲后端的示例分析

ceph與openstack結合提供存儲后端的示例分析

ceph與openstack結合提供存儲后端的示例分析

關于“ceph與openstack結合提供存儲后端的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI