Sep 042014
 

继续在Unitestack的UOS下测试,看来今天要把cinder装上才行。老外的文档还没出来,我就只能对着官方文档,慢慢整理。

采用单独的存储节点作为存储.

控制节点

在控制节点上,我们需要安装cinder api和schedule两个服务.

 

apt-get -y install cinder-api cinder-scheduler

创建数据库

CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'CINDER_DBPASS';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'CINDER_DBPASS';
exit;

创建用户

keystone user-create --name=cinder --pass=service_pass --email=cinder@domain.com
keystone user-role-add --user=cinder --tenant=service --role=admin

endpoint

keystone service-create --name=cinder --type=volume --description="OpenStack Block Storage"
keystone endpoint-create \
  --service-id=$(keystone service-list | awk '/ volume / {print $2}') \
  --publicurl=http://10.0.0.11:8776/v1/%\(tenant_id\)s \
  --internalurl=http://10.0.0.11:8776/v1/%\(tenant_id\)s \
  --adminurl=http://10.0.0.11:8776/v1/%\(tenant_id\)s

keystone service-create --name=cinderv2 --type=volumev2 --description="OpenStack Block Storage v2"
keystone endpoint-create \
  --service-id=$(keystone service-list | awk '/ volumev2 / {print $2}') \
  --publicurl=http://10.0.0.11:8776/v2/%\(tenant_id\)s \
  --internalurl=http://10.0.0.11:8776/v2/%\(tenant_id\)s \
  --adminurl=http://10.0.0.11:8776/v2/%\(tenant_id\)s

修改配置文件 /etc/cinder.conf

[DEFAULT]
rootwrap_config = /etc/cinder/rootwrap.conf
api_paste_confg = /etc/cinder/api-paste.ini
iscsi_helper = tgtadm
volume_name_template = volume-%s
volume_group = cinder-volumes
verbose = True
auth_strategy = keystone
state_path = /var/lib/cinder
lock_path = /var/lock/cinder
volumes_dir = /var/lib/cinder/volumes

rpc_backend = cinder.openstack.common.rpc.impl_kombu
rabbit_host = 10.0.0.11
rabbit_port = 5672
rabbit_userid = guest
rabbit_password = guest



[database]
connection = mysql://cinder:CINDER_DBPASS@10.0.0.11/cinder


[keystone_authtoken]
auth_uri = http://10.0.0.11:5000
auth_host = 10.0.0.11
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = cinder
admin_password = service_pass

同步数据库

cinder-manage db sync

重启服务

service cinder-scheduler restart
service cinder-api restart

存储节点

创建一个虚拟机,只需要1块网卡就可以,接入到管理网络里就可以。

存储节点的IP为:10.0.0.41,不过我们需要上网安装软件,所以把虚拟机接入到外部网络,装完后,可以断掉。创建1块100G的云硬盘,作为cinder volume使用。

升级内核

apt-get update -y && apt-get upgrade -y && apt-get dist-upgrade

安装lvm工具

apt-get install lvm2

 

安装iscsi软件

apt-get -y install iscsitarget open-iscsi iscsitarget-dkms

最新版本的内核有冲突,内核版本要降级。

apt-get install linux-headers-3.13.0-32-generic

配置iscsi服务

sed -i 's/false/true/g' /etc/default/iscsitarget

重启服务

service iscsitarget start
service open-iscsi start

同步时间

apt-get install -y ntp

编辑 /etc/ntp.conf

server 10.0.0.11

重启NTP服务

service ntp restart

安装python-mysqldb,因为需要通过python去连接数据库

apt-get install python-mysqldb

创建cinder-volumes卷

pvcreate /dev/vdb
vgcreate cinder-volumes /dev/vdb

编辑 /etc/lvm/lvm.conf 添加一个filter

 # By default we accept every block device:
    filter = [ "a/.*/" ]
    filter = [ "a/vda1/", "a/vdb/", "r/.*/"]

安装cinder

apt-get -y install cinder-volume

编辑 /etc/cinder/cinder.conf , 和控制节点区别就在多了一个glance host的设置

[DEFAULT]
rootwrap_config = /etc/cinder/rootwrap.conf
api_paste_confg = /etc/cinder/api-paste.ini
iscsi_helper = tgtadm
volume_name_template = volume-%s
volume_group = cinder-volume
verbose = True
auth_strategy = keystone
state_path = /var/lib/cinder
lock_path = /var/lock/cinder
volumes_dir = /var/lib/cinder/volumes

glance_host = 10.0.0.11

rpc_backend = cinder.openstack.common.rpc.impl_kombu
rabbit_host = 10.0.0.11
rabbit_port = 5672
rabbit_userid = guest
rabbit_password = guest



[database]
connection = mysql://cinder:CINDER_DBPASS@10.0.0.11/cinder


[keystone_authtoken]
auth_uri = http://10.0.0.11:5000
auth_host = 10.0.0.11
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = cinder
admin_password = service_pass

重启服务

service cinder-volume restart
service tgt restart

验证

检测cinder服务是否正常

# cinder service-list
+------------------+------------+------+---------+-------+----------------------------+
|      Binary      |    Host    | Zone |  Status | State |         Updated_at         |
+------------------+------------+------+---------+-------+----------------------------+
| cinder-scheduler | controller | nova | enabled |   up  | 2014-09-04T17:13:28.000000 |
|  cinder-volume   |   cinder   | nova | enabled |   up  | 2014-09-04T17:13:27.000000 |
+------------------+------------+------+---------+-------+----------------------------+

创建一个卷

cinder list
cinder create --display-name myVolume 1

 

参考文档

http://askubuntu.com/questions/63621/iscsi-trgt-missing-because-cant-build-kernel-module

https://www.mail-archive.com/openstack@lists.openstack.org/msg08267.html

http://www.rackspace.com/blog/laying-cinder-block-volumes-in-openstack-part-2-solutions-design/

  8 Responses to “Openstack Cinder Installation Guide”

  1. 沙克老师,cinder部署的时候只连出去一个管理网络。如果一个虚拟机挂载了硬盘的话,那硬盘里存储的那些数据都是从管理网络进去的吗?这样感觉不是很合理啊。
    您那里有没有看到一些关于启动一个虚拟机之后内部的详细交互讲解的文档可以分享??
    期待您的回答!

  2. 沙克老师,我参考了您回复的博客和下面这篇博文,成功配置出了存储网络,您可以参考试一下!
    http://kiwik.github.io/openstack/2013/08/10/Openstack_Cinder配置iscsi存储专用网络/

  3. 陈老师您好,我在ubuntu14.04上安装openstack juno版本,按照官方版本没有成功,所以过来看看您的安装步骤,不过也没有成功。
    我有个疑问,block node的/etc/cinder/cinder.conf下的iscsi_helper 的值,有ietadm和tgtdm之分,我两种都试过,好像都不行。
    您这文里,既然安装了 iscsitarget open-iscsi iscsitarget-dkms,但是好像没有使用,不知道我理解错了没有。参考文章:http://cloudnil.com/2014/05/15/iscsitarget-and-tgt/

  4. 问一下 增加 storage node 该如何做

  5. 这个配置的方法是有一个storage node ,但是我们如果真实生产环境中用的话,肯定会有自己的物理存储。那么我们该怎么连接呢?比如说我现在有一个华为的存储,我用的是iscsi,划了100G,我该怎么连接这个存储给我的cinder呢?我根据官网的方法来操作,写了一个cinder_huawei_confi.xml,并且成功的创建了云硬盘,但是此时我发现他并没有使用我之前的那个100G的LUN,而是重新新建的跟我所需的云硬盘大小一样的LUN,那么问题来了。我发现openstack 并不能够使iscsi成功的挂载给我的云主机。一个虚拟机是两部分组成的系统盘+数据盘,而系统盘是在nova computer上面放置的,如果我在虚拟机中新建了一个LAMP平台,那么nova compute挂了,我的系统不就没有了吗?虽然我的LUN在,但是他也并没有像我们使用vmware那样达到HA的目的呀。俺对openstack是小白才入门两周,之前一直是搞vmware/hyper/fusion的,还望指点呀!

 Leave a Reply

(required)

(required)