本实验是一个比较综合的实验,需要结合前面所学的OpenStack基础环境安装配置,身份认证服务(Keystone)安装配置等一些基础的实验来做这个块存储服务(Cinder)安装配置实验。为了更好地理解和管理Cinder块存储服务组件,需要对其整个存储架构有一定的了解,在经济、性能和安全性方面做出选择,但是最终归结为两个选择:是单节点部署还是多节点部署(在存储技术已经确定的情况下)。Cinder块存储服务组件允许用户添加外部存储作为块存储使用,如集中存储或其他开源存储技术存储。Amazon的EC2Elastic块存储(EBS)与其类似。
本实验是一个比较综合的安装配置类的实验,但在节点上安装和配置Cinder块存储服务组件之前,Cinder块存储服务组件要求至少有一个存储节点。具体的实验目标就是掌握Cinder块存储服务组件的安装,理解LVM的概念以及如何创建数据库,服务证书(service credential)和API endpoint。
本实验主要使用的知识点是
知识点 | 能力要求 |
---|---|
OpenStack基础环境的安装配置 | 了解OpenStack的环境搭建和配置 |
Cinder块存储的各大组件 | 掌握Cinder组件的作用 |
LVM的基本概念 | 掌握什么是LVM,LVM的作用是什么 |
Keystone服务安装配置 | 了解Keystone服务安装配置 |
针对上面所提到的部分知识点,下面做一个概述,以便后面对本实验有更加深刻的理解:
基础环境搭建配置
网络接口
查看服务器网络接口
ifconfig –a
进入网络配置文件
sudo vi /etc/network/interfaces
将第一个接口配置为管理接口
auto enp5s0
iface enp5s0 inet static
address 10.0.0.11
netmask 255.255.255.0
gateway 10.0.0.1
配置名称解析将控制节点的主机名设置为controller
sudo vi /etc/hostname
编辑/etc/hosts文件,加入已下内容
#controller
10.0.0.11 controller
#compute1
10.0.0.31 compute1
#block1
10.0.0.41 block1
#object
10.0.0.51 object1
验证连接从控制节点,测试对外网的访问
ping -c 4 openstack.org
从控制器节点,测试对计算节点上的管理接口的访问权限
ping -c 4 compute1
网络时间协议NTP安装下载并安装openstack软件包启动openstack库
sudo apt install
sudo software-properties-common
sudo add-apt-repository cloud-archive:pike
升级服务器所有软件包
sudo apt update && apt dist-upgrade
安装openstack客户端
sudo apt install python-openstackclient
以上是一部分的OpenStack是基础环境的配置,接下来会进行SQL数据库的安装等一系列配置,这里就不多介绍。
1.cinder-api
cinder-api的作用主要是为用户提供Restful风格的接口,接收client的请求,在该服务中可以对用户的权限和传入的参数进行提前的检查,无误后方才将请求信息交给消息队列,由后续的其它服务根据消息队列信息进行处理。
2.cinder-scheduler
cinder-scheduler是一个调度器,用于选择合适的存储节点,该服务中包含过滤器算法和权重计算算法,Cinder默认的过滤算法有三个:
(1)AvailabilityZoneFilter过滤算法:判断cinder host的availability zone是否与目标zone一致,否则过滤掉该节点;
(2)CapacityFilter过滤算法:判断host的可用存储空间是否不小于要分配卷的大小,否则过滤掉该节点;
(3)CapabilitiesFilter过滤算法:检查host的属性否和volume type中的extra specs相同,不相同则过滤掉该节点。
3. cinder-volume
cinder-volume是部署在存储节点上的服务,cinder-volume的主要功能是对后端存储进行一层抽象封装,为用户提供统一的接口,cinder-volume通过调用后端存储驱动API来进行存储相关的操作。
4. cinder-backup
cinder-backup的功能是将volume备份到别的存储设备上去,以后可以通过restone操作恢复。
对磁盘进行分区大小规划时,有时往往不能确定这个分区要使用的总空间大小,而用fdisk对磁盘分区后,每个分区的大小已经固定了,如果分区设置的过大,就白白浪费了磁盘空间,而分区设置的过小,就会导致空间不够用的情形,此时最常见的方法是重新划分磁盘分区,或者通过软连接的方式将此分区的目录链接到另一个分区,虽然能临时解诀问题,但是给管理带来了麻烦。如何能解诀这些问题呢,LVM 是一个不错的方法。
LVM,是Logical Volume Manager的缩写,中文意思是逻辑卷管理,它是1inux下对磁盘分区进行管理的一种机制,LVM 是建立在磁盘分区和文件系统之间的一个逻辑层,管理员利用LVM可以在磁盘不用重新分区的情况下动态的调整分区的大小。如果系统新增了一块硬盘,通过LVM就可以将新增的硬盘空间直接扩展到原来的磁盘分区上。
本实验涉及到的专业术语解释
1)LVM(LogicalVolumeManager)
2)物理卷(Physical Volume,PV)
3)卷组(Volume Group,VG)
4)逻辑卷(Logical Volume,LV)
5)API endpoint
6)Cinder服务组件
这个部分描述如何在控制节点上安装和配置块设备存储服务,即 cinder。这个服务需要至少一个额外的存储节点,以向实例提供卷。
1、创建数据库
在操作系统终端连接数据库
mysql -uroot -p
创建Cinder数据库,并设置访问权限
CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'controller' IDENTIFIED BY '123456';
完成以后重启数据库
systemctl restart mariadb
加载admin的环境变量
# . admin-openrc
创建Identity服务凭据
创建Cinder用户
# openstack user create --domain default --password-prompt cinder
这里密码是123456
将admin role赋予Cinder用户和service project
# 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 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
下面开始安装配置Cinder存储服务的相关组件,组件安装过程:
(1) 安装软件包:
#yum install openstack-cinder -y
(2)编辑 /etc/cinder/cinder.conf:
备份一下文件:
# cp cinder.conf cinder.conf.bak
vi /etc/cinder/cinder.conf
[database]
connection = mysql+pymysql://cinder:1qazmlp9@controller/cinder
[DEFAULT]
transport_url = rabbit://openstack:1qazmlp9@controller
auth_strategy = keystone
my_ip = 192.168.28.7
[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 = 1qazmlp9
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
初始化块设备服务的数据库:
#su -s /bin/sh -c "cinder-manage db sync" cinder
(3)配置计算节点以使用块设备存储
编辑文件 /etc/nova/nova.conf 并添加如下到其中:
[cinder]
os_region_name = RegionOne
重启nova服务
systemctl restart openstack-nova-compute.service
1、回到控制节点,重启计算API 服务:
systemctl restart openstack-nova-api.service
2、启动块设备存储服务,并将其配置为开机自启:
systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
systemctl status openstack-cinder-api.service openstack-cinder-scheduler.service
这个部分描述怎样为块存储服务安装并配置存储节点。步骤均在存储节点storage上运行
在安装和配置Cinder块存储服务组件之前,需要首先确定使用的存储设备。以下操作均在存储节点上进行。
(1)安装支持的工具包
安装lvm2的包
yum install lvm2 -y
启动LVM的metadata服务并且设置该服务随系统启动:
systemctl start lvm2-lvmetad.service
systemctl enable lvm2-lvmetad.service
systemctl status lvm2-lvmetad.service
(2)创建物理卷/dev/sdb
# pvcreate /dev/sdb
注意:如果Device /dev/sdb not found.表示缺少硬盘,需要添加一块硬盘。
出现Physical volume “/dev/sdb” successfully created表示正确。
注意:添加硬盘以后,重启存储节点
备注:添加磁盘的方法:点击storage节点的虚拟机设置->添加->硬盘->下一步:
选择下一步
选择“创建新虚拟硬盘”-下一步
磁盘大小选择100G-下一步
(3)创建卷组cinder-volumes
# vgcreate cinder-volumes /dev/sdb
显示 Volume group “cinder-volumes” successfully created
如果块存储卷被虚拟机实例用作LVM,则当卷扫描工具尝试对块存储卷进行扫描时,会产生一系列问题。为了避免这些问题,需要对块存储卷进行重配置。
编辑/etc/lvm/lvm.conf 文件,完成以下操作(编辑前备份一下)
devices {
….
filter = [ "a/sdb/", "r/.*/"]
(1)安装软件包
yum install openstack-cinder targetcli python-keystone -y
(2)编辑/etc/cinder/cinder.conf 文件,完成以下操作(备份一下)
[database]
connection = mysql+pymysql://cinder:123456@controller/cinder
[DEFAULT]
auth_strategy = keystone
my_ip = 192.168.28.9 #自己IP地址
enabled_backends = lvm
glance_api_servers = http://controller:9292
transport_url = rabbit://openstack:123456@controller
[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 = 123456
[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
启动块存储卷服务及其依赖的服务,并将其配置为随系统启动
ystemctl start openstack-cinder-volume.service target.service
systemctl enable openstack-cinder-volume.service target.service
systemctl status openstack-cinder-volume.service target.service
1、加载admin-openrc.sh文件
. admin-openrc
2、列出Cinder块存储组件
cinder service-list
openstack volume service list
本实验主要检查一下配置完成的Cinder块存储服务组件。所有的操作均在控制节点上进行。
从以上的实验结果来看:
但我们列出Cinder块存储组件时,是可以启动成功的,上面的截图表示我们此次实验安装配置Cinder存储服务是成功的。
本次实验的结果是成功的,但在配置过程中会遇到很多问题,本次实验用的是openstack的Newton版本,参考官网文档。在本次实验中会涉及到OpenStack其他的一些组件安装配置,
例如
Nova: 管理VM的生命周期,是OpenStack中最核心的服务
==Neutron:==为OpenStack提供网络连接服务,负责创建和管理L2、L3网络,为VM提供虚拟网络和物理网络连接。
==Glance:==管理VM启动镜像,Nova创建VM时将使用Glance提供的镜像。
==Swift:==提供对象存储服务。VM可以通过RESTful API存放对象数据。作为可选方案,Glance可愿意将镜像存放在Swift中,Cinder 也可以将Volume备份到Swift中。
==Keystone:==为OpenStack的各种服务提供认证和权限管理服务。简单的说,OpenStack上的每一个操作都必须通过Keystone的审核。
总体来说块存储服务(Cinder)安装配置不可能是一个独立的实验,在安装配置此实验之前,需要配置好OpenStack的一些其他的组件。
《OpenStack从零开始学》,卢万龙著,电子工业出版社,第2篇安装配置篇,第16章(P187)
OpenStack官方安装向导1
OpenStack官方安装向导2
百度资料查询