浓墨重彩之OpenStack-08-cinder块存储服务


1、块存储服务预览

OpenStack块存储服务(cinder)为虚拟机添加持久的存储,块存储提供一个基础设施为了管理卷,以及和OpenStack计算服务交互,为实例提供卷。此服务也会激活管理卷的快照和卷类型的功能。
块存储服务通常包含下列组件:

cinder-api
接受API请求,并将其路由到``cinder-volume``执行。

cinder-volume
与块存储服务和例如``cinder-scheduler``的进程进行直接交互。它也可以与这些进程通过一个消息队列进行交互。 `` cinder-volume``服务响应送到块存储服务的读写请求来维持状态。它也可以和多种存储提供者在驱动架构下进行交互。

cinder-scheduler守护进程
选择最优存储提供节点来创建卷。其与``nova-scheduler``组件类似。

cinder-backup守护进程
`` cinder-backup``服务提供任何种类备份卷到一个备份存储提供者。就像``cinder-volume``服务,它与多种存储提供者在驱动架构下进行交互。

消息队列

在块存储的进程之间路由信息。

2、安装并配置控制节点

a.先决条件

  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
    • 退出数据库客户端。
  1. 获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
$ . admin-openrc
  1. 要创建服务证书,完成这些步骤:
  • 创建一个 cinder 用户:
$ openstack user create --domain default --password-prompt cinderUser
Password:
Repeat User Password:
    • 添加 admin 角色到 cinder 用户上。
$ openstack role add --project service --user cinder admin

注解
这个命令执行后没有输出。

    • 创建 cindercinderv2 服务实体:
$ openstack service create --name cinder --description "OpenStack Block Storage" volume
$ openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2

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

  1. 创建块设备存储服务的 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

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

b.安装并配置组件

  1. 安装软件包:
# yum install openstack-cinder
  1. 编辑 /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_PASS
CINDER_PASS 替换为你在认证服务中为 cinder 用户选择的密码。
注解
[keystone_authtoken] 中注释或者删除其他选项。

  • [DEFAULT 部分,配置``my_ip`` 来使用控制节点的管理接口的IP 地址。
[DEFAULT]
...
my_ip=10.0.0.11
  • [oslo_concurrency] 部分,配置锁路径:
[oslo_concurrency]
...
lock_path=/var/lib/cinder/tmp
  1. 初始化块设备服务的数据库:
# su -s /bin/sh -c "cinder-manage db sync" cinder
注解
忽略输出中任何不推荐使用的信息。

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

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

[cinder]
os_region_name=RegionOne

d.完成安装

  1. 重启计算API 服务:
# systemctl restart openstack-nova-api.service
  1. 启动块设备存储服务,并将其配置为开机自启:
# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service

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

a.先决条件

  1. 安装支持的工具包:
  • 安装 LVM 包:
# yum install lvm2
    • 启动LVM的metadata服务并且设置该服务随系统启动:
# systemctl enable lvm2-lvmetad.service# systemctl start lvm2-lvmetad.service
注解
一些发行版默认包含了LVM。

  1. 创建LVM 物理卷 /dev/sdb
# pvcreate /dev/sdbPhysical volume "/dev/sdb" successfully created
  1. 创建 LVM 卷组 cinder-volumes
# vgcreate cinder-volumes /dev/sdbVolume group "cinder-volumes" successfully created
块存储服务会在这个卷组中创建逻辑卷。
  1. 只有实例可以访问块存储卷组。不过,底层的操作系统管理这些设备并将其与卷关联。默认情况下,LVM卷扫描工具会扫描``/dev`` 目录,查找包含卷的块存储设备。如果项目在他们的卷上使用LVM,扫描工具检测到这些卷时会尝试缓存它们,可能会在底层操作系统和项目卷上产生各种问题。您必须重新配置LVM,让它只扫描包含``cinder-volume``卷组的设备。编辑``/etc/lvm/lvm.conf``文件并完成下面的操作:
  • 在``devices``部分,添加一个过滤器,只接受``/dev/sdb``设备,拒绝其他所有设备:
devices {...filter=[ "a/sdb/", "r/.*/"]
每个过滤器组中的元素都以``a``开头,即为 accept ,或以 r 开头,即为**reject**,并且包括一个设备名称的正则表达式规则。过滤器组必须以``r/.*/ `` 结束,过滤所有保留设备。您可以使用 :命令:`vgs -vvvv` 来测试过滤器。

警告
如果您的存储节点在操作系统磁盘上使用了 LVM,您还必需添加相关的设备到过滤器中。例如,如果 /dev/sda 设备包含操作系统:
filter=[ "a/sda/", "a/sdb/", "r/.*/"]
类似地,如果您的计算节点在操作系统磁盘上使用了 LVM,您也必需修改这些节点上 /etc/lvm/lvm.conf 文件中的过滤器,将操作系统磁盘包含到过滤器中。例如,如果``/dev/sda`` 设备包含操作系统:
filter=[ "a/sda/", "r/.*/"]

b.安全并配置条件

  1. 安装软件包:
# yum install openstack-cinder targetcli python-keystone
  1. 编辑 /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_PASS
CINDER_PASS 替换为你在认证服务中为 cinder 用户选择的密码。
注解
[keystone_authtoken] 中注释或者删除其他选项。

c.完成安装

    • [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=iscsiiscsi_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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值