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

Quitter la vue de l'impression

Mis à jour : Juin 2016
 
 

Déploiement de systèmes distants pour le stockage

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 leur type de volume. 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 = user-name
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 = user-name
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 = user-name
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 = user-name
san_password = password
debug=true
verbose=true
enabled_backends

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

Définit un type de volume avec le nom indiqué. Ce paramètre identifie le type de volume. Toutefois, vous devez créer le type de volume manuellement à l'aide des commandes suivantes :

# cinder type-create vol-type
# cinder type-key vol-type set volume_backend_name=backend-name
# cinder create --display-name display --volume-type vol-type

Ces commandes exécutent respectivement les actions suivantes :

  • Création d'un type de volume.

  • Affectation du nom de back-end au nouveau type de volume.

  • Création d'un volume en fonction du nouveau type de volume.

D'après l'exemple de fichier de configuration Cinder précédent, vous devez saisir les commandes suivantes :

# 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

La dernière commande crée le volume t1 sur l'un des back-ends avec le nom ZFS_REMOTE en fonction des règles de filtrage.

Vous devez exécuter le même ensemble de commandes pour créer des types de volume pour ZFS_LOCAL et ZFS_REMOTE_FC.

zfs_volume_base

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

Paramètres du pilote SAN sur lesquels sont basés tous les pilotes ZFS. Ces paramètres doivent être définis pour activer l'exécution de commandes sur un hôte back-end localement ou à distance avec SSH.

Pour chaque back-end, définissez les paramètres SAN de l'une des deux façons suivantes :

  • Définissez uniquement san_is_local = True

  • Définissez san_ip, san_login et san_password ensemble.

Ne définissez pas les quatre paramètres SAN.

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/fcadm
profiles:Cinder Storage management:itadm> set privs=file_dac_read,sys_devices
profiles:Cinder Storage management:itadm> end
profiles:Cinder Storage management> add cmd=/usr/sbin/fcinfo
profiles:Cinder Storage management:itadm> set privs=file_dac_read,sys_devices
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/lib/rad/module/mod_zfsmgr.so.1
profiles:Cinder Storage management:mod_zfsmgr.so.1> set privs={zone}:/system/volatile/*, \
   sys_config,sys_mount
profiles:Cinder Storage management:mod_zfsmgr.so.1> 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 au manuel Sécurisation des utilisateurs et des processus dans Oracle Solaris dans la bibliothèque correspondant à votre version d'Oracle Solaris dans la Operating Systems Documentation.

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

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

  1. Installez le package group/feature/storage-server sur les hôtes distants.

    # pkg install storage-server
  2. Activez les services suivants à la fois sur l'initiateur et les hôtes distants :

    • svc:/system/stmf:default

    • svc:/network/iscsi/target:default

    • svc:/system/rad:remote

    Par exemple :

    remote-host# svcadm enable stmf
    remote-host# svcadm enable -r svc:/network/iscsi/target:default
    remote-host# svcadm enable rad
  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