SDB:Cloud OpenNebula

跳转到:导航搜索

在 openSUSE 上测试

推荐文章


简介

OBS 中的 OpenNebula 软件包的设置旨在消除通用且可以自动化的配置步骤。这使您可以跳过 OpenNebula 文档中记录的基本设置。OpenNebula 文档。OpenNebula 云的云节点只需要设置 Hypervisor 和 libvirt(假设云管理员的共享主目录),因此只需要在将充当云头节点的机器上安装 OpenNebula 软件包。云头节点可以被虚拟化,但是,自托管尚未经过测试。

显示如何构建镜像以设置 OpenNebula 云的 KIWI 示例 已经应用了所有配置,并提供了一个 YaST firstboot 设置,允许您在一定程度上自定义设置。

以下描述将引导您完成使用来自 OBS 的软件包在 SUSE(openSUSE 或 SLE)系统上设置 OpenNebula 云的过程。


流程

  1. 添加 OpenNebula 仓库
  2. 安装软件包
  3. 完成配置

添加 OpenNebula 仓库

使用 YaST2

启动 YaST2,选择“软件”并启动“软件仓库”模块。单击左下角的“添加”。在出现的对话框中,选择“指定 URL...”,如果尚未选中,则单击右下角的“下一步”。输入仓库名称“OpenNebula”作为示例,并添加仓库 URL“http://download.opensuse.org/repositories/Virtualization:/Cloud:/OpenNebula/YOUR_SUSE_VERSION”(将 YOUR_SUSE_VERSION 替换为正在使用的发行版的版本号)。单击右下角的“下一步”。

在命令行中

# sudo zypper ar -n OpenNebula -f http://download.opensuse.org/repositories/Virtualization:/Cloud:/OpenNebula/YOUR_SUSE_VERSION on

如前所述,请将 YOUR_SUSE_VERSION 替换为正在使用的发行版的版本。

安装软件包

使用 YaST 或 zypper 将安装所有必要的依赖项。

云基础设施

使用 YaST2

启动 YaST2,选择“软件”并启动“软件管理”模块。使用“nebula”作为搜索词,并选择“opennebula”软件包进行安装。单击右下角的“应用”按钮。

在命令行中
# sudo zypper in opennebula

Web-UI 服务(可选)

使用 YaST2

启动 YaST2,选择“软件”并启动“软件管理”模块。使用“nebula”作为搜索词,并选择“opennebula-sunstone”软件包进行安装。单击右下角的“应用”按钮。

在命令行中
# sudo zypper in opennebula-sunstone


多租户 Web-UI(可选)

使用 YaST2

启动 YaST2,选择“软件”并启动“软件管理”模块。使用“nebula”作为搜索词,并选择“opennebula-zones”软件包进行安装。单击右下角的“应用”按钮。

在命令行中
# sudo zypper in opennebula-zones

完成配置

需要通过命令行完成 OpenNebula 的配置。“opennebula”软件包的安装在您的系统上创建了“oneadmin”用户帐户,其主目录位于“/var/lib/one”。为 oneadmin 用户生成了一个随机密码。对于云基础设施的运行,您无需登录“oneadmin”帐户。但是,如果您希望能够以 oneadmin 用户身份登录,则需要按照以下步骤为“oneadmin”帐户设置新密码

为 oneadmin 帐户创建新密码(可选)

# sudo passwd oneadmin

设置身份验证

OpenNebula 的一种身份验证模型是授权文件,ONE_AUTH 环境变量的值可以指向该文件。如果没有 ONE_AUTH 变量,则读取 $HOME/.one/one_auth 文件。授权文件的格式为

username:password

命令行操作时会参考授权文件,因此添加到云中的任何用户如果使用命令行工具,都需要具有授权文件。云用户帐户由管理员(oneadmin)创建,用户信息存储在 DB 后端中。有关用户管理,请参阅 OpenNebula 文档。命令行工具和 Web-UI 会参考 DB 以验证凭据。如果仅使用 Web-UI 与云交互,则不需要用户主目录中的授权文件。除了授权文件,OpenNebula 还支持使用 X509 证书。有关详细信息,请参阅 x509 身份验证

“opennebula”软件包的安装还安装了 sqlite,默认情况下用作后端 DB。可以使用另一个 DB 作为后端,请参阅 OpenNebula 文档 以获取有关配置不同 DB 的信息。

与普通用户不同,“oneadmin”用户的授权文件是必需的,并且对云基础设施的运行具有重要意义。请按照以下步骤创建文件,基本假设是您没有更改 oneadmin 用户的随机生成的密码。

  • 在您的 shell 中成为“root”
# su
  • 创建授权文件目录
# sudo -u oneamdin mkdir /var/lib/one/.one
  • 创建文件
# echo "oneadmin:susenebula" >& /var/lib/one/.one/one_auth
# chown oneadmin:cloud /var/lib/one/.one/one_auth

为了方便起见,您可能希望将“ONE_AUTH”环境变量设置为指向“oneadmin”用户 shell 环境中的/var/lib/one/.one/one_auth,方法是修改 shell 的启动脚本。

VM 镜像存储

“opennebula”软件包的默认设置是在本地磁盘上的/var/lib/one/datastores 目录中存储 VM 镜像。这意味着预计本地驱动器上应有足够的磁盘空间来存储您希望在云设置中使用的 VM 镜像。可以更改镜像存储的位置,请参阅 OpenNebula 文档 以获取详细信息。重要的是,镜像存储在云的所有机器上位于同一位置。OpenNebula 提供了多种存储模型,如 OpenNebula 文档中所述。

oneadmin 用户帐户的特殊要求

由 opennebula 软件包创建的“oneadmin”用户帐户是云管理员的帐户。“oneadmin”用户是 opennebula 软件包创建的“cloud”组的成员。“oneadmin”帐户和“cloud”组还必须存在于所有云节点安装中,并且具有相同的用户 ID 和组 ID。一种实现方法是将您的云头节点转换为 NIS(网络信息服务)服务器,并将云节点配置为 NIS 客户端。如果您已经在网络上运行现有的 NIS 服务器,可以将“oneadmin”用户添加到现有的 NIS 配置中,并让云节点访问正在运行的 NIS 服务器。最简单的选择是将“oneadmin”用户帐户和“cloud”组添加到每个云节点,因为您设置它。不要忘记,“oneadmin”的 UID 必须在所有机器上相同。“cloud”组 ID 也存在相同的要求。

“oneadmin”用户的主目录包含在 OpenNebula 中称为驱动程序的脚本,这些脚本在云中启动 VM 时被访问。为了避免将这些脚本复制到每台云机器,最好通过 NFS 共享“oneadmin”主目录,并在云节点上挂载 oneadmin 主目录。这意味着您的头节点也是 NFS 服务器。

导出 oneadmin 主目录
使用 YaST2

启动 YaST2,选择“网络服务”并启动“NFS 服务器”模块。选择“启动”以启动 NFS 服务器,这将确保 NFS 服务器在未来启动时启动,如果正在运行防火墙,请在防火墙中打开端口,启用 IPv4 并输入您的域名。单击右下角的“下一步”。在接下来的对话框中,单击“添加目录”,然后输入/var/lib/one 或使用“浏览”按钮浏览到该目录。这是“oneadmin”用户的主目录,如果您从默认位置更改了目录,请确保导出它。使用以下“选项”

no_subtree_check,rw,root_squash,sync

单击“确定”并单击“完成”

在命令行中

作为 root 用户

# echo "/var/lib/one *(no_subtree_check,rw,root_squash,sync)" >& /etc/exports

在版本 12.1 之前使用

# insserv nfsserver
# /etc/init.d/nfsserver start

使用 openSUSE 12.1,init 系统已更改为 systemd,要启用并启动 nfsserver,请使用以下命令

# systemctl enable rpcbind.service
# systemctl enable nfsserver.service
# systemctl start rpcbind.service
# systemctl start nfsserver.service

云管理服务

云由一个名为 "oned" 的服务管理。该服务使用 "one" initscript 启动,或者在 12.1 版本中作为服务单元 (one.service) 启动。首次启动服务时,需要设置 "ONE_AUTH" 环境变量。后续启动不再需要此要求。

在 12.1 版本之前,以 root 用户身份运行

# sudo -u oneadmin env ONE_AUTH=/var/lib/one/.one/one_auth etc/init.d/one start
# insserv one

第一条命令使用设置为指向 "oneadmin" 用户的身份验证文件的 "ONE_AUTH" 变量启动服务。第二条命令将服务插入到 init 进程中,以确保机器需要重新启动时能够正确启动。

使用 openSUSE 12.1 时,init 系统已更改为 systemd,OpenNebula 包在 /lib/systemd/system 中提供服务文件。此外,一个设置脚本承担了初始 特殊 启动的角色。以 root 用户身份执行以下命令

# sudo -u oneadmin env ONE_AUTH=/var/lib/one/.one/one_auth /usr/sbin/onedsetup
# systemctl enable one.service
# systemctl enable one_scheduler.service
# systemctl start one.service
# systemctl start one_scheduler.service

第一条命令使用设置为指向 "oneadmin" 用户的身份验证文件的 "ONE_AUTH" 变量配置数据库。后续命令将服务插入到 init 进程中,以确保机器需要重新启动时能够正确启动,并启动服务。

配置 Web-UI(可选)

一个基于 Web 的 UI 由 opennebula-sunstone 包提供,如前所述。与 openenbula 包一样,opennebula-sunstone 包为通用且可以自动化的内容提供配置。但是,仍然需要一些步骤才能为您的云设置启用 Web-UI 服务。默认情况下,Web-UI 监听 localhost,即 127.0.0.1 的 9869 端口。要使 Web-UI 可以从可以访问服务器的您的网络上的任何机器访问,请将 /etc/one/sunstone-server.conf 中的 ":host:" 条目从 "127.0.0.1" 更改为您的服务器的 IP 地址。如果您愿意,也可以更改端口。现在,以 root 用户身份启用并启动服务

对于 12.1 之前的版本

# /etc/init.d/sunstone start
# insserv sunstone

在 12.1 中使用

# systemctl enable sunstone.service
# systemctl start sunstone.service

现在,您可以使用浏览器连接到 CLOUD_HEAD_IP:9869,该浏览器可以在访问 IP 地址的任何机器上使用。

多租户

从版本 3.0 开始,OpenNebula 支持多租户。多租户意味着一个云部署具有多个控制或头节点。OpenNebula 的此功能通过 opennebula-zones 包提供。由于这种类型的设置比较高级,并且存在许多可能性,因此本指南将不再讨论它。请参阅 OpenNebula 文档关于 zones 的内容。在 12.1 版本中,该服务与 systemd 集成,使用

# systemctl enable ozones.service
# systemctl start ozones.service

将服务添加到 init 进程并启动它。在 openSUSE 12.1 之前使用

# insserv ozones
# /etc/init.d/ozones start

与主守护进程 (oned) 类似,ozones 服务的初始启动需要特殊设置。首次启动时使用 /usr/bin/ozones-server start,并查阅 OpenNebula Zones documentation 以获取详细信息。

设置云节点

云节点必须运行一个 hypervisor。OpenNebula 支持 KVM(基于内核的虚拟机)和 Xen hypervisor,以及专有 hypervisor。有关每个 hypervisor 的配置详细信息,请参阅 OpenNebula documentation。云节点由头节点上的 "oned" 服务使用 虚拟化守护进程 (libvirtd) 管理。因此,此服务必须正在运行。

安装 libvirt

使用 YaST2

启动 YaST2,选择“软件”并启动“软件管理”模块。使用“libvirtd”作为搜索词并选择“libvirtd”包进行安装。单击右下角的“应用”按钮。

在命令行中

# zypper in libvirt

默认情况下,对守护进程及其服务的访问权限仅限于 root 帐户。您必须更改 PolicyKit 设置,以允许 "oneadmin" 用户访问虚拟化功能。在云节点上创建文件 /etc/polkit-1/localauthority/50-local.d/60-suseNebula-access.pkla,内容如下

[Remote libvirt SSH access]
 Identity=unix-user:oneadmin
 Action=org.libvirt.unix.manage
 ResultAny=yes
 ResultInactive=yes
 ResultActive=yes

如前所述,云节点必须配置 "oneadmin" 用户帐户和 "cloud" 组。

虚拟化服务 (libvirtd) 将以默认用户和组 (root:root 或 qemu:qemu,具体取决于 SUSE 的版本) 运行 "qemu" 进程。这将导致权限问题。因此,您必须修改 /etc/libvirt/qemu.conf 配置文件,以使用 "oneadmin" 用户和 "cloud" 组运行该进程。此外,您还希望防止 qemu 进程修改文件所有权。更改配置文件以反映以下设置

user = "oneadmin"
group = "cloud"
dynamic_ownership = 0

请注意,这些条目不会以显示的顺序或分组出现,请使用编辑器的搜索功能在 '/etc/libvirt/qemu.conf 配置文件中找到这些条目。

还需要修改虚拟化守护进程的配置文件,使其能够监听 tcp 连接请求。修改 /etc/libvirt/libvirtd.conf 并将 listen_tcp 值设置为 1,如下所示

listen_tcp = 1

完成这些修改后,您可以按照以下方式启动 "libvirtd" 进程

# insserv libvirtd
# /etc/init.d/libvirtd start

对于 openSUSE 12.1 及更高版本,使用

# systemctl enable libvirtd.service
# systemctl start libvirtd.service

接下来,您需要将 "oneadmin" 用户帐户的主目录内容,即默认情况下为 /var/lib/one,从头节点提供到云节点。您可以从头节点复制内容(如果将来在头节点上升级 OpenNebula 版本,这将导致维护问题),或者您可以 NFS 挂载该目录。

NFS 挂载 oneadmin 用户的主目录

使用 YaST2

启动 YaST2,在“网络服务”类别中选择“NFS 客户端”。单击“添加”以启动 NFS 客户端配置对话框。输入头节点的主机名或头节点 IP 地址。远程目录应为 /var/lib/one,除非您修改了头节点上 "oneadmin" 用户的默认主目录。选择 /var/lib/one 作为本地挂载点,或 "oneadmin" 主目录的新位置。此路径必须与头节点上 "oneadmin" 帐户的主目录匹配。单击“确定”。

在命令行中

使用您最喜欢的编辑器或以下命令在 /etc/fstab 文件中创建一个条目(以 root 用户身份)

# echo "IP_ADDR_HEADNODE:/var/lib/one /var/lib/one nfs defaults 0 0" >> /etc/fstab

在上面的命令中,将 IP_ADDR_HEADNODE 占位符替换为头节点的 IP 地址或主机名。

最后,您需要在云节点上配置和设置网络。可能性很多,难以涵盖。在最简单的情况下,您的所有云节点都具有一个静态 IP 地址的网络桥接。您可以使用 YaST 或 brctl 命令配置网络桥接。重要的是,每个云节点始终具有相同的 IP 地址,否则您的云操作会出现问题。使用 DHCP 也可以实现为每个机器分配相同的 IP 地址。使用 1 个网络桥接和 DHCP 的配置选项在 [KIWI example] 中。有关网络设置详细信息,请参阅 OpenNebula documentation

更新到新版本

版本 3.2.1 到版本 3.4.1

版本 3.4.1 的软件包不会自动执行必要的升级步骤。要升级,您需要关闭云操作,安装新软件包并按照 OpenNebula upgrade documentation 中概述的步骤进行操作。

版本 3.0 到版本 3.2.1

版本 3.2.1 的软件包不会自动执行必要的升级步骤。要升级,您需要关闭云操作,安装新软件包并按照 OpenNebula upgrade documentation 中概述的步骤进行操作。

版本 2.2.1 到版本 3.0

对于 OpenNebula 3.0 版本,OpenNebula 数据存储数据库(默认情况下为 /var/lib/one/one.db)的数据库模式已更改。版本 3.0 的软件包不会自动升级数据库模式。必须手动执行升级。有关数据库升级过程的描述,请遵循 OpenNebula 项目提供的说明,网址为 here。OpenNebula 守护进程 (oned) 会检查数据库版本,如果数据库未提供预期的版本信息,则不会启动。安装新软件包不会影响现有的数据库。

除了数据库模式更新之外,命令行界面和描述云虚拟机的模板也发生了变化。这些更改在兼容性指南中描述,网址为 here

附加说明

需要使用头节点上的控制器注册云节点,请参阅 OpenNebula documentation 以获取命令和参数。设置并注册一个云节点后,云即可运行。您可以随时将新的云节点添加到云中。

一旦您拥有 VM,它还需要注册到云基础设施,请参阅 OpenNebula documentation 以获取命令和参数。

对于 VM 创建,您可以使用 SUSE StudioKIWI 或其他生成适合您的云设置格式的图像的工具。您还可以使用诸如 qemu 之类的工具手动创建图像,以运行虚拟磁盘映像并安装操作系统。这些方法的描述超出了本设置讨论的范围。

如果您为云使用 DHCP,并且在可由已部署的 VM 访问的网络段上运行另一个 DHCP 服务器,请注意,VM 从云头节点以外的 DHCP 服务器接受租约可能会导致问题。 KIWI example 包含有关如何避免此问题的配置信息。

摘要

使用 OBS 的软件包简化了云基础设施的设置,因为通用的自动化任务已在软件包安装期间完成。但是,在软件包安装后仍然需要一些配置步骤。这些配置步骤还允许您根据需要定制安装。

祝您玩得开心,享受您的新云基础设施。

参见

相关文章

外部链接