1. 程式人生 > >配置Ceph為openstack後端

配置Ceph為openstack後端

嘗試給nova,cinder-volume/cinder-backup,glance配置Ceph作為後端。

先在devstack安裝的Kilo版本的環境中配置。

1. 建立pool

[root@controller-1 ~]# ceph osd pool create volumes-maqi-kilo 128
pool 'volumes-maqi-kilo' created
[root@controller-1 ~]# ceph osd pool create backups-maqi-kilo 128
pool 'backups-maqi-kilo' created
[root@controller
-1 ~]# ceph osd pool create images-maqi-kilo 128 pool 'images-maqi-kilo' created [root@controller-1 ~]# ceph osd pool create vms-maqi-kilo 128 pool 'vms-maqi-kilo' created [root@controller-1 ~]# ceph osd lspools 0 rbd,1 volumes-maqi-kilo,2 backups-maqi-kilo,3 images-maqi-kilo,4 vms-maqi-kilo,

128是pg(Placement Group) number,少於5個OSD的環境

推薦設為128。
Update 2015/11/16: pg number設定不準確

[email protected]-kilo:~|⇒  ceph -s
    cluster d3752df9-221d-43c7-8cf5-f39061a630da
     health HEALTH_WARN
            too many PGs per OSD (576 > max 300)
     monmap e1: 1 mons at {controller-1=10.134.1.3:6789/0}
            election epoch 2, quorum 0 controller-
1 osdmap e18: 2 osds: 2 up, 2 in pgmap v48: 576 pgs, 5 pools, 394 bytes data, 4 objects 20567 MB used, 36839 GB / 36860 GB avail 576 active+clean

建立的4個pool,每個128個pg,預設的rbd pool有64個pg,一共128*4+64=576個pg。這些pg分佈在兩個osd上。
看warning資訊,max 300,貌似一個osd只能150?

2. 拷貝ceph節點的ssh public key到openstack 節點上

[root@controller-1 ~]# ssh-copy-id [email protected]

3. 在openstack節點上建立ceph目錄

admin@maqi-kilo:~|⇒  sudo mkdir /etc/ceph

4. 配置openstack ceph client

跑cinder-volume、cinder-backup,nova-compute,glance-xxx的節點都是ceph cluster的client,需要ceph.conf配置檔案

[[email protected] ~]# ssh [email protected] sudo tee /etc/ceph/ceph.conf </etc/ceph/ceph.conf
[global]
fsid = 1c9f72d3-3ebc-465b-97a4-2784f2db1db3
mon_initial_members = controller-1
mon_host = 10.254.4.3
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
filestore_xattr_use_omap = true
osd_pool_default_size = 2
public_network = 10.254.4.3/24

5. 在openstack節點上安裝ceph包

[email protected]-kilo:~|⇒  sudo apt-get install ceph-common

6. Setup Ceph client authentication

為cinder-volume,cinder-backup,glance建立使用者

[[email protected] ~]# ceph auth get-or-create client.cinder-maqi-kilo mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes-maqi-kilo , allow rwx pool=vms-maqi-kilo, allow rx pool=images-maqi-kilo'
[client.cinder-maqi-kilo]
    key = AQDJYkhWwv4uKRAAI/JPWK2H4qV+DqMSkkliOQ==

[[email protected]1 ~]# ceph auth get-or-create client.glance-maqi-kilo mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images-maqi-kilo'
[client.glance-maqi-kilo]
    key = AQAPY0hW+1YQOBAA3aRlTVGkfzTA4ZfaBEmM8Q==

[[email protected]1 ~]# ceph auth get-or-create client.cinder-backup-maqi-kilo mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=backups-maqi-kilo'
[client.cinder-backup-maqi-kilo]
    key = AQA7Y0hWxegCChAAhTHc7abrE9bGON97bSsLgw==

把key拷貝到openstack節點上並修改ownership:【注意,這一步中的keyring檔名是錯誤的,詳見問題1】

[root@controller-1 ~]# ceph auth get-or-create client.cinder-maqi-kilo | ssh [email protected] sudo tee /etc/ceph/ceph.client.cinder.keyring
[client.cinder-maqi-kilo]
    key = AQDJYkhWwv4uKRAAI/JPWK2H4qV+DqMSkkliOQ==
[root@controller-1 ~]# ssh [email protected] sudo chown admin:admin /etc/ceph/ceph.client.cinder.keyring

[root@controller-1 ~]# ceph auth get-or-create client.cinder-backup-maqi-kilo | ssh [email protected] sudo tee /etc/ceph/ceph.client.cinder-backup.keyring
[client.cinder-backup-maqi-kilo]
    key = AQA7Y0hWxegCChAAhTHc7abrE9bGON97bSsLgw==
[root@controller-1 ~]# ssh [email protected] sudo chown admin:admin /etc/ceph/ceph.client.cinder-backup.keyring

[root@controller-1 ~]# ceph auth get-or-create client.glance-maqi-kilo  | ssh [email protected] sudo tee /etc/ceph/ceph.client.glance.keyring
[client.glance-maqi-kilo]
    key = AQAPY0hW+1YQOBAA3aRlTVGkfzTA4ZfaBEmM8Q==
[root@controller-1 ~]# ssh [email protected] sudo chown admin:admin /etc/ceph/ceph.client.glance.keyring

注意:

  • 這裡的owner是admin,因為我們執行devstack安裝指令碼的使用者是admin,所以用admin使用者就可以。但是在手動安裝的環境中,需要把owner:group設定為cinder:cinder

對於跑nova-compute的節點,首先需要取得ceph.client.cinder.keyring:

[root@controller-1 ~]# ceph auth get-or-create client.cinder-maqi-kilo | ssh [email protected] sudo tee /etc/ceph/ceph.client.cinder.keyring

然後libvirt也需要這個key,建立過程需要一個臨時檔案:

  1. 在ceph節點上:

    [root@controller-1 ~]# ceph auth get-key client.cinder-maqi-kilo | ssh [email protected] tee client.cinder.key
    AQDJYkhWwv4uKRAAI/JPWK2H4qV+DqMSkkliOQ==[root@controller-1 ~]#
  2. 在nova-compute節點上:

    [email protected]-kilo:~|⇒  uuidgen
    57ac147c-199b-4b1c-a3d8-70be795c4d07
    
    [email protected]-kilo:~|⇒  cat > secret.xml <<EOF
    heredoc> <secret ephemeral='no' private='no'>
    heredoc>   <uuid>57ac147c-199b-4b1c-a3d8-70be795c4d07</uuid>
    heredoc>   <usage type='ceph'>
    heredoc>     <name>client.cinder-maqi-kilo secret</name>
    heredoc>   </usage>
    heredoc> </secret>
    heredoc> 
    EOF 
    
    [email protected]-kilo:~|⇒  sudo virsh secret-define --file secret.xml
    Secret 57ac147c-199b-4b1c-a3d8-70be795c4d07 created
    
    [email protected]-kilo:~|⇒  ls client.cinder.key secret.xml
    client.cinder.key  secret.xml
    [email protected]-kilo:~|[email protected]-kilo:~|⇒  sudo virsh secret-set-value --secret 57ac147c-199b-4b1c-a3d8-70be795c4d07 --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml
    Secret value set

    Note:UUID最好在各個nova-compute節點上保持一致。

7. 配置glance

/etc/glance/glance-api.conf

[DEFAULT]
default_store = rbd
show_image_direct_url = True

[glance_store]
stores = rbd
rbd_store_pool = images-maqi-kilo
rbd_store_user = glance-maqi-kilo
rbd_store_ceph_conf = /etc/ceph/ceph.conf
rbd_store_chunk_size = 8

[paste_deploy]
flavor = keystone

8. 配置cinder

/etc/cinder/cinder.conf

[DEFAULT]
enabled_backends = ceph
glance_api_version = 2
backup_driver = cinder.backup.drivers.ceph
backup_ceph_conf = /etc/ceph/ceph.conf
backup_ceph_user = cinder-backup-maqi-kilo
#backup_ceph_chunk_size = 134217728
backup_ceph_pool = backups-maqi-kilo
backup_ceph_stripe_unit = 0
backup_ceph_stripe_count = 0
restore_discard_excess_bytes = true

[ceph]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
rbd_pool = volumes-maqi-kilo
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
rbd_user = cinder-maqi-kilo
rbd_secret_uuid = 57ac147c-199b-4b1c-a3d8-70be795c4d07
volume_backend_name = ceph

9. 配置nova

nova.conf

[libvirt]
images_rbd_ceph_conf = /etc/ceph/ceph.conf
images_rbd_pool = vms-maqi-kilo
images_type = rbd
disk_cachemodes = network=writeback
inject_key = false
rbd_secret_uuid = 57ac147c-199b-4b1c-a3d8-70be795c4d07
rbd_user = cinder-maqi-kilo

問題

  1. 配置完成之後,所有的client都連不上ceph cluster。例如cinder-volume報錯:
2015-11-15 11:45:15.998 21172 ERROR cinder.volume.drivers.rbd [req-b016ccb5-1544-4b5d-9ec9-1431457f4679 - - - - -] Error connecting to ceph cluster.
2015-11-15 11:45:15.998 21172 TRACE cinder.volume.drivers.rbd Traceback (most recent call last):
2015-11-15 11:45:15.998 21172 TRACE cinder.volume.drivers.rbd   File "/home/openstack/workspace/cinder/cinder/volume/drivers/rbd.py", line 314, in _connect_to_rados
2015-11-15 11:45:15.998 21172 TRACE cinder.volume.drivers.rbd     client.connect()
2015-11-15 11:45:15.998 21172 TRACE cinder.volume.drivers.rbd   File "/usr/lib/python2.7/dist-packages/rados.py", line 417, in connect
2015-11-15 11:45:15.998 21172 TRACE cinder.volume.drivers.rbd     raise make_ex(ret, "error calling connect")
2015-11-15 11:45:15.998 21172 TRACE cinder.volume.drivers.rbd ObjectNotFound: error calling connect
2015-11-15 11:45:15.998 21172 TRACE cinder.volume.drivers.rbd
2015-11-15 11:45:15.999 21165 DEBUG cinder.openstack.common.service [req-b3ad30cb-853a-4d68-846d-d5500f8cd0dc - - - - -] glance_ca_certificates_file    = None log_opt_values /usr/local/lib/python2.7/dist-packages/oslo_config/cfg.py:2187
2015-11-15 11:45:16.000 21172 ERROR cinder.volume.manager [req-b016ccb5-1544-4b5d-9ec9-1431457f4679 - - - - -] Error encountered during initialization of driver: RBDDriver
。。。。。。
。。。。。。
2015-11-15 11:45:16.000 21172 ERROR cinder.volume.manager [req-b016ccb5-1544-4b5d-9ec9-1431457f4679 - - - - -] Bad or unexpected response from the storage volume backend API: Error connecting to ceph cluster.
2015-11-15 11:45:16.000 21172 TRACE cinder.volume.manager Traceback (most recent call last):
2015-11-15 11:45:16.000 21172 TRACE cinder.volume.manager   File "/home/openstack/workspace/cinder/cinder/volume/manager.py", line 302, in init_host
2015-11-15 11:45:16.000 21172 TRACE cinder.volume.manager     self.driver.check_for_setup_error()
2015-11-15 11:45:16.000 21172 TRACE cinder.volume.manager   File "/usr/local/lib/python2.7/dist-packages/osprofiler/profiler.py", line 105, in wrapper
2015-11-15 11:45:16.000 21172 TRACE cinder.volume.manager     return f(*args, **kwargs)
2015-11-15 11:45:16.000 21172 TRACE cinder.volume.manager   File "/home/openstack/workspace/cinder/cinder/volume/drivers/rbd.py", line 287, in check_for_setup_error
2015-11-15 11:45:16.000 21172 TRACE cinder.volume.manager     with RADOSClient(self):
2015-11-15 11:45:16.000 21172 TRACE cinder.volume.manager   File "/home/openstack/workspace/cinder/cinder/volume/drivers/rbd.py", line 242, in __init__
2015-11-15 11:45:16.000 21172 TRACE cinder.volume.manager     self.cluster, self.ioctx = driver._connect_to_rados(pool)
2015-11-15 11:45:16.000 21172 TRACE cinder.volume.manager   File "/home/openstack/workspace/cinder/cinder/volume/drivers/rbd.py", line 322, in _connect_to_rados
2015-11-15 11:45:16.000 21172 TRACE cinder.volume.manager     raise exception.VolumeBackendAPIException(data=msg)
2015-11-15 11:45:16.000 21172 TRACE cinder.volume.manager VolumeBackendAPIException: Bad or unexpected response from the storage volume backend API: Error connecting to ceph cluster.

分析:
cinder應該是通過librados連線到ceph cluster的,先不研究這個library怎麼用,先看看用現有的配置檔案等能否通過命令列連線:

[email protected]:/etc/ceph|⇒  ls
ceph.client.admin.keyring  ceph.client.cinder-backup.keyring  ceph.client.cinder.keyring  ceph.client.glance.keyring  ceph.conf
[email protected]:/etc/ceph|⇒  ceph osd lspools
0 rbd,1 volumes-maqi-kilo,2 backups-maqi-kilo,3 images-maqi-kilo,4 vms-maqi-kilo,
[email protected]:/etc/ceph|⇒  rbd ls volumes-maqi-kilo --keyring ceph.client.cinder.keyring --id cinder-maqi-kilo

沒有報錯,所以如果cinder-volume用這些配置的話應該沒問題。

cinder.conf也沒問題:

[email protected]-kilo:/etc/ceph|⇒  grep cinder-maqi-kilo /etc/cinder/cinder.conf
rbd_user = cinder-maqi-kilo
[email protected]-kilo:/etc/ceph|⇒  grep volumes-maqi-kilo /etc/cinder/cinder.conf
rbd_pool = volumes-maqi-kilo

現在的問題是,啟動cinder-volume時,在ceph-mon上抓包,根本看不到cinder-volume發過來的包!!但是直接在cinder-volume節點上執行ceph osd lspools時,能抓到包。看起來像cinder-volume沒有讀取到ceph.conf中的mon IP地址呢?

嘗試用rados.py/rdb.py連線ceph cluster(文件

>>> import rados
>>> import rbd
>>> cluster = rados.Rados(conffile='/etc/ceph/ceph.conf')
>>> cluster.connect()
>>> ioctx = cluster.open_ioctx('rbd')
>>> rbd_inst = rbd.RBD()
>>> size = 4 * 1024**3
>>> rbd_inst.create(ioctx, 'testimage', size)
>>> rbd_inst.create(ioctx, 'testimage2', size)

也沒問題啊:

admin@maqi-kilo:/etc/ceph|⇒  rbd ls
myimage
testimage
testimage2

Update 2015/11/16:
大概能猜想到原因:cinder-volume用client cinder-maqi-kilo去連線ceph,但是在/etc/ceph/下找不到同名的(或者按照某種規則命名的)keyring檔案。
看了一下Rados類的初始化程式碼,如果不指定client,那麼就用預設的client.admin,而/etc/ceph/下存在ceph.client.admin.keyring檔案。我嘗試把這個keyring檔案拿走,那麼就連不上了:

>>> cluster = rados.Rados(conffile='/etc/ceph/ceph.conf')
>>> cluster.connect()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/rados.py", line 417, in connect
    raise make_ex(ret, "error calling connect")
rados.ObjectNotFound: error calling connect

最終的解決方法:
重新命名cinder-volume使用的keyring檔案:

[email protected]-kilo:/etc/ceph|⇒  cp -p ceph.client.cinder.keyring ceph.client.cinder-maqi-kilo.keyring
[email protected]-kilo:/etc/ceph|⇒  ll
total 24K
-rw-r--r-- 1 root  root   66 Nov 15 10:44 ceph.client.admin.keyring
-rw-r--r-- 1 admin admin  81 Nov 15 10:52 ceph.client.cinder-backup.keyring
-rw-r--r-- 1 admin admin  74 Nov 15 10:51 ceph.client.cinder.keyring
-rw-r--r-- 1 admin admin  74 Nov 15 10:51 ceph.client.cinder-maqi-kilo.keyring
-rw-r--r-- 1 admin admin  74 Nov 15 10:53 ceph.client.glance.keyring
-rw-r--r-- 1 root  root  289 Nov 15 10:39 ceph.conf

>>> cluster = rados.Rados(name='client.cinder-maqi-kilo', conffile='')
>>> cluster.connect()

相關推薦

配置Cephopenstack

嘗試給nova,cinder-volume/cinder-backup,glance配置Ceph作為後端。 先在devstack安裝的Kilo版本的環境中配置。 1. 建立pool [root@controller-1 ~]# ceph osd p

Openstack儲存總結之:使用Ceph叢集作為統一儲存

 前提條件 一個可以正常執行的Ceph叢集,該叢集採用ceph-deploy建立,dataprovider為管理節點,包括三個MON,四個MON 以及Openstack叢集,其中Openstack叢集假設Cinder,Glance都是安裝在叫做controllernod

windows10 配置vpn客戶

安裝客戶端 啟用 客戶 五步 安裝 資源管理器 網卡 cli windows 2017-05-08 1. 安裝客戶端軟件VPNClient_V100R001C02SPC703.exe 2. 新建vpn 安裝完成後,打開客戶端連接vpn,發現未啟用虛擬網卡(

windows server,nginx安裝,配置,運行nodeJS的web項目的實現,以及錯誤分析及解決方法

lease args app clu ali real-ip directory 很多 命令 如果對nodeJS的後端的系統,源代碼在github上,https://github.com/saucxs/nodeJSBlog ,如果覺得可以,請請star並fork項目 項目

mui 之ajax遇到的坑 後臺接受資料服務php

mui.ajax的官方模板為             mui.ajax(Host+'/app/index/newsinfo',{                 data:{id:newsId},                 dataType:'json',//伺服器返回

jfinal-admin 3.4 正式釋出,主體介面更換 layui 模板

   jfinal-admin 3.4 版本正式釋出啦。該版本主要進行了一些 Bug 修復,主要更新內容如下: 安全更新 注入指令碼預處理 (BasePathHandler 61 行 自行拓展 注入指令碼過濾); 登入進行雙重加密,先MD5後對稱解密; 主體介面更換為l

配置NGINX前端APACHE伺服器

最近使用nginx做前端,apache後端,就是讓nginx處理靜態檔案,把動態的轉交給apache處理,現在把配置方式整理如下1.1、反向代理過程Nginx前端,Apache後端過程其實很簡單,首先使用者訪問的是80埠的nginx,然後nginx將靜態內容留給自己,其餘的

OpenStack Cinder 多配置

type sat sas -c drivers 屬性 保持 span div 要啟用cinder多後端,必須配置/etc/cinder/cinder.conf文件中的enable_backends選項,它定義了一個用逗號分隔的配置組列表,每個配置組與一個後端關聯。每個配置組

Openstack配置--詳解NFS作為Cinder的儲存

材料: 1.現有一外接NFS儲存,大小為300G,路徑為:192.168.8.213:/test3/cinder 2.mitaka版本,已配置lvm後端儲存,大小為20G NFS後端儲存本地掛載(不掛載也不影響) 掛載到本地目錄 cd /root

1.快速部署ceph叢集(cephopenstack儲存)

Ceph 簡介(官網 http://docs.ceph.org.cn/start/intro/)不管你是想為雲平臺提供Ceph 物件儲存和/或 Ceph 塊裝置,還是想部署一個 Ceph 檔案系統或者把 Ceph 作為他用,所有 Ceph 儲存叢集的部署都始於部署一個個 Ce

KVM修改網絡模式Bridge,原有虛擬機該如何修改配置

bridge場景說明:KVM虛擬機之前沒有設置為Bridge模式,然後就直接創建虛擬機了(當時網卡模式選擇的為default),後來調整KVM網卡模式為Bridge後,虛擬機沒法正常聯網。[[email protected]/* */ ~]# virsh shudown CentOS-7.3-X8

ueditor 配置項沒有正常加載,上傳插件不能正常使用!

建議 工廠 代碼 修改 area mat 結構 editor 例如 我用的是開發版,1.4.3.3 .Net版 網上查了很多,後來發現只是配置的問題而已。 在根目錄下:config.json 其中有Img上傳的配置:imageUrlPrefix 這個是你上傳完成後,在文本編

小程序調用接口服務 配置文件詳解

簡單 開發 符號 交流 con 階段 什麽 效率 頁面 前言:為了開發階段的效率更高,方便項目接口管理,在做web項目時,我們需要把後端提供的接口地址進行配置,這樣我們自己在調用時,要方便得多,利己利人。在配置小程序接口地址時,和web的配置大同小異,下面總結幾點配置小程序

Openstack Cinder使用NetApp NFS作為存儲

backward for except parse ont secure snapshot 管理員 類型 公司使用NetApp FS8020 R6作為測試環境NFS存儲使用。正好有機會測一下OpenStack的Cinder跟NetApp存儲集成。 說明: 1.OpenSta

(java web方向)如何讓你的簡歷你爭取到更多的面試機會,內容來自java web輕量級開發面試教程

java web輕量級開發面試教程 我們在做培訓時,會發現一個不合理的情況,一些程序員能力不錯,在公司裏也是技術牛人,但發出去的簡歷往往會石沈大海,沒有回復。對於剛畢業的大學生或工作年限在2年之內的程序員,這個情況會更嚴重。 這種情況下,其實不是你的能力有問題,而是簡歷篩選人(往往是人事

跨域cors中如何傳遞cookie(前端什麽無法向傳遞cookie?)

con sam bsp ble 情況 需求 nbsp 什麽 gin 沒有跨域 後端server只要在回應頭部‘set-cookie’,那麽就會有cookie產生並保存在客戶端client。 等到client再次向後端server發送請求時瀏覽器的機制就會自動攜帶cook

PHP UEditor富文本編輯器 顯示 配置項沒有正常加載,上傳插件不能正常使用

後端 出錯 內容 www bsp 正常 用戶體驗 打開 src UEditor是由百度web前端研發部開發所見即所得富文本web編輯器,具有輕量,可定制,註重用戶體驗等特點,開源基於MIT協議,允許自由使用和修改代碼... 問題描述 我的編輯器在本地測試的時候沒問題,但

Skype For Business 2015綜合部署系列三:配置SkypeSQL數據服務器

sql server 2012 部署 skype for business sfb後端數據服務器部署 sql安裝配置 windows 安裝sql 2012 本篇博文進入Skype for business 2015 綜合部署系列的第三部分:配置Skype for business 201

交換機Hybrid配置

ffffff 模式 process 實現 端口 cto 2.0 tex 創建vlan 一、 實驗目的通過Hybrid端口,實現不同VLAN間PC不可互訪,而不同VLAN的PC均可訪問服務器。 二、 實驗環境1. 軟件eNSP 1.2.00.500 虛擬設備PC:PC

apache配置轉發到的tomcat/jira

ever lis font all origin context 客戶 att resp 在/etc/httpd/conf/httpd.conf增加一個轉發模塊 或者在/etc/httpd/conf.d/中新建一個jira.conf的配置文件<VirtualHo