openstack云计算平台<9>--块存储服务(cinder)

目录

  • 概述
  • 一、安装并配置控制节点
    • 1.先决条件
    • 2.安装并配置组件
    • 3.配置计算节点以使用块设备存储
    • 4.完成安装
  • 二、安装并配置一个存储节点
    • 1.开启新的虚拟机做相应初始配置
    • 2.先决条件
    • 3.安全并配置组件
    • 4.完成安装
  • 三、验证操作
  • 四、图形化管理界面操作

概述

介绍:

  1. 块存储服务(cinder)为实例提供块存储。存储的分配和消耗是由块存储驱动器,或者多后端配置的驱动器决定的。还有很多驱动程序可用:NAS/SAN,NFS,ISCSI,Ceph等。
  2. 典型情况下,块服务API和调度器服务运行在控制节点上。取决于使用的驱动,卷服务器可以运行在控制节点、计算节点或单独的存储节点。

块存储服务通常包含下列组件:

  1. cinder-api
    接受API请求,并将其路由到cinder-volume执行。
  2. cinder-volume
    与块存储服务和例如cinder-scheduler的进程进行直接交互。它也可以与这些进程通过一个消息队列进行交互。cinder-volume服务响应送到块存储服务的读写请求来维持状态。它也可以和多种存储提供者在驱动架构下进行交互。
  3. cinder-scheduler守护进程
    选择最优存储提供节点来创建卷。其与nova-scheduler组件类似。
  4. cinder-backup守护进程
    cinder-backup服务提供任何种类备份卷到一个备份存储提供者。就像cinder-volume服务,它与多种存储提供者在驱动架构下进行交互。
  5. 消息队列
    在块存储的进程之间路由信息。

一、安装并配置控制节点

1.先决条件

用数据库连接客户端以 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';
用合适的密码替换 CINDER_DBPASS

退出数据库客户端。

openstack云计算平台<9>--块存储服务(cinder)_第1张图片

获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
$ . admin-openrc

要创建服务证书,完成这些步骤:
创建一个 cinder 用户:
$ openstack user create --domain default --password-prompt cinder
User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | e0353a670a9e496da891347c589539e9 |
| enabled   | True                             |
| id        | bb279f8ffc444637af38811a5e1f0562 |
| name      | cinder                           |
+-----------+----------------------------------+

添加 admin 角色到 cinder 用户上。
$ openstack role add --project service --user cinder admin


创建 cinder 和 cinderv2 服务实体:
$ openstack service create --name cinder \
  --description "OpenStack Block Storage" volume
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Block Storage          |
| enabled     | True                             |
| id          | ab3bbbef780845a1a283490d281e7fda |
| name        | cinder                           |
| type        | volume                           |
+-------------+----------------------------------+
$ openstack service create --name cinderv2 \
  --description "OpenStack Block Storage" volumev2
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Block Storage          |
| enabled     | True                             |
| id          | eb9fd245bdbc414695952e93f29fe3ac |
| name        | cinderv2                         |
| type        | volumev2                         |
+-------------+----------------------------------+

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

创建块设备存储服务的 API 入口点:
$ openstack endpoint create --region RegionOne \
  volume public http://controller:8776/v1/%\(tenant_id\)s
  +--------------+-----------------------------------------+
  | Field        | Value                                   |
  +--------------+-----------------------------------------+
  | enabled      | True                                    |
  | id           | 03fa2c90153546c295bf30ca86b1344b        |
  | interface    | public                                  |
  | region       | RegionOne                               |
  | region_id    | RegionOne                               |
  | service_id   | ab3bbbef780845a1a283490d281e7fda        |
  | service_name | cinder                                  |
  | service_type | volume                                  |
  | url          | http://controller:8776/v1/%(tenant_id)s |
  +--------------+-----------------------------------------+

$ openstack endpoint create --region RegionOne \
  volume internal http://controller:8776/v1/%\(tenant_id\)s
  +--------------+-----------------------------------------+
  | Field        | Value                                   |
  +--------------+-----------------------------------------+
  | enabled      | True                                    |
  | id           | 94f684395d1b41068c70e4ecb11364b2        |
  | interface    | internal                                |
  | region       | RegionOne                               |
  | region_id    | RegionOne                               |
  | service_id   | ab3bbbef780845a1a283490d281e7fda        |
  | service_name | cinder                                  |
  | service_type | volume                                  |
  | url          | http://controller:8776/v1/%(tenant_id)s |
  +--------------+-----------------------------------------+

$ openstack endpoint create --region RegionOne \
  volume admin http://controller:8776/v1/%\(tenant_id\)s
  +--------------+-----------------------------------------+
  | Field        | Value                                   |
  +--------------+-----------------------------------------+
  | enabled      | True                                    |
  | id           | 4511c28a0f9840c78bacb25f10f62c98        |
  | interface    | admin                                   |
  | region       | RegionOne                               |
  | region_id    | RegionOne                               |
  | service_id   | ab3bbbef780845a1a283490d281e7fda        |
  | service_name | cinder                                  |
  | service_type | volume                                  |
  | url          | http://controller:8776/v1/%(tenant_id)s |
  +--------------+-----------------------------------------+
$ openstack endpoint create --region RegionOne \
  volumev2 public http://controller:8776/v2/%\(tenant_id\)s
+--------------+-----------------------------------------+
| Field        | Value                                   |
+--------------+-----------------------------------------+
| enabled      | True                                    |
| id           | 513e73819e14460fb904163f41ef3759        |
| interface    | public                                  |
| region       | RegionOne                               |
| region_id    | RegionOne                               |
| service_id   | eb9fd245bdbc414695952e93f29fe3ac        |
| service_name | cinderv2                                |
| service_type | volumev2                                |
| url          | http://controller:8776/v2/%(tenant_id)s |
+--------------+-----------------------------------------+

$ openstack endpoint create --region RegionOne \
  volumev2 internal http://controller:8776/v2/%\(tenant_id\)s
+--------------+-----------------------------------------+
| Field        | Value                                   |
+--------------+-----------------------------------------+
| enabled      | True                                    |
| id           | 6436a8a23d014cfdb69c586eff146a32        |
| interface    | internal                                |
| region       | RegionOne                               |
| region_id    | RegionOne                               |
| service_id   | eb9fd245bdbc414695952e93f29fe3ac        |
| service_name | cinderv2                                |
| service_type | volumev2                                |
| url          | http://controller:8776/v2/%(tenant_id)s |
+--------------+-----------------------------------------+

$ openstack endpoint create --region RegionOne \
  volumev2 admin http://controller:8776/v2/%\(tenant_id\)s
+--------------+-----------------------------------------+
| Field        | Value                                   |
+--------------+-----------------------------------------+
| enabled      | True                                    |
| id           | e652cf84dd334f359ae9b045a2c91d96        |
| interface    | admin                                   |
| region       | RegionOne                               |
| region_id    | RegionOne                               |
| service_id   | eb9fd245bdbc414695952e93f29fe3ac        |
| service_name | cinderv2                                |
| service_type | volumev2                                |
| url          | http://controller:8776/v2/%(tenant_id)s |
+--------------+-----------------------------------------+

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

openstack云计算平台<9>--块存储服务(cinder)_第2张图片
openstack云计算平台<9>--块存储服务(cinder)_第3张图片

2.安装并配置组件

安装软件包:
yum install openstack-cinder

编辑 /etc/cinder/cinder.conf,同时完成如下动作:
在 [database] 部分,配置数据库访问:
[database]
...
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
用你为块设备存储数据库选择的密码替换 CINDER_DBPASS。

在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问:
[DEFAULT]
...
rpc_backend = rabbit

[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。

在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
[DEFAULT]
...
auth_strategy = keystone

[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 = CINDER_PASSCINDER_PASS 替换为你在认证服务中为 cinder 用户选择的密码。

在 [DEFAULT 部分,配置``my_ip`` 来使用控制节点的管理接口的IP 地址。
[DEFAULT]
...
my_ip =172.25.0.11[oslo_concurrency] 部分,配置锁路径:
[oslo_concurrency]
...
lock_path = /var/lib/cinder/tmp

openstack云计算平台<9>--块存储服务(cinder)_第4张图片

初始化块设备服务的数据库:
su -s /bin/sh -c "cinder-manage db sync" cinder
注意:忽略输出中任何不推荐使用的信息。

3.配置计算节点以使用块设备存储

编辑文件 /etc/nova/nova.conf 并添加如下到其中:
[cinder]
os_region_name = RegionOne

4.完成安装

重启计算API 服务:
systemctl restart openstack-nova-api.service

启动块设备存储服务,并将其配置为开机自启:
systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service

在这里插入图片描述

二、安装并配置一个存储节点

1.开启新的虚拟机做相应初始配置

  1. 添加一块新的硬盘
  2. 配置ip,添加解析,设置主机名为block1
  3. 配置镜像源,设置时间同步
    openstack云计算平台<9>--块存储服务(cinder)_第5张图片
    openstack云计算平台<9>--块存储服务(cinder)_第6张图片
    openstack云计算平台<9>--块存储服务(cinder)_第7张图片

2.先决条件

安装 LVM 包:
yum install lvm2

启动LVM的metadata服务并且设置该服务随系统启动:
systemctl enable lvm2-lvmetad.service
systemctl start lvm2-lvmetad.service

创建LVM 物理卷 /dev/vdb:
pvcreate /dev/vdb
Physical volume "/dev/vdb" successfully created

创建 LVM 卷组 cinder-volumes:
vgcreate cinder-volumes /dev/vdb
Volume group "cinder-volumes" successfully created
块存储服务会在这个卷组中创建逻辑卷。

openstack云计算平台<9>--块存储服务(cinder)_第8张图片
openstack云计算平台<9>--块存储服务(cinder)_第9张图片

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

在``devices``部分,添加一个过滤器,只接受``/dev/vdb``设备,拒绝其他所有设备:
devices {
...
filter = [ "a/vdb/", "r/.*/"]

如果存储节点在操作系统磁盘上使用了 LVM,您还必需添加相关的设备到过滤器中。例如,如果 /dev/sda 设备包含操作系统:

filter = [ "a/vda/", "a/vdb/", "r/.*/"]

openstack云计算平台<9>--块存储服务(cinder)_第10张图片

3.安全并配置组件

安装软件包:
yum install openstack-cinder targetcli python-keystone

编辑 /etc/cinder/cinder.conf,同时完成如下动作:
在 [database] 部分,配置数据库访问:
[database]
...
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
用你为块设备存储数据库选择的密码替换 CINDER_DBPASS。

在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问:
[DEFAULT]
...
rpc_backend = rabbit

[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。

在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
[DEFAULT]
...
auth_strategy = keystone

[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 = CINDER_PASSCINDER_PASS 替换为你在认证服务中为 cinder 用户选择的密码。

在 [DEFAULT] 部分,配置 my_ip 选项:
[DEFAULT]
...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
将其中的``MANAGEMENT_INTERFACE_IP_ADDRESS``替换为存储节点上的管理网络接口的IP 地址

在``[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

在 [DEFAULT] 部分,启用 LVM 后端:
[DEFAULT]
...
enabled_backends = lvm

在 [DEFAULT] 区域,配置镜像服务 API 的位置:
[DEFAULT]
...
glance_api_servers = http://controller:9292[oslo_concurrency] 部分,配置锁路径:
[oslo_concurrency]
...
lock_path = /var/lib/cinder/tmp

openstack云计算平台<9>--块存储服务(cinder)_第11张图片
openstack云计算平台<9>--块存储服务(cinder)_第12张图片

4.完成安装

启动块存储卷服务及其依赖的服务,并将其配置为随系统启动:
systemctl enable openstack-cinder-volume.service target.service
systemctl start openstack-cinder-volume.service target.service

在这里插入图片描述

三、验证操作

在控制节点上运行

获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
$ . admin-openrc

列出服务组件以验证是否每个进程都成功启动:
$ cinder service-list
+------------------+------------+------+---------+-------+----------------------------+-----------------+
|      Binary      |    Host    | Zone |  Status | State |         Updated_at         | Disabled Reason |
+------------------+------------+------+---------+-------+----------------------------+-----------------+
| cinder-scheduler | controller | nova | enabled |   up  | 2014-10-18T01:30:54.000000 |       None      |
| cinder-volume    | block1@lvm | nova | enabled |   up  | 2014-10-18T01:30:57.000000 |       None      |
+------------------+------------+------+---------+-------+----------------------------+-----------------+

openstack云计算平台<9>--块存储服务(cinder)_第13张图片

四、图形化管理界面操作

openstack云计算平台<9>--块存储服务(cinder)_第14张图片
openstack云计算平台<9>--块存储服务(cinder)_第15张图片
openstack云计算平台<9>--块存储服务(cinder)_第16张图片
openstack云计算平台<9>--块存储服务(cinder)_第17张图片
openstack云计算平台<9>--块存储服务(cinder)_第18张图片
openstack云计算平台<9>--块存储服务(cinder)_第19张图片
openstack云计算平台<9>--块存储服务(cinder)_第20张图片

想要从云主机上摘除云硬盘,需要先卸载,再分离,之前保存在云硬盘中的数据不会丢失,就算云主机删除了也不影响,因为云硬盘相对于云主机来说就相当于一个外部设备,想要得到之前放置在云硬盘中的数据只需要重新建立云主机,并将云硬盘添加到云主机中即可

openstack云计算平台<9>--块存储服务(cinder)_第21张图片
openstack云计算平台<9>--块存储服务(cinder)_第22张图片
openstack云计算平台<9>--块存储服务(cinder)_第23张图片
openstack云计算平台<9>--块存储服务(cinder)_第24张图片

扩展云硬盘
openstack云计算平台<9>--块存储服务(cinder)_第25张图片
openstack云计算平台<9>--块存储服务(cinder)_第26张图片
openstack云计算平台<9>--块存储服务(cinder)_第27张图片
openstack云计算平台<9>--块存储服务(cinder)_第28张图片
openstack云计算平台<9>--块存储服务(cinder)_第29张图片
openstack云计算平台<9>--块存储服务(cinder)_第30张图片
openstack云计算平台<9>--块存储服务(cinder)_第31张图片
openstack云计算平台<9>--块存储服务(cinder)_第32张图片
在后端做的事情:
openstack云计算平台<9>--块存储服务(cinder)_第33张图片

你可能感兴趣的:(Linux企业实战篇,openstack,linux)