在 Oracle® Solaris 中安装和配置 OpenStack (Juno)

退出打印视图

更新时间: 2016 年 6 月
 
 

部署用于存储的远程系统

本节中介绍的 Cinder 部署适用于在 Oracle Solaris 11.3 SRU 2 或更高发行版上运行的 Juno 设置。

在不支持 SAN 的以前的 OpenStack 发行版中,如果使用 ZFS iSCSI 驱动程序,必须将 Cinder 卷服务配置为在目标主机上运行。

借助 Cinder 中存储区域网络 (storage area network, SAN) 的支持,您可以使用 SSH 配置多个存储主机后端并定义这些主机的卷类型,卷类型将决定这些主机的使用方式。在此类型部署中,Cinder 软件包以及所有 Cinder 服务都将仅安装在启动器主机上,该主机通常还用作计算节点。

不需要在远程目标主机上安装 OpenStack 软件包。这些主机仅向基于 COMSTAR 的启动器主机提供 LUN 磁盘。

正确部署用于存储的远程系统包含以下要求:

  • 配置 /etc/cinder/cinder.conf 文件。

  • 向指定的用户授予合适的权限配置文件。

  • 手动安装其他软件包。

以下各节详细讨论了这些要求。

配置 cinder.conf 文件

在启动器主机上安装 Cinder 软件包后,编辑 /etc/cinder/cinder.conf 文件的 [DEFAULT] 部分。

请参阅以下示例,以作为理解配置文件中的定义的指南。

[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

列出启用的后端主机。在此示例中,定义了 5 台后端主机。

这些后端主机在 3 台主机上使用 3 个 ZFS 驱动程序(ZFSVolumeDriverZFSISCSIDriverZFSFCDriver)。在这些主机中,一台是本地的 (localhost),而其他的是远程的(10.134.13.3810.134.63.182)。

volume_backend_ name= ZFS_REMOTE

定义具有指定名称的卷类型。以下示例命令分别执行这些操作:

# 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

在前面的示例中,每个命令执行以下操作:

  • 创建一个新的卷类型。

  • 为新的卷类型指定后端名称。

  • 创建一个基于新的卷类型的新卷。

在运行最后一个命令后,将根据过滤规则在名为 ZFS_REMOTE 的一个后端上创建新卷 t1

zfs_volume_base = rpool/zq

在每个卷后端上为新的 ZFS 卷指定基础数据集。

san_is_local san_ip san_login san_password

因为所有 ZFS 驱动程序都基于 SAN 驱动程序,所以必须设置 san_* 参数。

命令在后端主机本地执行或者使用 SSH 远程执行。因此,对于每个后端,您可以设置 san_is_local = True 或配置 san_ip* 参数,但不能同时执行两者。

debug=true verbose=true

用于调试的可选参数。您可以不配置这些参数。

正确配置 Cinder 后,列出服务会显示每个服务状态。

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

向指定的用户授予权限

要使 san_login 定义的用户能够使用远程主机,必须向用户授予合适的权限配置文件。以下示例展示了如何为用户创建权限配置文件。

# 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

有关配置文件和权限的更多信息,请参阅在 Oracle Solaris 11.3 中确保用户和进程的安全

将远程主机启用为目标

要将远程主机启用为目标,请在远程主机上执行以下步骤:

  1. 在远程主机上安装 group/feature/storage-server 软件包。

    # pkg install storage-server
  2. 在主机上启用以下服务:

    • svc:/system/stmf:default

    • svc:/network/iscsi/target:default

    例如:

    remote-host# svcadm enable stmf
    remote-host# svcadm enable -r svc:/network/iscsi/target:default
    
  3. 为所定义的 zfs_volume_base 初始化和设置访问控制列表 (Access Control List, ACL)。

    例如,假设配置文件中存在 zfs_volume_base=rpool/fc 定义。然后,必须运行以下命令:

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