OpenStack 搭建(三)

OpenStack存儲模塊-Cinderhtml

在前兩篇文檔中介紹了OpenStack的一些基礎搭建,可是並無加入存儲模塊。這篇主要介紹一下openstack的存儲模塊Cinder.node

存儲主要分爲三種:python

  • 塊存儲:硬盤,存儲設備,磁盤整列等。mysql

  • 文件存儲:如NFS,FTP等主要用於文件共享的存儲。正則表達式

  • 對象存儲:分佈式文件系統,swift等。有metadata(元數據)的數據描述做爲支持的存儲方式。
    sql

Cinder支持以上的多種存儲方式。數據庫


Cinder組件swift

  • cinder-api: 接受API的請求,路由到cinder-volume來執行。後端

  • cinder-volume:響應請求,讀取或寫入數據庫維護狀態信息,經過消息隊列機制與其它進程交互(如cinder-scheduler),也能夠直接與上層塊存儲提供的硬件或軟件進行交互。管理存儲。api

  • cinder-scheduler: 守護進程。相似於Nova-scheduler,爲存儲實例選擇最優的塊存儲節點。

  • cinder-backup:守護進程。服務提供任何種類備份捲到一個備份存儲提供者。就像``cinder-volume``服務,它與多種存儲提供者在驅動架構下進行交互。


Cinder數據庫配置和註冊服務

http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/cinder-controller-install.html 

建立數據庫並受權:

MariaDB [(none)]> CREATE DATABASE cinder;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'cinder';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%'  IDENTIFIED BY 'cinder';

建立服務證書,完成這些步驟:

# source  admin-openstack.sh 
# openstack user create --domain default --password-prompt cinder

添加 admin 角色到 cinder 用戶上:

# openstack role add --project service --user cinder admin

建立 cinder 和 cinderv2 服務實體:

# openstack service create --name cinder  --description "OpenStack Block Storage" volume
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Block Storage          |
| enabled     | True                             |
| id          | 27b797388aaa479ea5542048df32b3d8 |
| name        | cinder                           |
| type        | volume                           |
+-------------+----------------------------------+
# openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Block Storage          |
| enabled     | True                             |
| id          | 85f9890df5444a5d9a989c96b630c7a7 |
| name        | cinderv2                         |
| type        | volumev2                         |
+-------------+----------------------------------+

建立塊設備存儲服務的 API 入口點,須要註冊兩個版本:

 openstack endpoint create --region RegionOne  volume public http://172.16.10.50:8776/v1/%\(tenant_id\)s
 openstack endpoint create --region RegionOne  volume internal http://172.16.10.50:8776/v1/%\(tenant_id\)s
 openstack endpoint create --region RegionOne  volume admin http://172.16.10.50:8776/v1/%\(tenant_id\)s
 openstack endpoint create --region RegionOne volumev2 public http://172.16.10.50:8776/v2/%\(tenant_id\)s
 openstack endpoint create --region RegionOne volumev2 internal http://172.16.10.50:8776/v2/%\(tenant_id\)s
 openstack endpoint create --region RegionOne volumev2 admin http://172.16.10.50:8776/v2/%\(tenant_id\)s

Cinder安裝配置

在控制節點安裝cinder組件:

# yum install -y openstack-cinder

編輯 /etc/cinder/cinder.conf,同時完成以下動做:

配置數據庫(密碼爲cinder):

connection =  mysql+pymysql://cinder:cinder@172.16.10.50/cinder

同步塊設備服務的數據庫:

# su -s /bin/sh -c "cinder-manage db sync" cinder

確認數據庫同步成功:

# mysql -h 172.16.10.50 -ucinder -pcinder -e "use cinder;show tables;"

在 「[DEFAULT]」 和 「[oslo_messaging_rabbit]」部分,配置 「RabbitMQ」 消息隊列訪問:

[DEFAULT]
rpc_backend = rabbit
[oslo_messaging_rabbit]
...
rabbit_host = 172.16.10.50
rabbit_userid = openstack
rabbit_password = openstack

在 「[DEFAULT]」 和 「[keystone_authtoken]」 部分,配置認證服務訪問:

[DEFAULT]
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://172.16.10.50:5000
auth_url = http://172.16.10.50:35357
memcached_servers = 172.16.10.50:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = cinder

在 [oslo_concurrency] 部分,配置鎖路徑:

lock_path = /var/lib/cinder/tmp


編輯文件 /etc/nova/nova.conf 並添加以下到其中:

[cinder]
os_region_name= RegionOne

重啓nova-api:

# systemctl restart openstack-nova-api.service

啓動cinder-api(端口8776)和cinder-scheduler:

# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service


安裝配置存儲節點

存儲節點能夠配置在計算節點上,也能夠有其它的專用存儲服務,這裏使用計算機節點提供存儲服務。

計算節點上須要有一個外掛磁盤。

建立LVM 物理卷 /dev/sdb


建立 LVM 卷組 cinder-volumes

# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created
# vgcreate cinder-volumes /dev/sdb
  Volume group "cinder-volumes" successfully created

設置只有實例能夠訪問塊存儲卷組:

默認狀況下,LVM卷掃描工具會掃描``/dev`` 目錄,查找包含卷的塊存儲設備。若是項目在他們的捲上使用LVM,掃描工具檢測到這些卷時會嘗試緩存它們,可能會在底層操做系統和項目捲上產生各類問題。必須從新配置LVM,讓它只掃描包含``cinder-volume``卷組的設備。編輯``/etc/lvm/lvm.conf``文件並完成下面的操做:

在``devices``部分,添加一個過濾器,只接受``/dev/sdb``設備,拒絕其餘全部設備:

devices {
...
filter = [ "a/sdb/", "r/.*/"]

每一個過濾器組中的元素都以``a``開頭,即爲 accept,或以 r 開頭,即爲**reject**,而且包括一個設備名稱的正則表達式規則。過濾器組必須以``r/.*/``結束,過濾全部保留設備。您可使用 :命令:`vgs -vvvv` 來測試過濾器。


在存儲節點安裝配置cinder

安裝軟件包:

yum install -y openstack-cinder targetcli python-keystone

配置存儲節點的cinder:

在存儲節點的cinder配置和在控制節點的配置差異不是很大,能夠直接從控制節點拷貝並修改權限:

# scp /etc/cinder/cinder.conf  172.16.10.51:/etc/cinder/

在cinder.conf 的``[lvm]``部分,配置LVM後端以LVM驅動結束,卷組``cinder-volumes`` ,iSCSI 協議和正確的 iSCSI服務,若是沒有此模塊能夠手動添加:

[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = lioadm

[DEFAULT] 部分,啓用 LVM 後端:

enabled_backends = lvm

啓動塊存儲卷服務及其依賴的服務:

# systemctl enable openstack-cinder-volume.service target.service
# systemctl start openstack-cinder-volume.service target.service

在控制節點驗證是否配置成功,正常爲up狀態,若是不是UP狀態則不能添加雲硬盤:

# source  admin-openstack.sh 
# cinder service-list
+------------------+-----------+------+---------+-------+----------------------------+-----------------+
|      Binary      |    Host   | Zone |  Status | State |         Updated_at         | Disabled Reason |
+------------------+-----------+------+---------+-------+----------------------------+-----------------+
| cinder-scheduler |   node1   | nova | enabled |   up  | 2016-11-02T09:16:34.000000 |        -        |
|  cinder-volume   | node2@lvm | nova | enabled |   up  | 2016-11-02T09:16:39.000000 |        -        |
+------------------+-----------+------+---------+-------+----------------------------+-----------------+


爲虛擬機添加一個卷

http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/launch-instance-cinder.html 

以前已經安裝了Horizon,能夠直接經過dashboard添加雲硬盤操做。也能夠根據官方的文檔命令行添加雲硬盤。

若是在Web管理界面出現雲硬盤信息,說明添加成功。

wKioL1gZ0zujHBD-AABwHJy0spk718.jpg


查看虛擬機上是否有此虛擬硬盤:

$ sudo fdisk -l

Disk /dev/vdb: 1073 MB, 1073741824 bytes
16 heads, 63 sectors/track, 2080 cylinders, total 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

格式化硬盤,並mount:

$ sudo fdisk /dev/vdb 
n p w
$ sudo mkfs.ext4 /dev/vdb1
$ sudo  mount /dev/vdb1 /data/


能夠對正在運行的虛擬機上添加雲硬盤,不建議動態的擴容或收縮硬盤容量,可能會形成數據丟失的狀況。在實際生產環境中,不建議使用cinder的各類複雜功能。

相關文章
相關標籤/搜索