Installation et configuration d'OpenStack (Juno) dans Oracle® Solaris

Quitter la vue de l'impression

Mis à jour : Juin 2016
 
 

Déploiement de systèmes distants pour le stockage

Le déploiement Cinder décrit dans cette section s'applique à une configuration Juno qui exécute Oracle Solaris 11.3 SRU 2 ou versions ultérieures.

Dans les versions précédentes d'OpenStack sans prise en charge du réseau de stockage (SAN), le service de volume Cinder devait être configuré pour s'exécuter sur l'hôte cible si le pilote iSCSI ZFS était utilisé.

Grâce à la prise en charge des réseaux de stockage (SAN) dans Cinder, vous pouvez utiliser SSH pour configurer plusieurs back-ends hôte de stockage et définir le type de volume de ces hôtes, qui détermine la façon dont ils sont utilisés. Dans ce type de déploiement, le package Cinder ainsi que l'ensemble des services Cinder sont installés uniquement sur l'hôte de l'initiateur, qui est généralement l'hôte faisant également office de noeud de calcul.

Il n'est pas nécessaire d'installer le package OpenStack sur les hôtes cible distants. Ces hôtes fournissent simplement les disques LUN à l'hôte de l'initiateur basé sur COMSTAR.

Pour déployer correctement des systèmes distants pour le stockage, vous devez respecter les exigences suivantes :

  • Configuration du fichier /etc/cinder/cinder.conf.

  • Octroi du profil de droits approprié à l'utilisateur désigné.

  • Installation manuelle de packages supplémentaires.

Les sections suivantes présentent ces exigences en détail.

Configuration du fichier cinder.conf

Après l'installation du package Cinder sur l'hôte de l'initiateur, modifiez la section [DEFAULT] du fichier /etc/cinder/cinder.conf.

Reportez-vous à l'exemple suivant pour comprendre les définitions figurant dans le fichier de configuration.

[DEFAULT]
my_ip = localhost
osapi_volume_workers = 1
auth_strategy = keystone
#num_volume_device_scan_tries = 6
os-volume-api-version = 2
scheduler_driver=cinder.scheduler.filter_scheduler.FilterScheduler

enabled_backends=zfsdriver-1, zfsdriver-2, zfsdriver-3, zfsdriver-4, zfsdriver-5

[zfsdriver-1]
volume_group=zvolumes-1
volume_driver=cinder.volume.drivers.solaris.zfs.ZFSVolumeDriver
volume_backend_name=ZFS_LOCAL
zfs_volume_base = rpool/cinder
san_is_local = True
debug=true
verbose=true
[zfsdriver-2]
volume_group=zvolumes-2
volume_driver=cinder.volume.drivers.solaris.zfs.ZFSISCSIDriver
volume_backend_name=ZFS_REMOTE
zfs_volume_base = rpool/cinder
san_ip = 10.134.13.38
san_login = jdoe
san_password = password
debug=true
verbose=true
[zfsdriver-3]
volume_group=zvolumes-3
volume_driver=cinder.volume.drivers.solaris.zfs.ZFSFCDriver
volume_backend_name=ZFS_REMOTE_FC
zfs_volume_base = rpool/fc
san_ip = 10.134.13.38
san_login = jdoe
san_password = password
debug=true
verbose=true
[zfsdriver-4]
volume_group=zvolumes-4
volume_driver=cinder.volume.drivers.solaris.zfs.ZFSISCSIDriver
volume_backend_name=ZFS_REMOTE
zfs_volume_base = rpool/cinder/zq
san_ip = 10.134.13.38
san_login = jdoe
san_password = password
debug=true
verbose=true
[zfsdriver-5]
volume_group=zvolumes-5
volume_driver=cinder.volume.drivers.solaris.zfs.ZFSISCSIDriver
volume_backend_name=ZFS_REMOTE
zfs_volume_base = rpool/zq
san_ip = 10.134.63.182
san_login = jdoe
san_password = password
debug=true
verbose=true
enabled_backends= zfsdriver-1, zfsdriver-2, zfsdriver-3, zfsdriver-4, zfsdriver-5

Répertorie les hôtes back-end activés. Dans cet exemple, 5 hôtes back-end sont définis.

Les hôtes back-end utilisent 3 pilotes ZFS (ZFSVolumeDriver, ZFSISCSIDriver, ZFSFCDriver) sur 3 hôtes. Parmi ces hôtes, l'un est local (localhost) tandis que les autres sont distants (10.134.13.38 et 10.134.63.182).

volume_backend_name= ZFS_REMOTE

Définit un type de volume avec le nom indiqué. Les exemples de commandes suivants permettent d'effectuer ces actions, respectivement :

# cinder type-create type-remote
# cinder type-key type-remote set volume_backend_name=ZFS_REMOTE
# cinder create --display-name t1 --volume-type type-remote

Dans l'exemple précédent, chaque commande exécute les actions suivantes :

  • Crée un type de volume.

  • Affecte le nom de back-end au nouveau type de volume.

  • Crée un volume basé sur le nouveau type de volume.

Une fois que vous avec exécuté la dernière commande, le nouveau volume t1 est créé sur l'un des back-ends avec le nom ZFS_REMOTE en fonction des règles de filtrage.

zfs_volume_base = rpool/zq

Spécifie l'ensemble de données de base pour les nouveaux volumes ZFS sur chaque back-end de volume.

san_is_local san_ip san_login san_password

Tous les pilotes ZFS étant basés sur le pilote SAN, vous devez définir les paramètres san_*.

Les commandes sont exécutées sur un hôte back-end localement ou à distance avec SSH. Par conséquent, pour chaque back-end, définissez san_is_local = True ou configurez les paramètres san_ip*, mais n'effectuez pas les deux opérations.

debug=true verbose=true

Paramètres facultatifs pour le débogage. Vous pouvez omettre la configuration de ces paramètres.

Une fois que Cinder est correctement configuré, la liste des services affiche l'état de chaque service.

# cinder service-list
+------------+--------------+------+---------+-------+--------------------+----------+
|  Binary    |     Host     | Zone |  Status | State |      Updated_at    | Disabled |
|            |              |      |         |       |                    |  Reason  |
+------------+--------------+------+---------+-------+--------------------+----------+
|  cinder-   |              |      |         |       |     2015-10-13     |          |
|  backup    |    host-2    | nova | enabled |   up  |  T19:22:45.000000  |  None    |
|            |              |      |         |       |                    |          |
|  cinder-   |              |      |         |       |     2015-10-13     |          |
| scheduler  |    host-2    | nova | enabled |   up  |  T19:22:43.000000  |  None    |
|            |              |      |         |       |                    |          |
|  cinder-   |              |      |         |       |     2015-10-13     |          |
|  volume    |    host-2    | nova | enabled |  down |  T18:31:41.000000  |  None    |
|            |              |      |         |       |                    |          |
|  cinder-   |    host-2    |      |         |       |     2015-10-13     |          |
|  volume    | @zfsdriver-1 | nova | enabled |   up  |  T19:22:46.000000  |  None    |
|            |              |      |         |       |                    |          |
|  cinder-   |    host-2    |      |         |       |     2015-10-13     |          |
|  volume    | @zfsdriver-2 | nova | enabled |   up  |  T19:22:47.000000  |  None    |
|            |              |      |         |       |                    |          |
|  cinder-   |    host-2    |      |         |       |     2015-10-13     |          |
|  volume    | @zfsdriver-3 | nova | enabled |   up  |  T19:22:48.000000  |  None    |
|            |              |      |         |       |                    |          |
|  cinder-   |    host-2    |      |         |       |     2015-10-13     |          |
|  volume    | @zfsdriver-4 | nova | enabled |   up  |  T19:22:47.000000  |  None    |
|            |              |      |         |       |                    |          | 
|  cinder-   |    host-2    |      |         |       |     2015-10-13     |          |
|  volume    | @zfsdriver-5 | nova | enabled |   up  |  T19:22:48.000000  |  None    |
|            |              |      |         |       |                    |          |
|  cinder-   |    host-2    |      |         |       |     2015-10-13     |          |
|  volume    | @zfsdriver-6 | nova | enabled |  down |  T18:32:55.000000  |  None    |
+------------+--------------+------+---------+-------+--------------------+----------+

Octroi des droits à l'utilisateur désigné

Pour que l'utilisateur défini par san_login puisse utiliser les cibles distantes, il doit disposer d'un profil de droits approprié. L'exemple suivant illustre la création du profil de droits pour l'utilisateur.

# useradd -s /usr/bin/pfbash -m jdoe
# passwd jdoe password
# profiles -p "Cinder Storage management"
profiles:Cinder Storage management> set desc="Cinder Storage management on target host"
profiles:Cinder Storage management> add profiles="File System Management"
profiles:Cinder Storage management> add auths="solaris.smf.modify.stmf"
profiles:Cinder Storage management> add cmd=/usr/sbin/itadm
profiles:Cinder Storage management:itadm> set euid=0
profiles:Cinder Storage management:itadm> end
profiles:Cinder Storage management> add cmd=/usr/sbin/stmfadm
profiles:Cinder Storage management:stmfadm> set euid=0
profiles:Cinder Storage management:stmfadm> end
profiles:Cinder Storage management> add cmd=/usr/sbin/zfs
profiles:Cinder Storage management:zfs> set priv=sys_config,sys_mount
profiles:Cinder Storage management:zfs> end
profiles:Cinder Storage management> exit

# usermod -P "Cinder Storage management" jdoe

Pour plus d'informations sur les profils et les droits, reportez-vous à la section Sécurisation des utilisateurs et des processus dans Oracle Solaris 11.3.

Activation de l'hôte distant en tant que cible

Pour activer l'hôte distant en tant que cible, effectuez les étapes suivantes sur l'hôte distant :

  1. Installez le package group/feature/storage-server sur l'hôte distant.

    # pkg install storage-server
  2. Activez les services suivants sur l'hôte :

    • svc:/system/stmf:default

    • svc:/network/iscsi/target:default

    Par exemple :

    remote-host# svcadm enable stmf
    remote-host# svcadm enable -r svc:/network/iscsi/target:default
    
  3. Initialisez et configurez la liste de contrôle d'accès (ACL) pour le paramètre zfs_volume_base défini.

    Par exemple, supposons que la définition zfs_volume_base=rpool/fc figure dans le fichier de configuration. Vous devez ensuite exécuter les commandes suivantes :

    # chmod A+user:cinder:add_subdirectory:allow /rpool/fc
    # zfs allow cinder clone,create,destroy,mount,snapshot rpool/fc