跳转到: 导航, 搜索

XenServer/VirtualBox

在 Virtual Box 上安装 XenServer

当您希望所有内容都在单个机器上运行时,这是一个非常有用的开发环境。

该设置包括

  • 您的笔记本电脑或台式机上的 Virtual Box
    • 请注意,Virtual Box 在许多平台上运行良好:Linux、MacOS X 和 Windows
  • 在 Virtual Box VM 中运行的 XenServer
  • OpenStackXenServer 上的 VM 中运行
  • 使用 OpenStack 在 XenServer 上启动 VM

安装 Virtual Box

您可以从您最喜欢的包管理器或从这里获取 Virtual Box:https://virtualbox.net.cn/wiki/Downloads

Xen 需要 64 位 CPU,因此请确保您在 64 位操作系统上安装 64 位版本的 Virtual Box

Networking

与任何 XenServer + OpenStack + DevStack 部署一样,了解网络配置是值得的。

虽然有很多选项可以使用,但请先尝试推荐的方法。这将真正帮助您了解什么是可能的。

在 Virtual Box 上运行的 XenServer VM

  • 单个桥接适配器连接到您的主网络
    • NAT 是默认设置,但不太实用
    • 这将使 XenServer 出现在您的网络上
  • 假设上述网络具有 DHCP(例如家庭路由器提供的 DHCP)

在 XenServer 上运行的 Ubuntu VM

  • 始终获取四个接口
    • eth0:与 XenServer 的私有网络,最好忽略此接口
    • eth1:VM 流量网络
    • eth2:管理网络(rabbit、mysql、keystone 等)
    • eth3:公共网络(浮动 IP 流量、外部 API 访问)

有关不错的图片,请参阅官方文档:https://docs.openstack.org/folsom/openstack-compute/admin/content/introduction-to-xen.html#xenapi-deployment-architecture

安装 XenServer

首先从 XenServer 下载站点 下载 XenServer ISO 到运行 virtual box 的机器上

完成后,您需要创建一个 Virtual Box VM,其中包含

  • 连接到 XenServer ISO 的 cd 驱动器
  • 桥接网络接口连接到网络
    • 您需要在 NIC 上将“Promiscuous Mode”设置为“Allow All”,以确保允许在 XenServer VM 内部运行的 VM 的流量
    • 理想情况下,具有 DHCP 服务器和互联网连接(就像大多数家庭路由器网络一样)
  • 超过 2GB RAM(Dom0 占用 800MB,DomU 占用 1GB+,然后启动 VM 需要一些 RAM)
  • 启用以下主板选项
    • 启用 IO APIC
    • 硬件时钟使用 UTC
  • 启用以下处理器和加速选项
    • PAE、VT-x、Nested Paging
  • 添加至少 50 GB 的单个硬盘
  • 可以禁用音频和 USB

现在您已经有了 VM,启动 VM,您应该进入 XenServer 安装程序

  • 在提示时,请确保选择“XenServer 优化”存储
  • 根据您的需要配置网络,但最好使用与您的主机机器相同的子网中的静态地址
  • 在请求时,从 VM 的 cd 驱动器中删除 ISO

XenServer VM 上运行 DevStack

如果一切顺利,您现在应该在 Virtual Box VM 中拥有一个正在运行的 XenServer 服务器,该服务器在您的 PC 上运行。此外,该 XenServer 服务器应该能够连接到互联网。

我们现在准备好配置和运行 DevStack 的 xen 工具部分。这将创建一个 Ubuntu VM,并在 VM 启动时运行 stack.sh,并在该 VM 中安装和配置最新的 OpenStack 代码。我们现在遵循 DevStack XenServer ReadMe 中的说明:https://github.com/openstack-dev/devstack/blob/master/tools/xen/README.md

将 DevStack 下载到 XenServer 的 Dom0

在此阶段,您可以 ssh 到 XenServer 机器。您现在位于“Dom0”,XenServer 控制 VM。值得以通常的方式添加您的 SSH 密钥作为授权密钥,以使这更容易。DevStack 也会将该配置复制到 DevStack VM。理想情况下,还应创建一个新的 SSH 密钥,并授权该密钥,以使 DevStack 脚本能够访问它创建的 VM。

现在我们可以遵循 Readme 的第 2 步

配置 DevStack

配置的棘手部分是网络配置。让我们逐步完成所有示例配置选项,并添加一些将在此特定情况下有所帮助的额外选项。以下内容应添加到 devstack 目录中的名为“localrc”的文件中,请记住检查每个选项并更新它(至少 IP 和密码必须更改)

# At the moment, we depend on github's snapshot function.
GIT_BASE="http://github.com"

# Passwords
# NOTE: these need to be specified, otherwise devstack will try
# to prompt for these passwords, blocking the install process.
#
MYSQL_PASSWORD=my_super_secret
SERVICE_TOKEN=my_super_secret
ADMIN_PASSWORD=my_super_secret
SERVICE_PASSWORD=my_super_secret
RABBIT_PASSWORD=my_super_secret
SWIFT_HASH="66a3d6b56c1f479c8b4e70ab5c2000f5"

# This will be the password for the [[OpenStack]] VM (both stack and root users)
#
GUEST_PASSWORD=my_super_secret

# XenAPI parameters
# NOTE: The following must be set to your XenServer root password!
#
XENAPI_PASSWORD=my_xenserver_root_password

XENAPI_CONNECTION_URL="http://address_of_your_xenserver"
VNCSERVER_PROXYCLIENT_ADDRESS=address_of_your_xenserver

# Explicitly set virt driver
#
VIRT_DRIVER=xenserver

# Explicitly enable multi-host for nova-network HA
#
MULTI_HOST=1

# Give extra time for boot
#
ACTIVE_TIMEOUT=45

#
# You can change the default amount of memory if you don't have enough
# but note that swap is likely to be used, and the system therefore may run slowly.
# Increased the disk size
#
OSDOMU_MEM_MB=1024
OSDOMU_VDI_GB=12

#
# Keep any code changes I make
#
RECLONE=no

#
# Turn on logging
#
LOGFILE=/tmp/devstack/log/stack.log
SCREEN_LOGDIR=/tmp/devstack/log/

#
# Default image doesn't have an agent
# this will speed up the instance boot time
#
EXTRA_OPTS=("xenapi_disable_agent=True")

运行 DevStack

现在我们已经配置好了一切,我们可以运行将

  • 创建 Ubuntu VM(通过网络安装)
  • 将 DevStack 下载到该 VM 中,并安装 XenServer 工具
  • 最后启动 VM,并在启动过程中运行 stack.sh

要在 XenServer 机器上运行此脚本,请键入以下内容

# assumes you are at the root of the devstack source
cd tools/xen
./install_os_domU.sh

如果您需要更改与 DomU 创建相关的设置(例如 PUB_IP 和 OSDOMU_MEM_MB),则需要先删除模板,否则您的更改将不会生效。您可以使用以下设置来执行此操作

CLEAN_TEMPLATES=true

监控 install_os_domU.sh 的进度

该过程最耗时的部分是对 Ubuntu 进行网络安装。要监控进度,最好访问 VM 的 VNC 控制台,并查看安装的进度。

您可以通过创建模板和创建新的 DevStackOSDomU VM 来判断 Ubuntu 安装是否成功。如果已将 SSH 密钥安装到 DomU,该脚本将登录到 DomU,并跟踪 VM 上的 /opt/stack/run.sh.log 的内容。如果您未安装 ssh 密钥,您可以自行查看。

Ubuntu DomU VM 内部有什么?

首先登录到创建的 Ubuntu VM。请注意

  • 用户名为“stack”
  • root 用户也已启用
  • 密码在 localrc 文件中指定。


请注意以下行

# This is the password for your guest (for both stack and root users)
GUEST_PASSWORD=password

登录 stack 用户后(可能通过已安装的 ssh 密钥),您位于 /opt/stack 中。在这里,您可以看到使用“python setup.py develop”安装的所有 OpenStack 代码。

使用 OpenStack

开始的最佳方法是查看您可以在 http://<ubuntu_vm 的 IP 地址> 访问的仪表板

默认情况下,创建了两个用户“demo”和“admin”,并分配了适当的项目。localrc 中指定的 ADMIN_PASSWORD 用于这两个帐户的密码

ADMIN_PASSWORD=my_super_secret

更改配置以使用 XenAPI NFS

这是一个很好的示例,说明如何在一些简单的部署中使用 Cinder 与 XenServer

首先在您的机器上安装 NFS 服务器:https://help.ubuntu.com/community/SettingUpNFSHowTo

这是一个示例 /etc/exports 文件

/export *(rw,sync,no_subtree_check,all_squash)

然后,您可以更新 localrc 文件以使用 NFS,并重新启动 VM 以使用新设置

CINDER_DRIVER=XenAPINFS
CINDER_XENAPI_CONNECTION_URL=$XENAPI_CONNECTION_URL
CINDER_XENAPI_CONNECTION_USERNAME=root
CINDER_XENAPI_CONNECTION_PASSWORD=$XENAPI_PASSWORD
CINDER_XENAPI_NFS_SERVER=<domU IP address>
CINDER_XENAPI_NFS_SERVERPATH=/export

更改一些代码

我们刚刚安装的 NFS 服务器还有另一个用途。现在我们可以从您的开发机器访问上述代码,并直接对其进行编辑。让我们看看如何更改 Nova。

我们可以编辑 /etc/exports 文件,并重新启动 NFS 服务器并公开 /opt/stack 目录。以下是应该起作用的 /etc/exports 文件

/opt/stack 10.80.3.106(rw,nohide,insecure,no_subtree_check)
/export *(rw,sync,no_subtree_check,all_squash)

然后,您可以以通常的方式在您的开发框中挂载 /opt/stack。您会发现,虽然有一些延迟,但 git 仍然可以使用您的开发框本地的密钥和设置工作。

您可能希望将一些源文件安装到 nova VM 内部,但为了便于获取源文件,我记录了替代方案。