OpenStack安裝流程(juno版)- 添加塊存儲服務(cinder)

OpenStack的Block Storage服務(cinder)是爲虛擬機提供長期持久性存儲的。python

在controller節點上的安裝和配置

建立cinder的數據庫,服務證書和API端點

  1. 建立數據庫:
    使用root身份進入數據庫:
    $ mysql -u root -p

    建立cinder數據庫:
    <pre>CREATE DATABASE cinder;</pre>mysql

    把cinder數據庫的訪問權限賦予名爲cinder,來自任何主機地址的用戶,並設定訪問密碼爲CINDER_DBPASS(替換爲合適的密碼):
    <pre>GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'CINDER_DBPASS';sql

GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'CINDER_DBPASS';</pre>數據庫

退出數據庫。ubuntu

  1. 啓動admin證書:
    $ source admin-openrc.sh
  2. 建立服務證書:
    建立cinder用戶:
    <pre>$ keystone user-create --name cinder --pass CINDER_PASS
Property Value
email
enabled True
id 9408ad96b4c84f60bc8e7234831e30dd
name cinder
username cinder

+----------+----------------------------------+</pre>
用合適的密碼代替CINDER_PASS。api

admin角色賦予給nova用戶:
$ keystone user-role-add --user cinder --tenant service --role admin
這條命令不產生輸出顯示。網絡

建立cinder服務實體:
<pre>$ keystone service-create --name cinder --type volume \curl

--description "OpenStack Block Storage"
Property Value
description OpenStack Block Storage
enabled True
id f9684c0c5ac847dba5272a921c0029bd
name cinder
type volume

+-------------+----------------------------------+</pre>
<pre>$ keystone service-create --name cinderv2 --type volumev2 \ide

--description "OpenStack Block Storage"
Property Value
description OpenStack Block Storage
enabled True
id 3a0192ba67b14b8996260439a2c63922
name cinderv2
type volumev2

+-------------+----------------------------------+</pre>
Block Storage服務須要兩個不一樣的服務實體,來支持API版本1和版本2。url

  1. 建立Block Storage服務的API端點:
    <pre>$ keystone endpoint-create \

--service-id $(keystone service-list | awk '/ volume / {print $2}') \
--publicurl http://controller:8776/v1/%(tenant_id)s \
--internalurl http://controller:8776/v1/%(tenant_id)s \
--adminurl http://controller:8776/v1/%(tenant_id)s \

--region regionOne
Property Value
adminurl http://controller:8776/v1/%(tenant_id)s
id 81c2597ca13246f0adb767bf4f8abff3
internalurl http://controller:8776/v1/%(tenant_id)s
publicurl http://controller:8776/v1/%(tenant_id)s
region regionOne
service_id f9684c0c5ac847dba5272a921c0029bd

+-------------+-----------------------------------------+</pre>
<pre>$ keystone endpoint-create \
--service-id $(keystone service-list | awk '/ volumev2 / {print $2}') \
--publicurl http://controller:8776/v2/%(tenant_id)s \
--internalurl http://controller:8776/v2/%(tenant_id)s \
--adminurl http://controller:8776/v2/%(tenant_id)s \

--region regionOne
Property Value
adminurl http://controller:8776/v2/%(tenant_id)s
id b064cab8aeaa4cbca3983900f222a378
internalurl http://controller:8776/v2/%(tenant_id)s
publicurl http://controller:8776/v2/%(tenant_id)s
region regionOne
service_id 3a0192ba67b14b8996260439a2c63922

+-------------+-----------------------------------------+</pre>
同理,Block Storage服務也須要兩個不一樣的端點來支持API版本1和版本2。

在controller節點上安裝和配置Block Storage組件

  1. 安裝所需包:
    # apt-get install cinder-api cinder-scheduler python-cinderclient
  2. 編輯# /etc/cinder/cinder.conf文件:

    [database]部分,設定數據庫的訪問選項:
    <pre>[database]

...
connection = mysql://cinder:CINDER_DBPASS@controller/cinder</pre>
CINDER_DBPASS爲建立cinder數據庫時設立的密碼。

[DEFAULT]部分,設定RabbitMQ的訪問選項:
<pre>[DEFAULT]
...
rpc_backend = rabbit
rabbit_host = controller
rabbit_password = RABBIT_PASS
</pre>
RABBIT_PASS爲RabbitMQ guest帳戶的密碼。

[DEFAULT][keystone_authtoken]部分,設定認證服務的訪問選項:
<pre>[DEFAULT]
...
auth_strategy = keystone
</pre>
<pre>[keystone_authtoken]
...
auth_uri = http://controller:5000/v2.0
identity_uri = http://controller:35357
admin_tenant_name = service
admin_user = cinder
admin_password = CINDER_PASS
</pre>
CINDER_PASS爲建立cinder用戶時使用的密碼。在[keystone_authtoken]部分,註釋掉 auth_host,auth_port,和auth_protocol的選項,由於identity_uri選項是直接代替它們的。

[DEFAULT]部分,設定my_ip選項,其值爲controller節點在management網絡中的IP地址:
<pre>[DEFAULT]
...
my_ip = 10.10.10.10
</pre>

[DEFAULT]部分,開啓「詳細輸出日誌」選項:
<pre>[DEFAULT]
...
verbose = True
</pre>

  1. 同步數據庫:

# cinder-manage db sync

完成安裝

  1. 重啓Block Storage服務:

# service cinder-scheduler restart
# service cinder-api restart

  1. 刪除Ubuntu默認產生的SQLite數據庫:

# rm -f /var/lib/cinder/cinder.sqlite

在block節點上的安裝和配置

block節點的基礎環境配置

由前文所述的虛擬機模版建立block節點,基礎環境配置以下:

配置存儲

爲block節點增添一塊硬盤:設置->存儲->控制器:SATA->添加虛擬硬盤。

配置網絡

block節點虛擬機網絡設置,設置->網絡:

  1. 網卡1,鏈接方式->僅主機(Host-Only)適配器,界面名稱->VirtualBox Host-Only Ethernet Adapter #2,控制芯片->準虛擬化網絡(virtio-net),混雜模式->所有容許,接入網線->勾選;
  2. 網卡2,鏈接方式->網絡地址轉換(NAT),控制芯片->準虛擬化網絡(virtio-net),接入網線->勾選。

啓動虛擬機後,配置其網絡,經過更改# vi /etc/network/interfaces文件,添加以下代碼:
<pre># The management network interface
auto eth0
iface eth0 inet static

address 10.10.10.13
netmask 255.255.255.0

The NAT network

auto eth1
iface eth1 inet dhcp</pre>

配置命名的解決方案,更改# vi /etc/hostname文件,將主機名改成block,更改# vi /etc/hosts文件,添加如下代碼:
<pre>10.10.10.10 controller
10.10.10.11 compute
10.10.10.12 network
10.10.10.13 block
10.10.10.14 object1
10.10.10.15 object2
</pre>

以後重啓系統激活配置。

配置NTP

修改配置文件# vi /etc/ntp.conf,添加以下代碼:

<pre>server controller iburst</pre>
其餘server所有都註釋掉。若是/var/lib/ntp/ntp.conf.dhcp文件存在,則刪除之。

重啓NTP服務:# service ntp restart

配置LVM

安裝LVM包:
# apt-get install lvm2

建立LVM物理卷(physical volume)/dev/sdb
<pre># pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created
</pre>

建立LVM卷的group,命名爲cinder-volume:
<pre># vgcreate cinder-volumes /dev/sdb
Volume group "cinder-volumes" successfully created
</pre>
Block Storage服務在這個group中建立logical volume。

編輯文件/etc/lvm/lvm.conf
[devices]部分,增添一個過濾器,來接受/dev/sdb設備,拒絕其餘設備:
<pre>devices {
...
filter = [ "a/sdb/", "r/.*/"]
</pre>
若是存儲節點在操做系統的磁盤上使用LVM,則一樣必須把相應的設備也添加到過濾器中。例如,若是/dev/sda設備包含操做系統:
<pre>filter = [ "a/sda/", "a/sdb/", "r/.*/"]</pre>

安裝和配置Block Storage volume組件

  1. 安裝包:

# apt-get install cinder-volume python-mysqldb

  1. 編輯# vi /etc/cinder/cinder.conf文件:

    [database]部分,設定數據庫的訪問選項:
    <pre>[database]

...
connection = mysql://cinder:CINDER_DBPASS@controller/cinder</pre>
CINDER_DBPASS爲建立cinder數據庫時設立的密碼。

[DEFAULT]部分,設定RabbitMQ的訪問選項:
<pre>[DEFAULT]
...
rpc_backend = rabbit
rabbit_host = controller
rabbit_password = RABBIT_PASS
</pre>
RABBIT_PASS爲RabbitMQ guest帳戶的密碼。

[DEFAULT][keystone_authtoken]部分,設定認證服務的訪問選項:
<pre>[DEFAULT]
...
auth_strategy = keystone
</pre>
<pre>[keystone_authtoken]
...
auth_uri = http://controller:5000/v2.0
identity_uri = http://controller:35357
admin_tenant_name = service
admin_user = cinder
admin_password = CINDER_PASS
</pre>
CINDER_PASS爲建立cinder用戶時使用的密碼。在[keystone_authtoken]部分,註釋掉 auth_host,auth_port,和auth_protocol的選項,由於identity_uri選項是直接代替它們的。

[DEFAULT]部分,設定my_ip選項:
<pre>[DEFAULT]
...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
</pre>
MANAGEMENT_INTERFACE_IP_ADDRESS爲block節點在management網絡中的IP地址,10.10.10.13。

[DEFAULT]部分,設定鏡像服務的位置:
<pre>[DEFAULT]
...
glance_host = controller
</pre>

[DEFAULT]部分,開啓「詳細輸出日誌」選項:
<pre>[DEFAULT]
...
verbose = True
</pre>

完成安裝

  1. 重啓Block Storage volume服務和它的依賴庫:
    # service tgt restart
    # service cinder-volume restart
  2. 刪除Ubuntu默認產生的SQLite數據庫:

# rm -f /var/lib/cinder/cinder.sqlite

驗證操做

在controller節點上執行如下操做。

  1. 啓動admin證書:
    $ source admin-openrc.sh
  2. 顯示服務列表,驗證各個進程已成功啓動:
    <pre>$ cinder service-list
Binary Host Zone Status State Updated_at Disabled Reason
cinder-scheduler controller nova enabled up 2015-11-30T12:43:21.000000 None
cinder-volume controller nova enabled up 2015-11-30T12:43:21.000000 None

+------------------+------------+------+---------+-------+----------------------------+-----------------+</pre>

  1. 啓動demo證書:
    $ source demo-openrc.sh
  2. 建立1G的卷:
    <pre>$ cinder create --display-name demo-volume1 1
Property Value
attachments []
availability_zone nova
bootable false
created_at 2015-11-30T12:47:36.439726
display_description None
display_name demo-volume1
encrypted False
id 37aadd33-708e-4236-a8a7-1ddc82cca624
metadata {}
size 1
snapshot_id None
source_volid None
status creating
volume_type None

+---------------------+--------------------------------------+</pre>

  1. 驗證建立是否成功,建立的卷是否可用:
    <pre>$ cinder list
ID Status Display Name Size Volume Type Bootable Attached to
37aadd33-708e-4236-a8a7-1ddc82cca624 available demo-volume1 1 None false

+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+</pre>

安裝時出現的問題及解決方法

配置完cinder組件後,創立1GB的volume後執行cinder list,建立的volume狀態一直爲creating,緣由是block節點上cinder版本和controller節點上的版本有區別,解決過程:安裝Ubuntu雲archive keyring和庫# apt-get install ubuntu-cloud-keyring# echo "deb http://ubuntu-cloud.archive.c...u" "trusty-updates/juno main" > /etc/apt/sources.list.d/cloudarchive-juno.list# apt-get update && apt-get dist-upgrade,更新完後重啓controller和block節點重啓創立volume。

相關文章
相關標籤/搜索