Dieser Abschnitt beschreibt wie der Dienst Block-Storage auf dem Controller Node zu installieren und zu konfigurieren ist, Codename cinder. Dieser Dienst benötigt mindestens einen zusätzlichen Storage Node, der Datenräger für Instanzen zur Verfügung stellt.
Bevor Sie den Dienst Block-Storage installieren und konfigurieren, müssen Sie eine Datenbank anlegen und Dienstanmeldeinformationen und API Endpunkte erstellen.
Führen Sie diese Schritte zum Erstellen der Datenbank aus:
Benutzen Sie den Datenbank-Client zur Verbindung zum Datenbank-Server als Benutzer root :
$ mysql -u root -p
Erstellen Sie die Datenbank cinder:
CREATE DATABASE cinder;
Vergeben Sie die richtigen Zugriffsberechtigungen für die Datenbank cinder:
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
IDENTIFIED BY 'CINDER_DBPASS';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
IDENTIFIED BY 'CINDER_DBPASS';
Ersetzen Sie CINDER_DBPASS durch ein geeignetes Passwort.
Beenden Sie den Datenbank-Client.
Sourcen Sie die admin Anmeldeinformationen, um Zugriff auf die Admin-Kommandos zu bekommen:
$ . admin-openrc
Um die Dienstanmeldeinformationen zu erstellen, vervollständigen Sie folgende Schritte:
Erstellen Sie einen Benutzer cinder:
$ openstack user create --domain default --password-prompt cinder
User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | e0353a670a9e496da891347c589539e9 |
| enabled | True |
| id | bb279f8ffc444637af38811a5e1f0562 |
| name | cinder |
+-----------+----------------------------------+
Fügen Sie die Rolle admin zum Benutzer cinder hinzu:
$ openstack role add --project service --user cinder admin
Bemerkung
Das Kommando erzeugt keine Ausgabe.
Erstellen Sie die Dienstinstanzen cinder und cinderv2:
$ openstack service create --name cinder \
--description "OpenStack Block Storage" volume
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Block Storage |
| enabled | True |
| id | ab3bbbef780845a1a283490d281e7fda |
| name | cinder |
| type | volume |
+-------------+----------------------------------+
$ openstack service create --name cinderv2 \
--description "OpenStack Block Storage" volumev2
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Block Storage |
| enabled | True |
| id | eb9fd245bdbc414695952e93f29fe3ac |
| name | cinderv2 |
| type | volumev2 |
+-------------+----------------------------------+
Bemerkung
Der Dienst Block-Storage erfordert zwei Dienstinstanzen.
Erstellen Sie die API-Endpunkte für Block-Storage:
$ openstack endpoint create --region RegionOne \
volume public http://controller:8776/v1/%\(tenant_id\)s
+--------------+-----------------------------------------+
| Field | Value |
+--------------+-----------------------------------------+
| enabled | True |
| id | 03fa2c90153546c295bf30ca86b1344b |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | ab3bbbef780845a1a283490d281e7fda |
| service_name | cinder |
| service_type | volume |
| url | http://controller:8776/v1/%(tenant_id)s |
+--------------+-----------------------------------------+
$ openstack endpoint create --region RegionOne \
volume internal http://controller:8776/v1/%\(tenant_id\)s
+--------------+-----------------------------------------+
| Field | Value |
+--------------+-----------------------------------------+
| enabled | True |
| id | 94f684395d1b41068c70e4ecb11364b2 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | ab3bbbef780845a1a283490d281e7fda |
| service_name | cinder |
| service_type | volume |
| url | http://controller:8776/v1/%(tenant_id)s |
+--------------+-----------------------------------------+
$ openstack endpoint create --region RegionOne \
volume admin http://controller:8776/v1/%\(tenant_id\)s
+--------------+-----------------------------------------+
| Field | Value |
+--------------+-----------------------------------------+
| enabled | True |
| id | 4511c28a0f9840c78bacb25f10f62c98 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | ab3bbbef780845a1a283490d281e7fda |
| service_name | cinder |
| service_type | volume |
| url | http://controller:8776/v1/%(tenant_id)s |
+--------------+-----------------------------------------+
$ openstack endpoint create --region RegionOne \
volumev2 public http://controller:8776/v2/%\(tenant_id\)s
+--------------+-----------------------------------------+
| Field | Value |
+--------------+-----------------------------------------+
| enabled | True |
| id | 513e73819e14460fb904163f41ef3759 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | eb9fd245bdbc414695952e93f29fe3ac |
| service_name | cinderv2 |
| service_type | volumev2 |
| url | http://controller:8776/v2/%(tenant_id)s |
+--------------+-----------------------------------------+
$ openstack endpoint create --region RegionOne \
volumev2 internal http://controller:8776/v2/%\(tenant_id\)s
+--------------+-----------------------------------------+
| Field | Value |
+--------------+-----------------------------------------+
| enabled | True |
| id | 6436a8a23d014cfdb69c586eff146a32 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | eb9fd245bdbc414695952e93f29fe3ac |
| service_name | cinderv2 |
| service_type | volumev2 |
| url | http://controller:8776/v2/%(tenant_id)s |
+--------------+-----------------------------------------+
$ openstack endpoint create --region RegionOne \
volumev2 admin http://controller:8776/v2/%\(tenant_id\)s
+--------------+-----------------------------------------+
| Field | Value |
+--------------+-----------------------------------------+
| enabled | True |
| id | e652cf84dd334f359ae9b045a2c91d96 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | eb9fd245bdbc414695952e93f29fe3ac |
| service_name | cinderv2 |
| service_type | volumev2 |
| url | http://controller:8776/v2/%(tenant_id)s |
+--------------+-----------------------------------------+
Bemerkung
Der Dienst Block-Storage erfordert Endpunkte für jede Dienstinstanz.
Installieren Sie die Pakete:
# apt-get install cinder-api cinder-scheduler
Bearbeiten Sie die Datei /etc/cinder/cinder.conf und vervollständigen Sie folgende Aktionen:
Konfigurieren Sie den Datenbankzugriff in der Sektion [database] :
[database]
...
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
Ersetzen Sie CINDER_DBPASS durch das Passwort, das Sie für die Block-Storage-Datenbank gewählt haben.
Konfigurieren Sie den RabbitMQ Nachrichtenwarteschlangen-Zugriff in den Sektionen [DEFAULT] und [oslo_messaging_rabbit] :
[DEFAULT]
...
rpc_backend = rabbit
[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
Ersetzen Sie RABBIT_PASS mit dem Passwort, welches Sie für den openstack Account in RabbitMQ gewählt haben.
Konfigurieren Sie den Identitätsdienst-Zugriff in den Sektionen [DEFAULT] und [keystone_authtoken]:
[DEFAULT]
...
auth_strategy = keystone
[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 = CINDER_PASS
Ersetzen Sie CINDER_PASS durch das Passwort, das Sie für den Benutzer cinder im Identitätsdienst vergeben haben.
Bemerkung
Alle anderen Optionen in der Sektion [keystone_authtoken] müssen auskommentiert oder gelöscht werden.
Konfigurieren Sie in der Sektion [DEFAULT] die Option my_ip so, dass die IP-Adresse der Management-Schnittstelle des Controller Nodes genutzt wird.
[DEFAULT]
...
my_ip = 10.0.0.11
Konfigurieren Sie den Sperrpfad in der Sektion [oslo_concurrency]:
[oslo_concurrency]
...
lock_path = /var/lib/cinder/tmp
Befüllen der Block-Storage-Datenbank:
# su -s /bin/sh -c "cinder-manage db sync" cinder
Bemerkung
Ignorieren Sie alle veraltet-Nachrichten in dieser Ausgabe.
Bearbeiten Sie die Datei /etc/nova/nova.conf und fügen Sie Folgendes hinzu:
[cinder]
os_region_name = RegionOne
Starten Sie den Compute API-Dienst neu:
# service nova-api restart
Starten Sie die Block-Speicher Dienste neu:
# service cinder-scheduler restart
# service cinder-api restart
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.