一、安装Cinder前的准备
1. 为Cinder创建数据库(在控制节点)
提示:以下操作在控制节点完成,为块存储服务创建数据库、服务认证和API端点
- 使用数据库客户端,以root用户连接到数据库中:
mysql -u root -p
- 创建Cinder数据库:
CREATE DATABASE cinder;
- 为Cinder用户授予数据库权限:
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'CINDER_DBPASS';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'CINDER_DBPASS';
2. 创建Cinder的身份认证证书
- 加载admin用户的客户端脚本:
source admin-openrc.sh
- 创建cinder用户:
openstack user create --password-prompt cinder
- 将admin角色添加给cinder用户:
openstack role add --project service --user cinder admin
- 创建cinder的服务实体(volume和volumev2两个服务实体):
openstack service create --name cinder --description "OpenStack Block Storage" volume
openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
- 创建计算服务的API endpoint(volume和volumev2两个端点:
openstack endpoint create --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 volume
openstack endpoint create --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 volumev2
二、在控制节点上安装和配置Cinder
1. 安装Cinder
- 安装Cinder:
apt-get install cinder-api cinder-scheduler python-cinderclient
2. 配置Cinder
编辑文件:/etc/cinder/cinder.conf
小助手:删除#和空格的命令:cat file | grep -v '^#' | grep -v '^$' > newfile
修改[database]部分,配置数据库的连接:
connection = mysql://cinder:CINDER_DBPASS@controller/cinder
记得密码替换为自己设置密码,这是mysql的密码,并非cinder用户的密码-
修改[DEFAULT]和[oslo_messaging_rabbit]两部分, 配置RabbitMQ消息队列的访问:
rpc_backend = rabbit
rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS
-
在[DEFAULT]和[keystone_authtoken]两部分,配置身份认证服务的访问:
auth_strategy = keystone
注意:修改[keystone_authtoken]部分要注释掉本部分其他的参数
auth_uri = http://controller:5000 auth_url = http://controller:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = cinder password = CINDER_PASS
-
修改[DEFAULT]部分的my_ip参数,配置控制节点的管理IP地址:
my_ip = 10.0.0.11
-
修改[oslo_concurrency]部分,配置锁路径:
lock_path = /var/lock/cinder
-
可选:在[DEFAULT]部分启用日志信息详细记录:
verbose = True
3. 配置Cinder数据库
- 为块存储服务数据库添加数据:
su -s /bin/sh -c "cinder-manage db_sync" cinder
4. 完成在控制节点上安装和配置Cinder
- 重启块存储服务Cinder:
service cinder-scheduler restart
service cinder-api restart
- 删除ubuntu默认创建的SQLite数据库:
rm -f /var/lib/cinder/cinder.sqlite
三、在块存储节点上安装和配置Cinder
1. 配置块存储的操作系统环境
编辑文件:/etc/hosts
配置管理接口:IP地址:10.0.0.41和10.0.2.41
配置主机名:block1
将blcok主机的/etc/hosts内容同步到其他所有节点:``
为主机添加新的磁盘,并创建分区:
fdisk /dev/sdb
安装LVM包:
apt-get install lvm2
配置LVM的物理卷:
pvcreate /dev/sdb1
创建LVM的卷组cinder-volumes:
vgcreate cinder-volumes /dev/sdb1
-
配置LVM仅仅扫描含有cinder-volume的卷组,编辑/etc/lvm/lvm.conf:
在devices部分,添加一个筛选器,仅仅允许/dev/sdb设备并拒绝所有其他设备:devices { ... filter = [ "a/sdb/", "r/.*/"]
检查过滤器是否起作用:
vgs -vvvv
2. 安装Cinder(在block1节点上)
- 安装Cinder:
apt-get install -y cinder-volume python-mysqldb
3. 配置Cinder
编辑Cinder的配置文件:/etc/cinder/cinder.conf
小助手:删除#和空格的命令:cat file | grep -v '^#' | grep -v '^$' > newfile
-
在[database]部分,配置数据库访问:
connection = mysql://cinder:CINDER_DBPASS@controller/cinder
-
在[DEFAULT]和[oslo_messaging_rabbit]两部分, 配置RabbitMQ消息队列的访问:
rpc_backend = rabbit
rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS
-
在[DEFAULT]和[keystone_authtoken]两部分,配置身份认证服务的访问:
auth_strategy = keystone
注意:修改[keystone_authtoken]部分要注释掉本部分其他的参数
auth_uri = http://controller:5000 auth_url = http://controller:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = cinder password = CINDER_PASS
-
修改[DEFAULT]部分的my_ip参数,配置块存储节点的管理IP地址:
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS(10.0.0.41)
-
在[lvm]部分,配置LVM驱动,卷组,iscsi的协议和helper:
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver volume_group = cinder-volumes iscsi_protocol = iscsi iscsi_helper = tgtadm
-
在[DEFAULT]部分,启用LVM作为后端存储系统:
enabled_backends = lvm
-
在[DEFAULT]部分,配置镜像服务运行的节点:
glance_host = controller
-
在[oslo_concurrency]部分,配置锁路径:
lock_path = /var/lock/cinder
-
可选:在[DEFAULT]部分启用日志信息详细记录:
verbose = True
4. 完成安装和配置Cinder
- 重启块存储服务Cinder:
service tgt restart
service cinder-volume restart
- 删除ubuntu默认创建的SQLite数据库:
rm -f /var/lib/cinder/cinder.sqlite
四、校验Cinder的安装
1. 校验Cinder的安装
提示:在控制节点上进行校验,尝试创建一个卷
- 在admin-openrc.sh和demo-openrc.sh两个脚本里添加块存储的客户端使用API v2.0:
echo "export OS_VOLUME_API_VERSION=2" | tee -a admin-openrc.sh demo-openrc.sh
- 加载admin客户端脚本:
source admin-openrc.sh
- 检查块存储服务启动的服务组件:
cinder service-list
应该有两个服务:controller和block1@lvm - 加载demo脚本:
source demo-openrc.sh
- 创建1GB的一个卷:
cinder create --name demo-volume1 1
- 创建卷是否创建成功,检查状态是否为可用,否则查看日志文件/var/log/cinder:
cinder list
2. 将卷添加到实例中
- 查看现有的实例,注意查看实例名和确保实例状态是active:
nova list
- 查看可用的卷,注意查看卷ID:
nova volume-list
- 查看连接实例的VNC URL:
nova get-vnc-console demo-instance1 novnc
- 在浏览器中连接实例
- 查看实例中的现有卷:
sudo fdisk -l
- 将查看到的卷添加到实例中:
nova volume-attach demo-instance1 158bea89-07db-4ac2-8115-66c0d6a4bb48
- 查看卷的状态,status应该是in-use:
nova volume-list
- 在浏览器中连接实例
- 在实例中验证卷是否添加到实例中:
sudo fdisk -l