博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenStack安装流程(juno版)- 添加块存储服务(cinder)
阅读量:5879 次
发布时间:2019-06-19

本文共 7986 字,大约阅读时间需要 26 分钟。

OpenStack的Block Storage服务(cinder)是为虚拟机提供长期持久性存储的。

在controller节点上的安装和配置

创建cinder的数据库,服务证书和API端点

  1. 创建数据库:
    使用root身份进入数据库:
    $ mysql -u root -p

    创建cinder数据库:

    <pre>CREATE DATABASE cinder;</pre>

    把cinder数据库的访问权限赋予名为cinder,来自任何主机地址的用户,并设定访问密码为CINDER_DBPASS(替换为合适的密码):

    <pre>GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'CINDER_DBPASS';

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

退出数据库。

  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。

admin角色赋予给nova用户:

$ keystone user-role-add --user cinder --tenant service --role admin
这条命令不产生输出显示。

创建cinder服务实体:

<pre>$ keystone service-create --name cinder --type volume \

--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 \

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

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

Block Storage服务需要两个不同的服务实体,来支持API版本1和版本2。

  1. 创建Block Storage服务的API端点:
    <pre>$ keystone endpoint-create \

--service-id $(keystone service-list | awk '/ volume / {print $2}') \

--publicurl :8776/v1/%(tenant_id)s \
--internalurl :8776/v1/%(tenant_id)s \
--adminurl :8776/v1/%(tenant_id)s \

--region regionOne
Property Value
adminurl :8776/v1/%(tenant_id)s
id 81c2597ca13246f0adb767bf4f8abff3
internalurl :8776/v1/%(tenant_id)s
publicurl :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 :8776/v2/%(tenant_id)s \
--internalurl :8776/v2/%(tenant_id)s \
--adminurl :8776/v2/%(tenant_id)s \

--region regionOne
Property Value
adminurl :8776/v2/%(tenant_id)s
id b064cab8aeaa4cbca3983900f222a378
internalurl :8776/v2/%(tenant_id)s
publicurl :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 = :5000/v2.0
identity_uri = :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.13netmask 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 = :5000/v2.0
identity_uri = :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 u" "trusty-updates/juno main" > /etc/apt/sources.list.d/cloudarchive-juno.list# apt-get update && apt-get dist-upgrade,更新完后重启controller和block节点重启创立volume。

转载地址:http://dccix.baihongyu.com/

你可能感兴趣的文章
WannaCry警示:学会检测和减轻云端恶意内容
查看>>
光纤将在5G发展中发挥关键作用
查看>>
思博伦推出Temeva平台:“云中测试”成为可能
查看>>
移动CRM风起云涌 千亿级市场显现
查看>>
韩国SK电讯宣布成功研发量子中继器
查看>>
TCP - WAIT状态及其对繁忙的服务器的影响
查看>>
安全预警:全球13.5亿的ARRIS有线调制解调器可被远程攻击
查看>>
麦子学院与阿里云战略合作 在线教育领军者技术实力被认可
查看>>
正确看待大数据
查看>>
Facebook通过10亿单词构建有效的神经网络语言模型
查看>>
2016股市投资风向标 大数据说了算
查看>>
发展大数据不能抛弃“小数据”
查看>>
25000个布满恶意软件的摄像头组成的僵尸网络
查看>>
FB全球开放360度直播功能 首先需要一个FB账号
查看>>
量子通信成信息安全领域发展重点 潜在市场望达1000亿元
查看>>
数据中心新的自动化运维技术
查看>>
OpenFlow下一步该怎么走?
查看>>
CoreOS为容器安全带来不同方法
查看>>
关于智慧城市建设要点问题的思考
查看>>
采用大数据分析电信领域顾客行为
查看>>