作者:黄 凯 毛伟杰 顾骏杰 

2.1.4 块存储节点的安装

块存储节点负责提供volume(云硬盘)。Cinder服务可以在块存储上创建volume,以块存储的形式通过iSCSI提供给计算节点,计算节点使用底层的libvirt库把volume块存储挂载给虚拟机使用。
在控制节点上已经安装了cinder-api和cinder-scheduler,在真正的块存储节点上需要安装cinder-volume的服务,它调度相应程序,在节点上创建或删除volume,并更新维护volume在数据库中的状态。cinder-volume可以使用多种后端来创建块存储,最简单的方式是使用LVM(使用一个vg,然后在这个vg上创建lv作为volume)。我们在测试中也使用LVM的后端。
1.?系统环境准备
操作系统仍旧使用Ubuntu 12.04 LTS。网络节点需要一个网口,即network-2。这个网络除了和控制节点进行Rabbit MQ、MySQL数据通信之外,还和计算节点进行iSCSI的数据通信。在实际环境中,所有的虚拟机和云硬盘数据都通过这个网络,可能造成虚拟机读写volume的瓶颈问题,因此,可以考虑使用单独的网络和计算节点连接,必要时可以采取网口绑定或采用10Gbit/s网络。
1)进行网络IP设置,代码如下:

# cat /etc/network/interfaces
auto eth1
iface eth1 inet static
address 10.80.80.13
netmask 255.255.255.0

笔者这样设置是不能连接外网的,但由于需要安装软件,因此读者可以先用其他能连接Internet的网络代替。
2)重启网络,命令如下:

# /etc/init.d/networking restart

3)添加Havana的源,代码如下:

# apt-get install -y python-software-properties
# add-apt-repository cloud-archive:havana
# apt-get update -y
# apt-get upgrade -y
# apt-get dist-upgrade -y

更新完系统之后,可以根据实际情况重启服务器。
4)同步时间,代码如下:

# apt-get install -y ntp
# vi /etc/ntp.conf

编辑ntp.conf,在控制节点的IP中加入下面的一行,并且放在所有“server ntp服务器域名”的行之前,或者删除其他关于server ntp服务器的行。

server 10.80.80.10

2.?安装配置cinder-volume
因为使用LVM作为后端,所以必须安装lvm2包。安装命令如下:

# apt-get install lvm2

确保系统中有除了安装系统所在的盘之外的一块单独的硬盘或者使用RAID做的盘。可以使用命令fdisk-l查看。在笔者的环境中,系统安装在/dev/sda中,笔者有额外的一块硬盘/dev/sdb,用它创建一个vg,命名为cinder-volume,其代码如下:

# pvcreate /dev/sdb
# vgcreate cinder-volumes /dev/sdb

安装cinder-volume组件和相关的包,命令如下:

# apt-get -y install cinder-volume python-mysqldb

配置cinder.conf文件,这个文件和控制节点的cinder.conf文件大致相同,唯一不同的是需要改变rabbit_host参数和数据库的connection参数,把其中的IP都设置成控制节点的IP,而在控制节点上的配置文件中,这两个参数的IP可以是localhost。其代码如下:

# vi /etc/cinder/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
debug = True
verbose = True
auth_strategy = keystone
state_path = /var/lib/cinder
lock_path = /var/lock/cinder
volumes_dir = /var/lib/cinder/volumes

rabbit_host = 10.80.80.10
rabbit_password = C1oud-open

[database]
connection = mysql://cinderuser:OPenstack@10.80.80.10/cinder

重启服务,命令如下:

# service cinder-volume restart

全部完成之后,可以在控制节点上运行命令cinder-manage service list,查看cinder-volume服务是否正常运行。