十一、Openstack块存储服务(cinder)
配置:我在计算点添加了一块硬盘(sdb)用来当块存储用,在我这搭建中控制节点也就是块存储节点了
简单介绍:
cinder主要有四个组件:cinder-api、cinder-volume、cinder-scheduler、cinder-backup
cinder-api:接受API请求,并将其路由到cinder-volume执行
cinder-volume:与块存储服务cinder-scheduler的进程进行直接交互
cinder-scheduler:选择最优存储提供节点来创建卷
cinder-backup:提供任何种类备份卷到一个备份存储提供者
后面操作都将在控制节点上
mysql -uroot -p
CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY '123456';
[root@controller ~]# . admin-openrc
[root@controller ~]# openstack user create --domain default --password-prompt cinder
User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | b24b3093654b4ba4be706fe675a03b2d |
| enabled | True |
| id | abf7418a5e90422cab6ae4df523cd850 |
| name | cinder |
+-----------+----------------------------------+
openstack role add --project service --user cinder admin
此操作无返回
4.创建 cinder 和 cinderv2 服务实体
openstack service create --name cinder --description "OpenStack Block Storage" volume
[root@controller ~]# openstack service create --name cinder \
> --description "OpenStack Block Storage" volume
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Block Storage |
| enabled | True |
| id | 148fef5f0fae4569b7f7d89d855c7066 |
| name | cinder |
| type | volume |
+-------------+----------------------------------+
openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
[root@controller ~]# openstack service create --name cinderv2 \
> --description "OpenStack Block Storage" volumev2
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Block Storage |
| enabled | True |
| id | a041d71904364c59a5e65ef49450db70 |
| name | cinderv2 |
| type | volumev2 |
+-------------+----------------------------------+
5. 创建块设备存储服务的 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
volume:
[root@controller ~]# openstack endpoint create --region RegionOne volume public http://controller:8776/v1/%(tenant_id)s
+--------------+-----------------------------------------+
| Field | Value |
+--------------+-----------------------------------------+
| enabled | True |
| id | 764744c5a9ce488f98d65f6d9c38b86a |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 148fef5f0fae4569b7f7d89d855c7066 |
| service_name | cinder |
| service_type | volume |
| url | http://controller:8776/v1/%(tenant_id)s |
+--------------+-----------------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne volume internal http://controller:8776/v1/%(tenant_id)s
+--------------+-----------------------------------------+
| Field | Value |
+--------------+-----------------------------------------+
| enabled | True |
| id | 563d6c54f3cd4ad293cd86aec1a7c20f |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 148fef5f0fae4569b7f7d89d855c7066 |
| service_name | cinder |
| service_type | volume |
| url | http://controller:8776/v1/%(tenant_id)s |
+--------------+-----------------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne volume admin http://controller:8776/v1/%(tenant_id)s
+--------------+-----------------------------------------+
| Field | Value |
+--------------+-----------------------------------------+
| enabled | True |
| id | ad5bf2d6772046958d6cbba29af5201d |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 148fef5f0fae4569b7f7d89d855c7066 |
| service_name | cinder |
| service_type | volume |
| url | http://controller:8776/v1/%(tenant_id)s |
+--------------+-----------------------------------------+
volume2:
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
[root@controller ~]# openstack endpoint create --region RegionOne volumev2 public http://controller:8776/v2/%(tenant_id)s
+--------------+-----------------------------------------+
| Field | Value |
+--------------+-----------------------------------------+
| enabled | True |
| id | aa5366acb5634b6dbd4dd3e86d8115be |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | a041d71904364c59a5e65ef49450db70 |
| service_name | cinderv2 |
| service_type | volumev2 |
| url | http://controller:8776/v2/%(tenant_id)s |
+--------------+-----------------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne volumev2 internal http://controller:8776/v2/%(tenant_id)s
+--------------+-----------------------------------------+
| Field | Value |
+--------------+-----------------------------------------+
| enabled | True |
| id | 0f0ea4d5f5914717b196f8b7cb6d17ae |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | a041d71904364c59a5e65ef49450db70 |
| service_name | cinderv2 |
| service_type | volumev2 |
| url | http://controller:8776/v2/%(tenant_id)s |
+--------------+-----------------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne volumev2 admin http://controller:8776/v2/%(tenant_id)s
+--------------+-----------------------------------------+
| Field | Value |
+--------------+-----------------------------------------+
| enabled | True |
| id | c616c24c31e34d20b6e860e609109ceb |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | a041d71904364c59a5e65ef49450db70 |
| service_name | cinderv2 |
| service_type | volumev2 |
| url | http://controller:8776/v2/%(tenant_id)s |
+--------------+-----------------------------------------+
安装配置:
1.安装软件包
yum install openstack-cinder lvm2 targetcli python-keystone
yum install openstack-cinder lvm2 targetcli python-keystone
2.修改配置文件/etc/cinder/cinder.conf
vi /etc/cinder/cinder.conf
[DEFAULT]
rpc_backend = rabbit#启用消息队列
auth_strategy = keystone#启用keystone认证
my_ip = 192.168.100.10#控制节点管理接口ip地址
enabled_backends = lvm#启用 LVM 后端
glance_api_servers = http://controller:9292#配置镜像api位置
配置数据库访问
[database]
connection = mysql+pymysql://cinder:123456@controller/cinder
配置消息队列
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = 123456
配置认证服务访问
[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#配置LVM后端以LVM驱动结束
volume_group = cinder-volumes#卷组
iscsi_protocol = iscsi#配置iSCSI服务
iscsi_helper = lioadm#配置iSCSI服务
配置锁路径
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
3.初始化块设备服务的数据库
su -s /bin/sh -c "cinder-manage db sync" cinder
[root@controller ~]# su -s /bin/sh -c "cinder-manage db sync" cinder
Option "logdir" from group "DEFAULT" is deprecated. Use option "log-dir" from group "DEFAULT".
2017-11-16 10:58:23.327 16679 WARNING py.warnings [-] /usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:241: NotSupportedWarning: Configuration option(s) ['use_tpool'] not supported
exception.NotSupportedWarning
2017-11-16 10:58:24.219 16679 INFO migrate.versioning.api [-] 0 -> 1...
2017-11-16 10:58:25.740 16679 INFO migrate.versioning.api [-] done
2017-11-16 10:58:25.740 16679 INFO migrate.versioning.api [-] 1 -> 2...
2017-11-16 10:58:26.533 16679 INFO migrate.versioning.api [-] done
2017-11-16 10:58:26.534 16679 INFO migrate.versioning.api [-] 2 -> 3...
2017-11-16 10:58:26.573 16679 INFO migrate.versioning.api [-] done
2017-11-16 10:58:26.574 16679 INFO migrate.versioning.api [-] 3 -> 4...
2017-11-16 10:58:27.002 16679 INFO migrate.versioning.api [-] done
2017-11-16 10:58:27.003 16679 INFO migrate.versioning.api [-] 4 -> 5...
2017-11-16 10:58:27.315 16679 INFO migrate.versioning.api [-] done
2017-11-16 10:58:27.315 16679 INFO migrate.versioning.api [-] 5 -> 6...
...
...
...
2017-11-16 10:58:48.228 16679 INFO migrate.versioning.api [-] 68 -> 69...
2017-11-16 10:58:48.248 16679 INFO migrate.versioning.api [-] done
2017-11-16 10:58:48.248 16679 INFO migrate.versioning.api [-] 69 -> 70...
2017-11-16 10:58:48.262 16679 INFO migrate.versioning.api [-] done
2017-11-16 10:58:48.263 16679 INFO migrate.versioning.api [-] 70 -> 71...
2017-11-16 10:58:48.274 16679 INFO migrate.versioning.api [-] done
2017-11-16 10:58:48.277 16679 INFO migrate.versioning.api [-] 71 -> 72...
2017-11-16 10:58:48.289 16679 INFO migrate.versioning.api [-] done
4.创建LVM 物理卷 /dev/sdb
pvcreate /dev/sdb
[root@controller ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created
vgcreate cinder-volumes /dev/sdb
[root@controller ~]# vgcreate cinder-volumes /dev/sdb
Volume group "cinder-volumes" successfully created
5.修改配置文件/etc/lvm/lvm.conf
vi /etc/lvm/lvm.conf
找到添加一个过滤器
devices {
filter = [ "a/sdb/", "r/.*/"]
}
完成安装:
控制节点上启动:
systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service openstack-cinder-volume.service target.service lvm2-lvmetad.service
systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service openstack-cinder-volume.service target.service lvm2-lvmetad.service
[root@controller ~]# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service openstack-cinder-volume.service target.service lvm2-lvmetad.service
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-cinder-api.service to /usr/lib/systemd/system/openstack-cinder-api.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-cinder-scheduler.service to /usr/lib/systemd/system/openstack-cinder-scheduler.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-cinder-volume.service to /usr/lib/systemd/system/openstack-cinder-volume.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/target.service to /usr/lib/systemd/system/target.service.
Created symlink from /etc/systemd/system/sysinit.target.wants/lvm2-lvmetad.service to /usr/lib/systemd/system/lvm2-lvmetad.service.
[root@controller ~]# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service openstack-cinder-volume.service target.service lvm2-lvmetad.service
计算节点修改配置文件/etc/nova/nova.conf
vi /etc/nova/nova.conf
配置计算节点使用块设备存储
[cinder]
os_region_name = RegionOne
重启计算API
systemctl restart openstack-nova-api.service
验证:
1.获取管理员权限
. admin-openrc
cinder service-list
[root@controller ~]# . admin-openrc
[root@controller ~]# cinder service-list
+------------------+----------------+------+---------+-------+----------------------------+-----------------+
| Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
+------------------+----------------+------+---------+-------+----------------------------+-----------------+
| cinder-scheduler | controller | nova | enabled | up | 2017-11-16T16:18:40.000000 | - |
| cinder-volume | controller@lvm | nova | enabled | up | 2017-11-16T16:18:42.000000 | - |
+------------------+----------------+------+---------+-------+----------------------------+-----------------+
添加一块云盘:
1.登陆管理员账号——选择计算——卷——创建云硬盘
2.创建云硬盘
创建完成
3.选择编辑云硬盘———管理连接
4.使云硬盘连接到云主机
完成
5.虚拟机控制台查看挂载的盘
你会发现多了一块盘叫vdb