7、块存储服务

7.1、安装并配置控制节点

7.1.1、创建数据库、服务证书和API端点。

7.1.1.1、完成下面的步骤以创建数据库:

用数据库连接客户端以 root 用户连接到数据库服务器:

$ mysql -u root -p


创建 cinder 数据库:

CREATE DATABASE cinder;

GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'P@ssw0rd';

GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'P@ssw0rd';


7.1.1.2、获得 admin 凭证来获取只有管理员能执行的命令的访问权限:

$ . admin-openrc


7.1.1.3、要创建服务证书,完成这些步骤:

创建一个 cinder 用户:

$ openstack user create --domain default --password-prompt cinder

设置密码:P@ssw0rd

Openstack Mitaka安装手顺(7)块存储服务_cinder


添加 admin 角色到 cinder 用户上。

$ openstack role add --project service --user cinder admin


创建 cinder 和 cinderv2 服务实体:

$ openstack service create --name cinder --description "OpenStack Block Storage" volume

$ openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2

注解:块设备存储服务要求两个服务实体。

Openstack Mitaka安装手顺(7)块存储服务_块存储服务_02


7.1.1.4、创建块设备存储服务的 API 入口点:

$ openstack endpoint create --region RegionOne volume public http://controller:8776/v1/%\(tenant_id\)s


$ openstack endpoint create --region RegionOne volume internal http://controller:8776/v1/%\(tenant_id\)s


$ openstack endpoint create --region RegionOne volume admin http://controller:8776/v1/%\(tenant_id\)s


$ openstack endpoint create --region RegionOne volumev2 public http://controller:8776/v2/%\(tenant_id\)s


$ openstack endpoint create --region RegionOne volumev2 internal http://controller:8776/v2/%\(tenant_id\)s


$ openstack endpoint create --region RegionOne volumev2 admin http://controller:8776/v2/%\(tenant_id\)s


注解:块设备存储服务每个服务实体都需要端点。


控制节点防火墙开放端口:8776

# firewall-cmd --permanent --add-port=8776/tcp

# firewall-cmd --reload


确认端口开放成功

# firewall-cmd --list-all


7.1.2、安全并配置组件

7.1.2.1、安装软件包:

# yum install -y openstack-cinder


7.1.2.2、编辑vi /etc/cinder/cinder.conf 同时完成如下动作:

在 [database] 部分,配置数据库访问:

connection = mysql+pymysql://cinder:P@ssw0rd@controller/cinder


在 “[DEFAULT]” 部分,配置 “RabbitMQ” 消息队列访问:

rpc_backend = rabbit

auth_strategy = keystone

my_ip = 111.111.111.201


在  “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问:

rabbit_host = controller

rabbit_userid = openstack

rabbit_password = P@ssw0rd


在 “[keystone_authtoken]” 部分,配置认证服务访问:

auth_uri = http://controller:5000

auth_url = http://controller:35357

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = cinder

password = P@ssw0rd


注解:在 [keystone_authtoken] 中注释或者删除其他选项。


在 [oslo_concurrency] 部分,配置锁路径:

lock_path = /var/lib/cinder/tmp


7.1.2.3、初始化块设备服务的数据库:

# su -s /bin/sh -c "cinder-manage db sync" cinder

Openstack Mitaka安装手顺(7)块存储服务_cinder_03

注解:忽略输出中任何不推荐使用的信息,不报错就可以了。


7.1.3、配置计算节点以使用块设备存储

编辑文件vi /etc/nova/nova.conf并添加如下到其中:

[cinder]

os_region_name = RegionOne


7.1.4、完成安装

7.1.4.1、重启计算API 服务:

# systemctl restart openstack-nova-api


7.1.4.2、启动块设备存储服务,并将其配置为开机自启:

# systemctl enable openstack-cinder-api openstack-cinder-scheduler

# systemctl start openstack-cinder-api openstack-cinder-scheduler

# systemctl status openstack-cinder-api openstack-cinder-scheduler


7.2、安装并配置一个存储节点(存储节点和计算节点配置在一起)

这个部分描述怎样为块存储服务安装并配置存储节点。为简单起见,这里配置一个有一个空的本地块存储设备的存储节点。这个向导用的是 /dev/sdb,但是你可以为你特定的节点中替换成不同的值。本次测试已经提前添加了/dev/sdb


该服务在这个设备上使用:term:LVM <Logical Volume Manager (LVM)> 提供逻辑卷,并通过:term:`iSCSI`协议提供给实例使用。您可以根据这些小的修改指导,添加额外的存储节点来增加您的环境规模。


7.2.1、先决条件

在你安装和配置块存储服务之前,你必须准备好存储设备。

7.2.1.1、安装支持的工具包:

安装 LVM 包:

# yum install -y lvm2


启动LVM的metadata服务并且设置该服务随系统启动:

# systemctl enable lvm2-lvmetad

# systemctl start lvm2-lvmetad

# systemctl status lvm2-lvmetad

注解:一些发行版默认包含了LVM。


7.2.1.2、创建LVM 物理卷 /dev/sdb:

# pvcreate /dev/sdb


7.2.1.3、创建 LVM 卷组 cinder-volumes:

# vgcreate cinder-volumes /dev/sdb


块存储服务会在这个卷组中创建逻辑卷。


7.2.1.4、只有实例可以访问块存储卷组。不过,底层的操作系统管理这些设备并将其与卷关联。默认情况下,LVM卷扫描工具会扫描``/dev`` 目录,查找包含卷的块存储设备。如果项目在他们的卷上使用LVM,扫描工具检测到这些卷时会尝试缓存它们,可能会在底层操作系统和项目卷上产生各种问题。您必须重新配置LVM,让它只扫描包含``cinder-volume``卷组的设备。

编辑vi /etc/lvm/lvm.conf文件并完成下面的操作:

在``devices``部分,添加一个过滤器,只接受``/dev/sdb``设备,拒绝其他所有设备:

devices {

...

filter = [ "a/sdb/", "r/.*/"]


每个过滤器组中的元素都以``a``开头,即为 accept,或以 r 开头,即为**reject**,并且包括一个设备名称的正则表达式规则。过滤器组必须以``r/.*/``结束,过滤所有保留设备。您可以使用 :命令:`vgs -vvvv` 来测试过滤器。


7.2.2、安全并配置组件

7.2.2.1、安装软件包:

# yum install -y openstack-cinder targetcli python-keystone


7.2.2.2、编辑vi /etc/cinder/cinder.conf,同时完成如下动作:

在 [database] 部分,配置数据库访问:

connection = mysql+pymysql://cinder:P@ssw0rd@controller/cinder


在 “[DEFAULT]”部分,配置 “RabbitMQ” 消息队列访问:

rpc_backend = rabbit

auth_strategy = keystone

my_ip = 111.111.111.202

enabled_backends = lvm

glance_api_servers = http://controller:9292


在“[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问:

rabbit_host = controller

rabbit_userid = openstack

rabbit_password = P@ssw0rd


在“[keystone_authtoken]” 部分,配置认证服务访问:

auth_uri = http://controller:5000

auth_url = http://controller:35357

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = cinder

password = P@ssw0rd

注解:在 [keystone_authtoken] 中注释或者删除其他选项。


在``[lvm]``部分,配置LVM后端以LVM驱动结束,卷组``cinder-volumes`` ,iSCSI 协议和正确的 iSCSI服务:

[lvm]

volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver

volume_group = cinder-volumes

iscsi_protocol = iscsi

iscsi_helper = lioadm

注意:上面配置在本次配置中为新增部分。


在 [oslo_concurrency] 部分,配置锁路径:

lock_path = /var/lib/cinder/tmp


7.2.3、完成安装,启动块存储卷服务及其依赖的服务,并将其配置为随系统启动:

# systemctl enable openstack-cinder-volume target

# systemctl start openstack-cinder-volume target

# systemctl status openstack-cinder-volume target


存储节点防火墙开放端口:8776、3260

# firewall-cmd --permanent --add-port=8776/tcp

# firewall-cmd --permanent --add-port=3260/tcp

# firewall-cmd --reload

# firewall-cmd --list-all


7.3、验证操作

验证块设备存储服务的操作,在控制节点上执行这些命令。

7.3.1、获得 admin 凭证来获取只有管理员能执行的命令的访问权限:

$ . admin-openrc


7.3.2、列出服务组件以验证是否每个进程都成功启动:

$ cinder service-list

Openstack Mitaka安装手顺(7)块存储服务_块存储服务_04