Oracle Solaris 11 中的 OpenStack 入门

作者:Glynn Foster 和 David Comay

数分钟内从无到有打造完整的私有云。


2014 年 4 月发布(2014 年 6 月、2014 年 7 月和 2015 年 6 月更新


引言

想对本文发表评论吗?请将链接发布在 Facebook 的 OTN Garage 页面上。有类似文章要分享?请将其发布在 Facebook 或 Twitter 上,我们来进行讨论。

Oracle Solaris 11 自带一个完整的 OpenStack 发行版,即面向 Oracle Solaris 的 OpenStack。OpenStack 是一个流行的开源云计算平台,其集中的 Web 式门户为管理和共享数据中心中的计算、网络和存储等资源提供了综合的自助式环境。OpenStack 已集成到 Oracle Solaris 的所有核心技术基础中,因此您可以在数分钟内建立一个企业级的私有云基础架构。

为何选择在 Oracle Solaris 上安装 OpenStack?

结合使用 OpenStack 和 Oracle Solaris 具有以下好处:

  • 经过行业验证的虚拟机管理程序。Oracle Solaris 区域可显著降低虚拟化开销,非常适合 OpenStack 计算资源。Oracle Solaris 内核区域还提供了完全独立的内核版本,允许应用独立的补丁版本。
  • 安全、合规的应用供应。Oracle Solaris 的统一存档特性支持通过一种新的存档格式在云中快速部署应用。这种存档格式支持在裸机系统与虚拟化系统之间移植。云中即时克隆让您能够进行横向扩展,并能可靠地应对灾难恢复的紧急情况。Oracle Solaris 11 中的统一存档特性与实现只读虚拟化的不可变区域和新 Oracle Solaris 合规性框架等功能结合使用,让管理员能够确保端到端的完整性,并可显著降低合规的后续成本。
  • 快速、无故障的云更新。Oracle Solaris 令更新 OpenStack 变成一个轻松、无故障的过程,不到 20 分钟即可更新整个云环境。ZFS 引导环境与 Oracle Solaris 映像包管理系统 (IPS) 相集成,确保出现问题时可快速回滚,以便管理员快速恢复系统运行。
  • 应用驱动的软件定义网络。利用 Oracle Solaris 网络虚拟化功能,应用现在能主导云中网络流量的优先级分配。Oracle Solaris 的弹性虚拟交换机 (EVS) 特性提供单点控制,并且支持通过 VLAN 和 VXLAN 管理租户网络。网络可以灵活地连接至计算节点上创建的虚拟化环境。
  • 单一供应商解决方案。Oracle 是知名企业供应商,提供的全体系解决方案能够从单一供应商获取数据库即服务 (DaaS)、平台即服务 (PaaS) 或基础设施即服务 (IaaS) 的端到端支持,节省了大量的精力和成本。

Oracle Solaris 11 包含 OpenStack Juno 发行版(Oracle Solaris 11.2 SRU 10.5 或 Oracle Solaris 11.3)。已使用 OpenStack Havana 发行版部署 OpenStack 云环境的管理员可以依照“从 Havana 到 Juno:OpenStack 升级程序”中的说明来更新此设置。

可用的 OpenStack 服务

Oracle Solaris 11 中提供了以下 OpenStack 服务:

  • Nova。Nova 在云环境中提供计算功能,允许自助用户通过已分配的资源池创建虚拟环境。Nova 驱动程序利用 Oracle Solaris 非全局区域和内核区域。
  • Neutron。Neutron 管理 OpenStack 云中的网络。Neutron 在多个物理节点上创建和管理虚拟网络,允许自助用户自行创建可由供虚拟机 (VM) 连接和通信的子网。Neutron 使用高度可扩展的插件架构,允许创建复杂的网络拓扑来支持云环境。Neutron 的驱动程序利用 Oracle Solaris 11 的网络虚拟化特性,包括可以跨多个物理节点自动创建租户网络的弹性虚拟交换机。
  • Cinder。Cinder 负责云中的块存储。存储作为虚拟块设备(称为 Cinder 卷)呈现给来宾 VM。存储分为两类:临时卷和持久卷。临时卷的存续期仅限 VM 实例的生命周期,但是在 VM 重新启动后持久存在。删除实例后,存储也会被删除。持久卷通常单独创建并关联至某实例。Cinder 驱动程序利用 ZFS 文件系统,允许在本地计算节点上创建卷,或者通过 iSCSI 或光纤通道远程提供卷。此外,还有一个针对 Oracle ZFS 存储系统的 Cinder 驱动程序。
  • Glance。Glance 在 OpenStack 中提供映像管理服务,支持注册、发现和交付用于安装由 Nova 创建的 VM 的映像。Glance 可以使用不同的存储后端来存储这些映像。Oracle Solaris 11 使用的主要映像格式是统一存档。可以在裸机系统和虚拟系统上供应统一存档,这样便可在 OpenStack 环境中实现全面的可移植性。
  • Keystone。Keystone 是 OpenStack 的身份服务。它提供了一个中央用户目录(映射至可以访问的 OpenStack 项目)和一个位于 OpenStack 服务之间的身份验证系统。
  • Horizon。Horizon 是基于 Web 的仪表盘,允许管理员管理数据中心中的计算、网络和存储资源,并将这些资源分配给多租户用户。随后,用户可以自助创建和销毁 VM、确定这些 VM 的通信网络并将存储卷附加至这些 VM。
  • Swift。Swift 在 OpenStack 中提供基于对象和文件的存储。通过在分布式存储集群中创建复制数据,Swift 可提供冗余和可扩展的存储。当某个存储节点发生故障时,Swift 会快速将其内容复制到其他活动节点。可以通过在集群中添加更多存储节点来实现全横向扩展。Oracle Solaris 11 支持在 ZFS 环境中托管 Swift。
  • Ironic。与由 Nova 处理的 VM 相反,Ironic 在 OpenStack 云中提供裸机供应。Ironic 驱动程序利用 Oracle Solaris Automated Installer,支持 Oracle Solaris 11 系统的多节点供应。
  • Heat。Heat 在云中提供应用编排,允许管理员通过模板定义一组资源来描述多层应用。因此,自助用户可以执行此编排,并按适当的顺序部署适当的计算、网络和存储。
图 1. Oracle Solaris 与 OpenStack 之间的集成点

图 1.Oracle Solaris 与 OpenStack 之间的集成点

在 Oracle Solaris 11 上安装 OpenStack

除 Oracle Solaris 本身的要求外,Oracle Solaris 11 上的 OpenStack 并无任何特别系统要求。不过,为了支持稍多一些 Nova 实例,可能需要额外的 CPU、内存和磁盘空间。有关一般系统要求的信息,请参见“Oracle Solaris 11 系统要求”。

在 Oracle Solaris 上开始使用 OpenStack 的简单方法是下载并安装 Oracle Solaris 11 OpenStack 统一存档,这样大约 10 分钟内即可轻松开始使用 OpenStack。所有基本 OpenStack 服务均已预先安装和配置,因此在单个系统上安装 OpenStack 非常简单。可以从 Oracle 技术网下载统一存档。

安装并进行少量定制之后,即可创建 VM(又称 Nova 实例),为其分配块存储,将其连接到虚拟网络,然后通过易于使用的 Web 浏览器界面管理。

统一存档预加载了两个 Glance 映像,一个适用于非全局区域,另一个适用于内核区域(solaris-kz 标记区域)。此外,通过使用新的 archiveadm(1M) 命令,可以从运行 Oracle Solaris 11 的全局区域、非全局区域和内核区域新建存档,然后将其上载到 Glance 信息库供 OpenStack 使用。

为了使用统一存档法安装,必须有合适的目标。这个目标通常是一个可以通过 Automated Installer 安装统一存档的裸机系统,也可以是内核区域。虽然理论上统一存档可以安装在非全局区域中,但 Oracle Solaris 中的 Nova 计算虚拟化不支持嵌套的非全局区域。

这两种安装方法的详细说明包括在与存档相关的 README 文件中。有关更多详细信息,请参见该文件,但简单地说,可以用多种方法部署统一存档:

  • 使用 Automated Installer 网络服务的裸机安装
  • 使用 USB 映像(通过 archiveadm(1M) 从统一存档生成)的裸机安装
  • 结合使用 Oracle Solaris 自动安装程序引导映像和统一存档的间接安装
  • 使用标准的 zonecfg(1M) 和 zoneadm(1M) 命令直接安装到内核区域

使用 Automated Installer

建议使用 Automated Installer (AI) 服务器在裸机上安装 OpenStack 统一存档。完成此操作后,您需要为适当的安装服务创建或修改清单,在其中包含以下片段,而不是典型的 IPS software 声明:

<software type="ARCHIVE">
      <source>
        <file uri="/net/aiserver/archives/sol-11_3-openstack-sparc.uar"/>
      </source>
      <software_data action="install">
        <name>*</name>
      </software_data>
</software>

保存清单后,您需要将其与现有 AI 服务相关联。以下示例将其与现有的 default-sparc AI 别名服务相关联:

# installadm list -m
Service Name         Manifest Name Type    Status  Criteria
------------         ------------- ----    ------  --------
default-sparc        orig_default  derived default none    
solaris11_3-sparc    orig_default  derived default none    
# installadm create-manifest -n default-sparc \
-m os_manifest -f openstack_manifest.xml -d
Created Manifest: 'os_manifest'
# installadm list -m
Service Name         Manifest Name Type    Status   Criteria
------------         ------------- ----    ------   --------
default-sparc        os_manifest   xml     default  none    
                     orig_default  derived inactive none    
solaris11_3-sparc    orig_default  derived default  none

更新 AI 清单之后,您可以通过网络来启动系统(在本例中,使用 SPARC 系统),如下所示:

{0} ok boot net - install
Boot device: /pci@300/pci@1/pci@0/pci@1/network@0  File and args: - install
100 Mbps full duplex Link up
<time unavailable> wanboot info: WAN boot messages->console
<time unavailable> wanboot info: configuring /pci@300/pci@1/pci@0/pci@1/network@0

1000 Mbps full duplex Link up
<time unavailable> wanboot progress: wanbootfs: Read 368 of 368 kB (100%)
<time unavailable> wanboot info: wanbootfs: Download complete
Tue Jun 16 08:47:08 wanboot progress: miniroot: Read 265784 of 265784 kB (100%)
Tue Jun 16 08:47:08 wanboot info: miniroot: Download complete
SunOS Release 5.11 Version 11.3 64-bit
Copyright (c) 1983, 2015, Oracle and/or its affiliates. All rights reserved.
Remounting root read/write
Probing for device nodes ...
Preparing network image for use
Downloading solaris.zlib
curl arguments --insecure for http://solaris:5555//export/auto_install/solaris11_3-sparc/solaris.zlib
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  229M  100  229M    0     0   110M      0  0:00:02  0:00:02 --:--:--  110M
Downloading solarismisc.zlib
curl arguments --insecure for http://solaris:5555//export/auto_install/solaris11_3-sparc/solarismisc.zlib
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 22.5M  100 22.5M    0     0   102M      0 --:--:-- --:--:-- --:--:--  103M
Downloading .image_info
curl arguments --insecure for http://solaris:5555//export/auto_install/solaris11_3-sparc/.image_info
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    85  100    85    0     0   6525      0 --:--:-- --:--:-- --:--:--  8500
Done mounting image
Configuring devices.
Hostname: solaris
Service discovery phase initiated
Service name to look up: default-sparc
Service discovery over multicast DNS failed
Service default-sparc located at solaris:5555 will be used
Service discovery finished successfully
Process of obtaining install manifest initiated
Using the install manifest obtained via service discovery

solaris console login: 
Automated Installation started
The progress of the Automated Installation will be output to the console
Detailed logging is in the logfile at /system/volatile/install_log
Press RETURN to get a login prompt at any time.

08:57:13    Install Log: /system/volatile/install_log
08:57:13    Using XML Manifest: /system/volatile/ai.xml
08:57:14    Using profile specification: /system/volatile/profile
08:57:14    Using service list file: /var/run/service_list
08:57:14    Starting installation.
08:57:14    0% Preparing for Installation
08:57:14    100% manifest-parser completed.
08:57:14    100% None
08:57:14    0% Preparing for Installation
08:57:14    1% Preparing for Installation
08:57:15    2% Preparing for Installation
08:57:15    3% Preparing for Installation
08:57:15    4% Preparing for Installation
08:57:15    5% archive-1 completed.
08:57:15    6% install-env-configuration completed.
08:57:21    9% target-discovery completed.
08:57:23    Pre-validating manifest targets before actual target selection
08:57:23    Selected Disk(s) : c0t5000CCA05692B8CCd0
08:57:23    Pre-validation of manifest targets completed
08:57:23    Validating combined manifest and archive origin targets
08:57:23    Selected Disk(s) : c0t5000CCA05692B8CCd0
08:57:23    9% target-selection completed.
08:57:23    10% ai-configuration completed.
08:57:23    10% var-share-dataset completed.
08:57:34    10% target-instantiation completed.
08:57:34    10% Beginning archive transfer
08:57:34    Commencing transfer of stream: 8334d198-2812-4e37-85a5-8ae335103f81-0.zfs to rpool
08:57:53    15% Transferring contents
08:57:55    16% Transferring contents
08:57:57    19% Transferring contents
08:57:59    22% Transferring contents
08:58:01    24% Transferring contents
08:58:03    28% Transferring contents
08:58:07    33% Transferring contents
08:58:09    35% Transferring contents
08:58:11    37% Transferring contents
08:58:14    40% Transferring contents
08:58:16    41% Transferring contents
08:58:18    47% Transferring contents
08:58:22    51% Transferring contents
08:58:24    54% Transferring contents
08:58:26    55% Transferring contents
08:58:28    60% Transferring contents
08:58:30    62% Transferring contents
08:58:36    65% Transferring contents
08:58:38    68% Transferring contents
08:58:41    69% Transferring contents
08:58:43    74% Transferring contents
08:58:47    78% Transferring contents
08:58:49    80% Transferring contents
08:58:51    82% Transferring contents
08:58:53    86% Transferring contents
08:59:07    Completed transfer of stream: '8334d198-2812-4e37-85a5-8ae335103f81-0.zfs' from 
http://10.10.10.111/sol-11_3-24-openstack-sparc.uar
08:59:09    Archive transfer completed
08:59:11    90% generated-transfer-778-1 completed.
08:59:11    90% apply-pkg-variant completed.
08:59:11    90% update-dump-adm completed.
08:59:11    90% setup-swap completed.
08:59:12    91% device-config completed.
08:59:14    91% apply-sysconfig completed.
08:59:14    91% transfer-zpool-cache completed.
08:59:15    97% boot-archive completed.
08:59:16    Setting boot devices in firmware
08:59:16    Setting openprom boot-device
08:59:17    98% boot-configuration completed.
08:59:17    98% transfer-ai-files completed.
08:59:17    98% cleanup-archive-install completed.
08:59:18    100% create-snapshot completed.
08:59:18    100% None
08:59:18    Automated Installation succeeded.
08:59:18    You may wish to reboot the system at this time.
Automated Installation finished successfully
The system can be rebooted now
Please refer to the /system/volatile/install_log file for details
After reboot it will be located at /var/log/install/install_log

安装完成后,您可以继续重新启动系统,并使用系统配置工具解决一些基本系统配置问题(假设您没有将系统配置文件关联为 AI 服务器配置的一部分)。有关 Automated Installer 的详细信息,请参见“安装 Oracle Solaris 11 系统”。

使用 Oracle Solaris 内核区域

要将 OpenStack 统一存档安装到 Oracle Solaris 内核区域中,请使用现有的 zonecfg(1M) 和 zoneadm(1M) 命令。以下示例使用 SYSsolaris-kz 模板创建了一个 Oracle Solaris 内核区域,并分配了 8 个虚拟 CPU,内存上限设置为 12 GB。

# zonecfg -z openstack_zone
Use 'create' to begin configuring a new zone.
zonecfg:openstack_zone> create -t SYSsolaris-kz
zonecfg:openstack_zone> select virtual-cpu
zonecfg:openstack_zone:virtual-cpu> set ncpus=8
zonecfg:openstack_zone:virtual-cpu> end
zonecfg:openstack_zone> select capped-memory
zonecfg:openstack_zone:capped-memory> set physical=12g
zonecfg:openstack_zone:capped-memory> end
zonecfg:openstack_zone> verify
zonecfg:openstack_zone> exit

成功创建区域配置之后,可以通过存档来安装内核区域。以下示例为该内核区域使用了一个 50 GB 的磁盘,确保有足够的空间来为 VM 实例创建卷。但是在本例中,您只能创建非全局区域作为 VM 计算环境。

# zoneadm -z openstack_zone install -a ./sol-11_3-openstack-sparc.uar \
-x install-size=50g

安装完成之后,启动内核区域并登录控制台:

# zoneadm -z openstack_zone boot
# zlogin -C openstack_zone

与 Automated Installer 安装一样,系统会提示您使用系统配置工具进行进一步的系统配置。

登录 Horizon 仪表盘

当 OpenStack 安装完成之后,您可以登录 OpenStack Horizon 的基于 Web 的仪表盘,开始评估云环境并供应您的第一个 VM。

要登录到 Horizon,请将浏览器指向 http://mysystem/horizon,其中 mysystem 是运行 Apache Web 服务下的 Horizon 服务的系统的名称。云管理员帐户已经过预配置,您可以使用 admin 帐户登录,密码为 secrete

图 2. OpenStack Horizon 仪表盘登录屏幕

图 2:OpenStack Horizon 仪表盘登录屏幕

当您使用云管理员身份登录时,您会注意到左侧的主导航菜单、左侧导航栏的当前选择定义的页面内容以及右上角的帐户凭证。在左侧导航菜单中,您可以看到三个主视图:Project、Admin 和 Identity。

您可以通过 Admin 视图查看云中所用 Nova 实例和 Cinder 卷的整体视图。您还可以通过它查看和编辑定义 VM 特征的 Flavor 定义,如为 VM 分配的虚拟 CPU 数、内存数量和磁盘空间。在 Oracle Solaris 上,还可以在这里定义底层 Oracle Solaris 区域标记,如非全局区域的 solaris 和内核区域的 solaris-kz。最后,从系统供应的角度来看,您还可以通过此视图创建云用户所用的虚拟网络和路由器。

云管理员可以查看和编辑的其他主要元素涉及项目(也称租户)和用户。项目提供了一种组织和隔离虚拟计算资源所有权和用户的机制,用户是在云中使用这些资源的个人或服务。

显示管理窗格的 OpenStack Horizon 仪表盘

图 3.显示管理窗格的 OpenStack Horizon 仪表盘

Project 视图详细呈现某用户当前正在使用的项目。默认情况下,admin 用户是 demo 项目的一部分(如屏幕右上角的帐户凭证所示)。单击该视图将提供云用户可在此项目下以用户身份执行的一组选项。当使用 Oracle Solaris 11 OpenStack 统一存档时,Compute 菜单的 Images 子菜单显示 Glance 服务已预填充两个映像:一个针对基于非全局区域的实例,另一个针对基于内核区域的实例。

Access & Security 子菜单下,用户可以将自己的个人 SSH 公钥上载至 Nova 服务。此公钥将自动放置在新实例 root 用户的 authorized_keys 文件中,允许用户远程登录到该实例。

图 4. 通过 Glance 在映像和快照中可用的 Oracle Solaris 11.2 非全局区域

图 4.通过 Glance 在映像和快照中可用的 Oracle Solaris 11.2 非全局区域

要创建新实例,云用户(admin 用户或任何多租户用户)只需单击 Instances 子菜单。单击右侧的 Launch Instance 将弹出一个对话框,云用户可在其中指定映像类型(默认情况下,选项为非全局区域或内核区域)、新实例名称以及实例的风格。后者应与映像类型中指定的区域类型匹配,且所选大小应反映目标负载的要求。

在对话框的 Access & Security 选项卡下,可以选择在即将新建的实例中安装哪个上载的 SSH 密钥对;在 Network 选项卡下,可以选择实例应连接的网络。最后,单击 Launch 将导致创建、安装和启动实例。新实例能够使用所需时间取决于多种因素,包括映像大小、所选风格定义中提供的资源以及 OpenStack 放置新实例根文件系统的位置。

Instances 子菜单屏幕中,可以单击实例名查看一般信息,也可以查看实例的控制台日志。重载此特定页可以查看已发生的更新。

注意,单击 Volumes 子菜单即可查看已创建的 Cinder 卷。通常,每个实例将分配至少一个卷,并显示在此处。在多节点配置中,此卷可能远程通过 iSCSI 或光纤通道等协议与该实例连接。为非全局区域组成的实例分配的卷必须位于云中的其他节点上。

单击 Network 菜单的 Network Topology 子菜单,您可以查看云网络的虚拟表示,包括所有子网段、虚拟路由器和活动实例。

扩展 OpenStack 环境

现在,您已经在单节点环境中安装了 OpenStack,接下的常见步骤是创建一个多节点环境。尽管单节点配置非常适合用于评估 OpenStack,但它们不适用于以可扩展性和可靠性为关键目标的生产环境。

OpenStack 服务可以拆分到定义一个逻辑分组的多个物理节点上。每个云通常包含一个 Horizon 仪表盘、一个 Glance 映像存储库和一个 Keystone 身份服务。但是,一个云可以包含任意数量的计算和存储实例,当您希望利用不同供应商的不同虚拟机管理程序功能或数据中心中的不同后端存储设备时,这一点尤其有用。

典型的初始架构包括一个控制器节点、一个计算节点和一个存储节点。控制器节点托管大多数共享 OpenStack 服务,这些服务提供 OpenStack 的 API 端点、调度服务和其他共享功能。计算节点托管自助用户创建的 VM 实例。存储节点托管云的永久存储和临时存储。

跨三个物理节点的典型 OpenStack 初始架构

图 5:跨三个物理节点的典型 OpenStack 初始架构

管理员需要了解关于 OpenStack 的更多信息以及不同的服务如何通过协同作业来实现这一目标。有关 OpenStack 的更多信息,请参阅“在 Oracle Solaris 11 中安装和配置 OpenStack”。

另请参见

另请参见以下资源:

关于作者

Glynn Foster 是 Oracle Solaris 的首席产品经理。他负责多个技术领域,包括 OpenStack、Oracle Solaris 映像包管理系统、安装和配置管理。

David Comay 是首席高级软件工程师,自 1996 年起开始在 Sun 和 Oracle 从事网络领域工作,专攻路由协议和 IPv6。他是最初两个 Oracle Solaris 8 更新版本和 Oracle Solaris 9 的操作系统/网络技术主管。后来,他转入资源管理领域,成为最初 Oracle Solaris 区域项目团队的成员。从其初始项目集成起,他一直领导该团队,直到 Oracle Solaris 10 结束以及几个后续 Oracle Solaris 10 更新版本。推动 Oracle Solaris 现代化改造计划并成为 OpenSolaris 二进制版本及 Oracle Solaris 11 技术主管之后,David 现在是最初关注 OpenStack 与 Oracle Solaris 的集成的 Oracle Solaris 云战略的架构师。

修订版 1.0,2014 年 4 月 28 日
修订版 1.1,2014 年 6 月 20 日
修订版 2.0,2014 年 7 月 30 日
修订版 3.0,2015 年 6 月 30 日

关注我们:
博客 | Facebook | Twitter | YouTube