Instalación y configuración de OpenStack (Kilo) en Oracle® Solaris

Salir de la Vista de impresión

Actualización: Junio de 2016
 
 

Despliegue de sistemas remotos para almacenamiento

En versiones anteriores de OpenStack sin compatibilidad con SAN, había que configurar el servicio de volúmenes de Cinder para que se ejecutara en el host de destino si se usaba el controlador iSCSI de ZFS.

Gracias a la compatibilidad con redes de área de almacenamiento (SAN) en Cinder, puede usar SSH para configurar varios backends de host de almacenamiento, además de definir el tipo de volumen. En este tipo de despliegue, tanto el paquete de Cinder como todos los servicios Cinder se instalan solo en el host iniciador, que normalmente es el host que también funciona como nodo de cálculo.

No es necesario instalar el paquete de OpenStack en los hosts de destino remotos. Estos hosts simplemente proporcionan los discos LUN al host iniciador basado en COMSTAR.

El despliegue correcto de sistemas remotos para almacenamiento tiene los siguientes requisitos:

  • Configuración del archivo /etc/cinder/cinder.conf.

  • Otorgamiento del perfil de derechos adecuado al usuario designado.

  • Instalación manual de paquetes adicionales.

En las siguientes secciones se describen estos requisitos en detalle.

Configuración del archivo cinder.conf

Después de instalar el paquete de Cinder en el host iniciador, edite la sección [DEFAULT] del archivo /etc/cinder/cinder.conf.

Consulte el siguiente ejemplo como guía para comprender las definiciones del archivo de configuración.

[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

Muestra los hosts de backend activados. En este ejemplo, hay 5 hosts de backend definidos.

Los hosts de backend usan 3 controladores ZFS (ZFSVolumeDriver, ZFSISCSIDriver y ZFSFCDriver) en 3 hosts. De estos hosts, uno es local (localhost) y los otros son remotos (10.134.13.38 y 10.134.63.182).

volume_backend_name

Define un tipo de volumen con el nombre especificado. Este parámetro identifica el tipo de volumen. Sin embargo, debe crear el tipo de volumen manualmente con los siguientes comandos:

# 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

Estos comandos ejecutan las siguientes acciones, respectivamente:

  • Crear un nuevo tipo de volumen.

  • Asignar el nombre de backend al nuevo tipo de volumen.

  • Crear un nuevo volumen según el nuevo tipo de volumen.

En función del archivo de configuración de Cinder que se usó como ejemplo anteriormente, se deberían escribir los siguientes comandos:

# 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

El último comando crea el nuevo volumen t1 en uno de los backends con el nombre ZFS_REMOTE según las reglas de filtros.

Debe ejecutar el mismo juego de comandos para crear tipos de volúmenes para ZFS_LOCAL y ZFS_REMOTE_FC.

zfs_volume_base

Especifica el juego de datos base para los nuevos volúmenes de ZFS en cada backend de volumen.

san_is_local san_ip san_login san_password

Parámetros del controlador de SAN en los que se basan todos los controladores de ZFS. Debe configurar estos parámetros para permitir que se ejecuten comandos en un host de backend tanto local como remotamente con SSH.

Para cada backend, configure los parámetros de SAN de una de estas dos maneras:

  • Configure solo san_is_local = True.

  • Configure san_ip, san_login y san_password juntos.

No configure los cuatro parámetros de SAN.

debug=true verbose=true

Parámetros opcionales para depuración. Puede omitir la configuración de estos parámetros.

Después de haber configurado Cinder correctamente, al mostrar estos servicios se despliega el estado de cada servicio.

# 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    |
+------------+--------------+------+---------+-------+--------------------+----------+

Otorgamiento de derechos al usuario designado

Para permitir que el usuario definido mediante san_login use los destinos remotos, se le debe otorgar el perfil de derechos adecuado. En el siguiente ejemplo, se muestra cómo crear el perfil de derechos para el usuario.

# 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

Para obtener más información sobre los perfiles y derechos, consulte Protección de los usuarios y los procesos en Oracle Solaris en la biblioteca de la versión de Oracle Solaris en Operating Systems Documentation.

Activación del host remoto como destino

Para activar el host remoto como destino, siga estos pasos:

  1. Instale el paquete group/feature/storage-server en los hosts remotos.

    # pkg install storage-server
  2. Active los siguientes servicios en el iniciador y en los hosts remotos:

    • svc:/system/stmf:default

    • svc:/network/iscsi/target:default

    • svc:/system/rad:remote

    Por ejemplo:

    remote-host# svcadm enable stmf
    remote-host# svcadm enable -r svc:/network/iscsi/target:default
    remote-host# svcadm enable rad
  3. Inicialice y configure la lista de control de acceso (ACL) para el zfs_volume_base definido.

    Por ejemplo, supongamos que tiene la definición zfs_volume_base=rpool/fc en el archivo de configuración. A continuación, debe ejecutar los siguientes comandos:

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