openstack運維實戰系列(十八)nova與ceph結合

1. 背景說明python

   nova負責虛擬機的生命週期管理,包括建立,刪除,重建,開機,關機,重啓,快照等,做爲openstack的核心,nova負責IaaS中計算重要的職責,其中nova的存儲格外重要,默認狀況下,nova將instance的數據存放在/var/lib/nova/instances/%UUID目錄下,使用本地的存儲空間。使用這種方式帶來的好處是:簡單,易實現,速度快,故障域在一個可控制的範圍內。然而,缺點也很是明顯:compute出故障,上面的虛擬機down機時間長,無法快速恢復,此外,一些特性如熱遷移live-migration,虛擬機容災nova evacuate等高級特性,將沒法使用,對於後期的雲平臺建設,有明顯的缺陷。
bootstrap

2.關於分佈式存儲vim

  使用openstack時,是否使用分佈式文件系統,是一個很是值得思考和深思的問題,使用本地的優勢很是明顯,同時帶來的缺點也顯而易見,使用分佈式存儲,技術上的空白和技術上的難度,也是值得思考的一個問題。同時,分佈式存儲又改如何選擇,應該選擇簡單的gluserfs仍是呼聲較高的ceph,這些都是構建雲平臺須要考慮的地方,同時openstack和ceph都存在一些坑,須要在技術上有足夠的積累底蘊纔可以控制起來。若是有須要經過openstack在生產環境下構建雲平臺,我建議初期使用本地的存儲,充分利用KVM和本地文件系統的穩定,性能,後續有足夠的技術能夠逐步灰度至分佈式存儲glusterfs或者ceph中。建議使用ceph,若是基於技術層面的考慮,能夠考慮使用glusterfs,glusterfs以其簡單,易管理。
ssh

3.nova與ceph結合分佈式

一、ceph中建立存儲池poolide

[root@controller_10_1_2_230 ~]# ceph osd pool create vms 128    #建立一個pools,名字爲vms,128個pg
pool 'vms' created

[root@controller_10_1_2_230 ~]# ceph osd lspools                #查看pools建立的狀況
0 rbd,1 p_w_picpaths,2 vms,
[root@controller_10_1_2_230 ~]# ceph osd pool stats
pool rbd id 0
  nothing is going on

pool p_w_picpaths id 1
  nothing is going on

pool vms id 2
  nothing is going on

二、nova-compute節點安裝和配置客戶端性能

[root@compute1_10_1_2_232 ~]# yum install python-rbd ceph -y     #安裝客戶端包
[root@controller_10_1_2_230 ~]# scp  /etc/ceph/ceph.conf  root@10.1.2.232:/etc/ceph/ceph.conf #拷貝ceph配置文件

三、配置ceph認證,讓nova用戶可以訪問vms池、p_w_picpaths池ui

[root@controller_10_1_2_230 ~]# ceph auth get-or-create client.nova mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=vms, allow rwx pool=p_w_picpaths'                       
[client.nova]
        key = AQBLXqpWB8HsChAA6hGUBT5JNrFGD116uy+nmg==
      
#查看ceph的認證信息
[root@controller_10_1_2_230 ~]# ceph auth list
installed auth entries:

osd.0
        key: AQDsx6lWYGehDxAAGwcYP9jDvH2Zaa8JlGwj1Q==
        caps: [mon] allow profile osd
        caps: [osd] allow *
osd.1
        key: AQD1x6lWQCYBERAAjIKO1LVpj8FvVefDvNQZSA==
        caps: [mon] allow profile osd
        caps: [osd] allow *
client.admin
        key: AQCexqlWQL6OGBAA2v5LsYEB5VgLyq/K2huY3A==
        caps: [mds] allow
        caps: [mon] allow *
        caps: [osd] allow *
client.bootstrap-mds
        key: AQCexqlWUMNRMRAAZEp/UlhQuaixMcNy5d5pPw==
        caps: [mon] allow profile bootstrap-mds
client.bootstrap-osd
        key: AQCexqlWQFfpJBAAfPCx4sTLNztBESyFKys9LQ==
        caps: [mon] allow profile bootstrap-osd
client.bootstrap-rgw
        key: AQAR7alWok0SGhAAFtOo0PFsZuVzczMvJox1Wg==
        caps: [mon] allow profile bootstrap-rgw
client.glance
        key: AQAl76lWHMySHxAANTfXv3JQ70GCEBOZI5abcQ==
        caps: [mon] allow r
        caps: [osd] allow class-read object_prefix rbd_children, allow rwx pool=p_w_picpaths
client.nova
        key: AQBLXqpWB8HsChAA6hGUBT5JNrFGD116uy+nmg==
        caps: [mon] allow r
        caps: [osd] allow class-read object_prefix rbd_children, allow rwx pool=vms, allow rwx pool=p_w_picpaths    #添加了nova用戶的認證信息

四、將ceph認證的key拷貝至計算節點
加密

a、查看client.nova的key
[root@controller_10_1_2_230 ~]# ceph  auth get-or-create client.nova
[client.nova]
        key = AQBLXqpWB8HsChAA6hGUBT5JNrFGD116uy+nmg==

b、將key拷貝至遠端
[root@controller_10_1_2_230 ~]# scp  ceph.client.nova.kering  root@10.1.2.232:/etc/ceph/
ceph.client.nova.kering  

c、生成nova臨時的key

[root@controller_10_1_2_230 ~]# ceph auth get-key client.nova | ssh root@10.1.2.232 tee client.nova.key

五、計算節點的libvirt使用ceph的keyspa

a、生成uuid號
[root@compute1_10_1_2_232 ~]# uuidgen 
0d154ad2-ec21-4200-952f-7551503da8a1

b、生成加密文件
vim secret.xml

<secret ephemeral='no' private='no'>
        <uuid>0d154ad2-ec21-4200-952f-7551503da8a1</uuid>
        <usage type='ceph'>
                <name>client.cinder secret</name>
        </usage>
</secret>

c、加載加密文件
[root@compute1_10_1_2_232 ~]# virsh secret-define --file secret.xml 
Secret 0d154ad2-ec21-4200-952f-7551503da8a1 created

d、配置libvirt加密,使用client.nova.key
[root@compute1_10_1_2_232 ~]# virsh secret-set-value --secret 0d154ad2-ec21-4200-952f-7551503da8a1 --base64 $(cat /root/client.nova.key) 
Secret value set

e、查看libvirt定義的key
[root@compute1_10_1_2_232 ~]# virsh secret-list
UUID                                 Usage
-----------------------------------------------------------
0d154ad2-ec21-4200-952f-7551503da8a1 Unused
相關文章
相關標籤/搜索