@[TOC](openstack cinder使用(小节13))
mysql
检查是否有域名
[root@mysql ~]# vim /etc/hosts
192.168.37.248 openstack.123.net
[root@mysql ~]# mysql -uroot -p123.com
#创建数据库'cinder'
MariaDB [(none)]> CREATE DATABASE cinder;
#授权
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder123';
controller2
测试能否远程连接'cinder'
[root@controller2 ~]# yum install mysql -y
[root@controller2 ~]# mysql -ucinder -pcinder123 -h192.168.37.248
#查看能否看到'cinder'数据库
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| cinder |
| information_schema |
+--------------------+
2 rows in set (0.003 sec)
#退出
MariaDB [(none)]> exit
导入环境变量
[root@controller2 ~]# source scripts/admin_stein.sh
创建'cinder'用户
[root@controller2 ~]# openstack user create --domain default --password-prompt cinder
User Password: <--密码:cinder
Repeat User Password: <--密码:cinder
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | 3d6cf6014ee04da69c088ae6b9b9766a |
| enabled | True |
| id | 87f124a579d34ccd88ef23f9aa514cd7 |
| name | cinder |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
授权
[root@controller2 ~]# openstack role add --project service --user cinder admin
创建cinderv2和cinderv3服务实体(API)
[root@controller2 ~]# openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Block Storage |
| enabled | True |
| id | 72b74325075c476fb569d6ee653d1985 |
| name | cinderv2 |
| type | volumev2 |
+-------------+----------------------------------+
[root@controller2 ~]# openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Block Storage |
| enabled | True |
| id | ece91d00fc7642d0814bfe5a4e30d6a2 |
| name | cinderv3 |
| type | volumev3 |
+-------------+----------------------------------+
[root@controller2 ~]# openstack endpoint create --region RegionOne volumev2 public http://openstack.123.net:8776/v2/%\(project_id\)s
+--------------+-------------------------------------------------+
| Field | Value |
+--------------+-------------------------------------------------+
| enabled | True |
| id | f7b9aed5fd014e968d184c0ce7569d42 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 72b74325075c476fb569d6ee653d1985 |
| service_name | cinderv2 |
| service_type | volumev2 |
| url | http://openstack.123.net:8776/v2/%(project_id)s |
+--------------+-------------------------------------------------+
[root@controller2 ~]# openstack endpoint create --region RegionOne volumev2 internal http://openstack.123.net:8776/v2/%\(project_id\)s
+--------------+-------------------------------------------------+
| Field | Value |
+--------------+-------------------------------------------------+
| enabled | True |
| id | 971b068f0c1041bc9563af1f6b312b19 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 72b74325075c476fb569d6ee653d1985 |
| service_name | cinderv2 |
| service_type | volumev2 |
| url | http://openstack.123.net:8776/v2/%(project_id)s |
+--------------+-------------------------------------------------+
[root@controller2 ~]# openstack endpoint create --region RegionOne volumev2 admin http://openstack.123.net:8776/v2/%\(project_id\)s
+--------------+-------------------------------------------------+
| Field | Value |
+--------------+-------------------------------------------------+
| enabled | True |
| id | 9d7c92be4ff447f089904f0cf1f38fde |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 72b74325075c476fb569d6ee653d1985 |
| service_name | cinderv2 |
| service_type | volumev2 |
| url | http://openstack.123.net:8776/v2/%(project_id)s |
+--------------+-------------------------------------------------+
[root@controller2 ~]# openstack endpoint create --region RegionOne volumev3 public http://openstack.123.net:8776/v3/%\(project_id\)s
+--------------+-------------------------------------------------+
| Field | Value |
+--------------+-------------------------------------------------+
| enabled | True |
| id | c3c0bb13e6cb426b84d9a536e43e0eb1 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | ece91d00fc7642d0814bfe5a4e30d6a2 |
| service_name | cinderv3 |
| service_type | volumev3 |
| url | http://openstack.123.net:8776/v3/%(project_id)s |
+--------------+-------------------------------------------------+
[root@controller2 ~]# openstack endpoint create --region RegionOne volumev3 internal http://openstack.123.net:8776/v3/%\(project_id\)s
+--------------+-------------------------------------------------+
| Field | Value |
+--------------+-------------------------------------------------+
| enabled | True |
| id | 0f79369fccb64bc8b3475d20fa77b854 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | ece91d00fc7642d0814bfe5a4e30d6a2 |
| service_name | cinderv3 |
| service_type | volumev3 |
| url | http://openstack.123.net:8776/v3/%(project_id)s |
+--------------+-------------------------------------------------+
[root@controller2 ~]# openstack endpoint create --region RegionOne volumev3 admin http://openstack.123.net:8776/v3/%\(project_id\)s
+--------------+-------------------------------------------------+
| Field | Value |
+--------------+-------------------------------------------------+
| enabled | True |
| id | c10ac39fbbe1451bb0ca9e515e2c63e5 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | ece91d00fc7642d0814bfe5a4e30d6a2 |
| service_name | cinderv3 |
| service_type | volumev3 |
| url | http://openstack.123.net:8776/v3/%(project_id)s |
+--------------+-------------------------------------------------+
安装和配置组件
[root@controller2 ~]# yum install openstack-cinder -y
[root@controller2 ~]# vim /etc/cinder/cinder.conf
[DEFAULT]
transport_url = rabbit://openstack:openstack123@openstack.123.net
auth_strategy = keystone <--keystone认证
[database]
connection = mysql+pymysql://cinder:cinder123@openstack.123.net/cinder <--数据库连接
[keystone_authtoken] <--keystone认证信息
www_authenticate_uri = http://openstack.123.net:5000
auth_url = http://openstack.123.net:5000
memcached_servers = openstack.123.net:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = cinder
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp <--锁路径
可以检查一下配置文件,可以看到刚刚添加的信息检查是否正确
[root@controller2 ~]# grep -v "#" /etc/cinder/cinder.conf |grep -v "^$"
[DEFAULT]
transport_url = rabbit://openstack:openstack123@openstack.123.net
auth_strategy = keystone
[backend]
[backend_defaults]
[barbican]
[brcd_fabric_example]
[cisco_fabric_example]
[coordination]
[cors]
[database]
connection = mysql+pymysql://cinder:cinder123@openstack.123.net/cinder
[fc-zone-manager]
[healthcheck]
[key_manager]
[keystone_authtoken]
www_authenticate_uri = http://openstack.123.net:5000
auth_url = http://openstack.123.net:5000
memcached_servers = openstack.123.net:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = cinder
[nova]
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_middleware]
[oslo_policy]
[oslo_reports]
[oslo_versionedobjects]
[privsep]
[profiler]
[sample_castellan_source]
[sample_remote_file_source]
[service_user]
[ssl]
[vault]
初始化数据库
[root@controller2 ~]# su -s /bin/sh -c "cinder-manage db sync" cinder
Deprecated: Option "logdir" from group "DEFAULT" is deprecated. Use option "log-dir" from group "DEFAULT".
mysql
到数据库验证一下,看cinder有没有生成表
MariaDB [(none)]> use cinder;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [cinder]> show tables;
+----------------------------+
| Tables_in_cinder |
+----------------------------+
| attachment_specs |
| backup_metadata |
| backups |
| cgsnapshots |
| clusters |
| consistencygroups |
| driver_initiator_data |
| encryption |
| group_snapshots |
| group_type_projects |
| group_type_specs |
| group_types |
| group_volume_type_mapping |
| groups |
| image_volume_cache_entries |
| messages |
| migrate_version |
| quality_of_service_specs |
| quota_classes |
| quota_usages |
| quotas |
| reservations |
| services |
| snapshot_metadata |
| snapshots |
| transfers |
| volume_admin_metadata |
| volume_attachment |
| volume_glance_metadata |
| volume_metadata |
| volume_type_extra_specs |
| volume_type_projects |
| volume_types |
| volumes |
| workers |
+----------------------------+
35 rows in set (0.000 sec)
controller2
配置计算以使用块存储
[root@controller2 ~]# vim /etc/nova/nova.conf
[cinder]
os_region_name = RegionOne
重启nova【可查看nova日志'tail -f /var/log/nova/*.log '】
[root@controller2 ~]# systemctl restart openstack-nova-api.service
cinder管理端设置开机启动
[root@controller2 ~]# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
启动cinder管理端【可查看cinder日志'tail -f /var/log/cinder/*.log '】
[root@controller2 ~]# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
ha1
[root@ha1 ~]# vim /etc/haproxy/haproxy.cfg
#结尾添加以下内容
listen openstack-cinder
bind 192.168.37.248:8776
mode tcp
server 192.168.37.102 192.168.37.102:8776 check inter 3s fall 3 rise 5
server 192.168.37.101 192.168.37.101:8776 check inter 3s fall 3 rise 5 backup <--备份服务器(建议添加)
重启haproxy服务
[root@ha1 ~]# systemctl restart haproxy.service
controller2
[root@controller2 ~]# systemctl restart openstack-cinder-api.service openstack-cinder-scheduler.service
openstack卷服务列表
如果此处'Not Found (HTTP 404)',请查看检查ha1的'/etc/haproxy/haproxy.cfg'是否正确
[root@controller2 ~]# openstack volume service list
+------------------+-------------+------+---------+-------+----------------------------+
| Binary | Host | Zone | Status | State | Updated At |
+------------------+-------------+------+---------+-------+----------------------------+
| cinder-scheduler | controller2 | nova | enabled | up | 2022-10-17T08:27:36.000000 |
+------------------+-------------+------+---------+-------+----------------------------+
mysql
已经配置了yum源、
[root@mysql ~]# ll /etc/yum.repos.d/
total 52
-rw-r--r--. 1 root root 1664 Nov 23 2018 CentOS-Base.repo
-rw-r--r-- 1 root root 956 Jun 19 2019 CentOS-Ceph-Nautilus.repo
-rw-r--r--. 1 root root 1309 Nov 23 2018 CentOS-CR.repo
-rw-r--r--. 1 root root 649 Nov 23 2018 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 314 Nov 23 2018 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 630 Nov 23 2018 CentOS-Media.repo
-rw-r--r-- 1 root root 717 Mar 24 2020 CentOS-NFS-Ganesha-28.repo
-rw-r--r-- 1 root root 1290 Apr 29 2019 CentOS-OpenStack-stein.repo
-rw-r--r-- 1 root root 612 Feb 1 2019 CentOS-QEMU-EV.repo
-rw-r--r--. 1 root root 1331 Nov 23 2018 CentOS-Sources.repo
-rw-r--r-- 1 root root 353 Jul 31 2018 CentOS-Storage-common.repo
-rw-r--r--. 1 root root 5701 Nov 23 2018 CentOS-Vault.repo
安装包
[root@mysql ~]# yum install lvm2 device-mapper-persistent-data -y
启动服务并设置为开机启动
[root@mysql ~]# systemctl start lvm2-lvmetad.service
[root@mysql ~]# systemctl enable lvm2-lvmetad.service
添加硬盘-SCSI-创建新虚拟机磁盘
#TAB补全可以看到有几个host
[root@mysql ~]# echo "- - -" > /sys/class/scsi_host/host
host0/ host1/ host2/
#在每个host里面都扫描一次、然后lsblk就能看看到新增的硬盘
[root@mysql ~]# echo "- - -" > /sys/class/scsi_host/host0/scan
[root@mysql ~]# echo "- - -" > /sys/class/scsi_host/host1/scan
[root@mysql ~]# echo "- - -" > /sys/class/scsi_host/host2/scan
[root@mysql ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 512M 0 part /boot
└─sda2 8:2 0 99.5G 0 part
├─centos-root 253:0 0 97.5G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 500G 0 disk <--新增的硬盘
sr0 11:0 1 918M 0 rom
创建LVM物理卷
[root@mysql ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
创建LVM卷组
[root@mysql ~]# vgcreate cinder-volumes /dev/sdb
Volume group "cinder-volumes" successfully created
在设备部分,添加一个过滤器,该过滤器接受/dev/sdb设备并拒绝所有其他设备
[root@mysql ~]# vim /etc/lvm/lvm.conf
devices {
...
filter = [ "a/sdb/", "r/.*/" ] <--注意磁盘是sdb就写sdb,sdc就写sdc
安装包
[root@mysql ~]# yum install openstack-cinder targetcli python-keystone -y
编辑/etc/cinder/cinder.conf文件
[root@mysql ~]# vim /etc/cinder/cinder.conf
[DEFAULT]
transport_url = rabbit://openstack:openstack123@openstack.123.net
auth_strategy = keystone
enabled_backends = lvm <--调用的后端存储是那个、再下面[lvm]名字要一致
glance_api_servers = http://openstack.123.net:9292
[database]
connection = mysql+pymysql://cinder:cinder123@openstack.123.net/cinder
[keystone_authtoken]
www_authenticate_uri = http://openstack.123.net:5000
auth_url = http://openstack.123.net:5000
memcached_servers = openstack.123.net:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = cinder
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
[lvm] <--
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
target_protocol = iscsi
target_helper = lioadm
volume_backend_name=Openstack-lvm <--加上自定义名称,做多存储区分
启动cinder-volume服务并设置开机启动
[root@mysql ~]# systemctl start openstack-cinder-volume.service target.service
[root@mysql ~]# systemctl enable openstack-cinder-volume.service target.service
controller2
控制端验证、此时应该有两个服务
[root@controller2 ~]# openstack volume service list
+------------------+-------------+------+---------+-------+----------------------------+
| Binary | Host | Zone | Status | State | Updated At |
+------------------+-------------+------+---------+-------+----------------------------+
| cinder-scheduler | controller2 | nova | enabled | up | 2022-10-17T17:01:01.000000 |
| cinder-volume | mysql@lvm | nova | enabled | up | 2022-10-17T17:00:54.000000 |
+------------------+-------------+------+---------+-------+----------------------------+
新建2个虚拟机