目录
OpenStack块存储服务(Cinder)将持久性存储添加到虚拟机。块存储为管理卷提供基础架构,并与OpenStack Compute进行交互以提供实例卷。该服务还支持管理卷快照和卷类型。
安装和配置(控制节点)
先决条件
初始化数据库,创建cinder用户、cinder 数据库
# su - xiao
$ mysql -u root -p
CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
IDENTIFIED BY 'CINDER_DBPASS';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
IDENTIFIED BY 'CINDER_DBPASS';
##验证
select host,user from mysql.user where user like '%cinder%';
MariaDB [(none)]> exit
创建cinder用户
$ . /etc/openstack/admin-openrc
openstack user create --domain default --password-prompt cinder
User Password:你的密码
将admin角色绑定给cinder用户
openstack role add --project service --user cinder admin
##验证
openstack role assignment list
创建cinderv2和cinderv3两个服务实例
openstack service create --name cinderv2 \
--description "OpenStack Block Storage" volumev2
openstack service create --name cinderv3 \
--description "OpenStack Block Storage" volumev3
##验证
openstack service list |grep cinder
创建cinder服务的endpoint(cinderv2和v3都要创建)
openstack endpoint create --region RegionOne \
volumev2 public http://controller-150:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne \
volumev2 internal http://controller-150:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne \
volumev2 admin http://controller-150:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne \
volumev3 public http://controller-150:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne \
volumev3 internal http://controller-150:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne \
volumev3 admin http://controller-150:8776/v3/%\(project_id\)s
##验证
openstack endpoint list --service cinderv2
openstack endpoint list --service cinderv3
安装和配置组件
安装组件
yum install openstack-cinder -y
配置组件
vi /etc/cinder/cinder.conf
[DEFAULT]
my_ip使用管理接口ip地址
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller-150
auth_strategy = keystone
my_ip = 192.168.11.150
[database]
# ...
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller-150/cinder
[keystone_authtoken]
auth_uri已经被弃用,使用www_authenticate_uri替代
# ...
www_authenticate_uri = http://controller-150:5000
auth_url = http://controller-150:5000
memcached_servers = controller-150:11211
auth_type = password
project_domain_id = default
user_domain_id = default
project_name = service
username = cinder
password = 你的密码
[oslo_concurrency]
# ...
lock_path = /var/lib/cinder/tmp
导入数据到cinder数据库
su -s /bin/sh -c "cinder-manage db sync" cinder
--忽略deprecation信息
配置compute服务使用block存储
vi /etc/nova/nova.conf
[cinder]
os_region_name = RegionOne
完成安装
重启compute服务
systemctl restart openstack-nova-api.service && systemctl status openstack-nova-api.service
配置块服务自启动&&启动块服务
# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service \
&& systemctl status openstack-cinder-api.service openstack-cinder-scheduler.service
添加防火墙策略
cinder-api: 8776
# firewall-cmd --add-port 8776/tcp --permanent
# firewall-cmd --reload && firewall-cmd --list-port
具体参见:
https://docs.openstack.org/cinder/queens/install/cinder-controller-install-rdo.html
安装和配置(备份服务)
略
具体参见:
https://docs.openstack.org/cinder/queens/install/index-rdo.html
安装和配置(块存储节点)
先决条件
安装支持的工具包(LVM)
如果安装操作系统使用LVM分区,默认会安装并运行下面的服务
yum install lvm2 device-mapper-persistent-data -y
# systemctl enable lvm2-lvmetad.service
# systemctl start lvm2-lvmetad.service
创建LVM物理卷、卷组(要求在做OS时就要挂载一个块空的磁盘)
# lsblk –l
sdb 8:16 0 1T 0 disk
# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
# vgcreate cinder-volumes /dev/sdb
Block服务将在cinder-volumes VG下创建LV。
重要内容来袭
编辑vi /etc/lvm/lvm.conf 重新定义filter,避免lvm扫描器将底层操作系统的block设备扫描出来,被instance使用。这将导致底层操系统崩溃。
devices {
...
filter = [ "a/sdb/", "r/.*/"]
以a开头接受,以r/.*/结束以拒绝剩余的所有设备。
注意:
如果compute节点使用了LVM,如果os在/dev/sda上,需要在计算节点上配置如下内容
filter = [ "a/sda/", "r/.*/"]
到vi /etc/lvm/lvm.conf
如果block节点上使用了LVM,如果os在/dev/sda上,那么上面的filter需要修改成下面的:
filter = [ "a/sda/", "a/sdb/", "r/.*/"]
安装和配置组件
安装软件包
yum install openstack-cinder targetcli python-keystone -y
配置组件
vi /etc/cinder/cinder.conf
[DEFAULT]
# ...MANAGEMENT_INTERFACE_IP_ADDRESS使用block节点的管理IP
transport_url = rabbit://openstack:RABBIT_PASS@controller-150
auth_strategy = keystone
my_ip = 192.168.11.152
enabled_backends = lvm
glance_api_servers = http://controller-150:9292
[database]
# ...
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller-150/cinder
[keystone_authtoken]
# ...auth_uri 被www_authenticate_uri替代了
www_authenticate_uri = http://controller-150:5000
auth_url = http://controller-150:5000
memcached_servers = controller-150:11211
auth_type = password
project_domain_id = default
user_domain_id = default
project_name = service
username = cinder
password = 你的密码
If the [lvm] section does not exist, create it:
[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
完成安装
# systemctl enable openstack-cinder-volume.service target.service
# systemctl start openstack-cinder-volume.service target.service
# systemctl status openstack-cinder-volume.service target.service
具体参见:
https://docs.openstack.org/cinder/queens/install/cinder-storage-install-rdo.html
结束安装并验证
$ . /etc/openstack/admin-openrc
$ openstack volume service list
具体参见:
https://docs.openstack.org/cinder/queens/install/index-rdo.html