cinder具体功能如下:
1 提供 REST API 使用户能够查询和管理 volume、volume snapshot 以及 volume type
2 提供 scheduler 调度 volume 创建请求,合理优化存储资源的分配
3 通过 driver 架构支持多种 back-end(后端)存储方式,包括 LVM,NFS,Ceph 和其他诸如 EMC、IBM 等商业存储产品和方案
11.1 配置cinder数据库
#使用root登陆数据库:
mysql -u root -p
#创建cinder数据库:
CREATE DATABASE cinder;
#授予对cinder数据库的访问权限,刷新退出数据库:
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
IDENTIFIED BY 'cinder.123';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
IDENTIFIED BY 'cinder.123';
flush privileges;
exit
11.2 加载管理凭证
source adminrc.sh
11.3 创建cinder相关服务凭证
#创建cinder服务用户,并设置密码为cinder.123
openstack user create --domain default --password-prompt cinder
#输出
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | e40ef183bb844a1d9497dc3bfa2d5539 |
| name | cinder |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
#赋予cinder服务用户服务管理员权限及角色,无输出
openstack role add --project service --user cinder admin
#创建cinder服务
openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
#输出
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Block Storage |
| enabled | True |
| id | 58390d68362941519a7644c6c95dac9a |
| name | cinderv2 |
| type | volumev2 |
+-------------+----------------------------------+
openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3
#输出
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Block Storage |
| enabled | True |
| id | fdd8eb84abd6467bb2961c2c03942aa0 |
| name | cinderv3 |
| type | volumev3 |
+-------------+----------------------------------+
11.4 创建compute API endpoints
#public v2
openstack endpoint create --region RegionOne \
volumev2 public http://controller168:8776/v2/%\(project_id\)s
#输出
+--------------+---------------------------------------------+
| Field | Value |
+--------------+---------------------------------------------+
| enabled | True |
| id | 794d13206d454b70b77c9c9302d9a479 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 58390d68362941519a7644c6c95dac9a |
| service_name | cinderv2 |
| service_type | volumev2 |
| url | http://controller168:8776/v2/%(project_id)s |
+--------------+---------------------------------------------+
#internal v2
openstack endpoint create --region RegionOne \
volumev2 internal http://controller168:8776/v2/%\(project_id\)s
#输出
+--------------+---------------------------------------------+
| Field | Value |
+--------------+---------------------------------------------+
| enabled | True |
| id | 51a9c8f99bde4ae389d35048f81aac3d |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 58390d68362941519a7644c6c95dac9a |
| service_name | cinderv2 |
| service_type | volumev2 |
| url | http://controller168:8776/v2/%(project_id)s |
+--------------+---------------------------------------------+
#admin v2
openstack endpoint create --region RegionOne \
volumev2 admin http://controller168:8776/v2/%\(project_id\)s
#输出
+--------------+---------------------------------------------+
| Field | Value |
+--------------+---------------------------------------------+
| enabled | True |
| id | 1dd2d9326f4d4a199696249931be4811 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 58390d68362941519a7644c6c95dac9a |
| service_name | cinderv2 |
| service_type | volumev2 |
| url | http://controller168:8776/v2/%(project_id)s |
+--------------+---------------------------------------------+
#public v3
openstack endpoint create --region RegionOne \
volumev3 public http://controller168:8776/v3/%\(project_id\)s
#输出
+--------------+---------------------------------------------+
| Field | Value |
+--------------+---------------------------------------------+
| enabled | True |
| id | 87a1d543b5334a43bf7d47c4234acd3d |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | fdd8eb84abd6467bb2961c2c03942aa0 |
| service_name | cinderv3 |
| service_type | volumev3 |
| url | http://controller168:8776/v3/%(project_id)s |
+--------------+---------------------------------------------+
#internal v3
openstack endpoint create --region RegionOne \
volumev3 internal http://controller168:8776/v3/%\(project_id\)s
#输出
+--------------+---------------------------------------------+
| Field | Value |
+--------------+---------------------------------------------+
| enabled | True |
| id | f2a6443ce41044e8a334f68cd2179c00 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | fdd8eb84abd6467bb2961c2c03942aa0 |
| service_name | cinderv3 |
| service_type | volumev3 |
| url | http://controller168:8776/v3/%(project_id)s |
+--------------+---------------------------------------------+
#admin v3
openstack endpoint create --region RegionOne \
volumev3 admin http://controller168:8776/v3/%\(project_id\)s
#输出
+--------------+---------------------------------------------+
| Field | Value |
+--------------+---------------------------------------------+
| enabled | True |
| id | 46e6389ca1cd4002a38a8dc6ef3130c2 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | fdd8eb84abd6467bb2961c2c03942aa0 |
| service_name | cinderv3 |
| service_type | volumev3 |
| url | http://controller168:8776/v3/%(project_id)s |
+--------------+---------------------------------------------+
11.5 部署与配置cinder - ALL Controller
#安装包
yum install openstack-cinder -y
#备份cinder配置
cp /etc/cinder/cinder.conf /etc/cinder/cinder.conf.bak
egrep -v "^$|^#" /etc/cinder/cinder.conf.bak >/etc/cinder/cinder.conf
#配置cinder配置文件,在对应项底下增加以下字段
#vim /etc/cinder/cinder.conf
[DEFAULT]
# ...
my_ip = 172.16.1.160
transport_url = rabbit://rabbitmq:rabbitmq.123@controller160:5672,rabbitmq:rabbitmq.123@controller161:5672,rabbitmq:rabbitmq.123@controller162:5672
auth_strategy = keystone
osapi_volume_listen = 172.16.1.160
osapi_volume_listen_port = 8776
[database]
# ...
connection = mysql+pymysql://cinder:cinder.123@controller168/cinder
[keystone_authtoken]
# ...
www_authenticate_uri = http://controller168:5000
auth_url = http://controller168:5000
memcached_servers = controller160:11211,controller161:11211,controller162:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = cinder
password = cinder.123
[oslo_concurrency]
# ...
lock_path = /var/lib/cinder/tmp
#添加nova配置,使用cinder服务
#vim /etc/nova/nova.conf
[cinder]
os_region_name = RegionOne
#填充cinder数据库,无输出
su -s /bin/sh -c "cinder-manage db sync" cinder
#验证cinder数据库是否正常写入:
mysql -h controller168 -ucinder -pcinder.123 -e "use cinder;show tables;"
#重启nova服务
systemctl restart openstack-nova-api.service
#重启cinder服务,并配置开机启动:
systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
systemctl restart openstack-cinder-api.service openstack-cinder-scheduler.service
systemctl status openstack-cinder-api.service openstack-cinder-scheduler.service
11.6 cinder服务验证
#加载管理凭证
source adminrc.sh
#查看服务列表
openstack volume service list
#输出
[root@controller160 ~]# openstack volume service list
+------------------+---------------+------+---------+-------+----------------------------+
| Binary | Host | Zone | Status | State | Updated At |
+------------------+---------------+------+---------+-------+----------------------------+
| cinder-scheduler | controller160 | nova | enabled | up | 2020-06-23T16:27:22.000000 |
| cinder-scheduler | controller162 | nova | enabled | up | 2020-06-23T16:27:23.000000 |
| cinder-scheduler | controller161 | nova | enabled | up | 2020-06-23T16:27:24.000000 |
+------------------+---------------+------+---------+-------+----------------------------+
11.7 设置pcs资源
#在任意控制节点操作;
#添加资源cinder-api与cinder-scheduler
pcs resource create openstack-cinder-api systemd:openstack-cinder-api clone interleave=true
pcs resource create openstack-cinder-scheduler systemd:openstack-cinder-scheduler clone interleave=true
#cinder-api与cinder-scheduler以active/active模式运行;
#openstack-nova-volume以active/passive模式运行
#查看资源
[root@controller160 ~]# pcs status
Cluster name: openstack-u-cluster
Cluster Summary:
* Stack: corosync
* Current DC: controller161 (version 2.0.3-5.el8_2.1-4b1f869f0f) - partition with quorum
* Last updated: Wed Jun 24 00:16:13 2020
* Last change: Wed Jun 24 00:16:06 2020 by root via cibadmin on controller160
* 3 nodes configured
* 31 resource instances configured
Node List:
* Online: [ controller160 controller161 controller162 ]
Full List of Resources:
* vip (ocf::heartbeat:IPaddr2): Started controller160
* Clone Set: lb-haproxy-clone [lb-haproxy]:
* Started: [ controller160 ]
* Stopped: [ controller161 controller162 ]
* Clone Set: openstack-keystone-clone [openstack-keystone]:
* Started: [ controller160 controller161 controller162 ]
* Clone Set: openstack-glance-api-clone [openstack-glance-api]:
* Started: [ controller160 controller161 controller162 ]
* Clone Set: openstack-nova-api-clone [openstack-nova-api]:
* Started: [ controller160 controller161 controller162 ]
* Clone Set: openstack-nova-scheduler-clone [openstack-nova-scheduler]:
* Started: [ controller160 controller161 controller162 ]
* Clone Set: openstack-nova-conductor-clone [openstack-nova-conductor]:
* Started: [ controller160 controller161 controller162 ]
* Clone Set: openstack-nova-novncproxy-clone [openstack-nova-novncproxy]:
* Started: [ controller160 controller161 controller162 ]
* Clone Set: neutron-server-clone [neutron-server]:
* Started: [ controller160 controller161 controller162 ]
* Clone Set: openstack-cinder-api-clone [openstack-cinder-api]:
* Started: [ controller160 controller161 controller162 ]
* Clone Set: openstack-cinder-scheduler-clone [openstack-cinder-scheduler]:
* Started: [ controller160 controller161 controller162 ]
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled
至此,cinder服务已部署完毕,如有问题请联系我改正,感激不尽!
11.x 部署过程遇到的问题汇总
eg1.[root@controller160 ~]# openstack volume service list
The server is currently unavailable. Please try again at a later time.<br /><br />
The Keystone service is temporarily unavailable.
(HTTP 503)
解决方案:检查cinder用户密码