跳转到: 导航, 搜索

QuantumDevstackOvsXcp

安装 XCP

安装已在 XCP 1.6 上测试过,可以从这里下载 (http://www.xen.org/download/xcp/index_1.6.0.html)。

假设在虚拟机中安装

  • 确保已配置嵌套虚拟化
  • 确保有 2 个 scsi 类型的硬盘可用
    • 1 个用于 xcp 安装(建议 10gb 动态分配)
    • 1 个用于 vm 存储(建议 40gb 动态分配)

注意 - OpenStack 要求虚拟机存储为 ext。要指定此项,请选择“启用稀疏配置(针对 XenDesktop 的优化存储)”。

注意 - 以下设置假定 XCP 机器连接到具有 DHCP 服务器的网络,通过其 eth0。该网络将用作 OpenStack 安装的管理网络。 同样该网络将用于 netinstalling ubuntu VM。 请注意,如果您之前运行过 devstack,可能会遇到问题,因为您的一些网络配置被硬编码到保存的模板中。 为了避免使用旧模板,请确保 CLEAN_TEMPLATES 设置为 True。 这将使安装时间更长,因为将进行全新的 Ubuntu 安装。 这将是一个问题,作为 xenapi devstack 清理 的一部分来解决。

您的公共网络和 VM 网络将不会连接到 XCP 盒子的任何接口。

配置存储库

要配置存储库,请以 root 用户身份登录到 dom0 主机并执行以下操作

## List the machine’s UUID
$ xe host-list

## Create an EXT storage repository (SR) with thin provisioning support and direct access to the VHD files.  
# This example uses /dev/sdb, but this may differ for your host.
$ xe sr-create host-uuid=<hit TAB should match UUID above> content-type=user name-label=”Local EXT3 SR” shared=false device-config:device=/dev/sdb type=ext

## Set the SR to use thin provisioning. Otherwise, nova won’t be able to find the SR when it needs to write to disk.
# Look for 'Local EXT3 SR', making note of the associated UUID.
$ xe sr-list
$ xe sr-param-set uuid=<SR uuid> other-config:i18n-key=local-storage

## Set the configured SR as the default.
$ xe pool-list
$ xe pool-param-set uuid=<hit TAB> default-SR=<SR uuid>

安装 OpenStack

在您的工作站上执行以下脚本。 请注意,下面的脚本是此脚本的硬拷贝:CI 测试脚本(已删除自动化测试运行)。 这张图片可能有助于理解安装了哪些组件

#!/bin/bash

set -eu

function print_usage_and_die
{
cat >&2 << EOF
usage: $0 XENSERVER_IP XENSERVER_PASS

A simple script to test a XenServer devstack with Neutron

positional arguments:
XENSERVER_IP The IP address of the XenServer
XENSERVER_PASS The root password for the XenServer

An example run:

$0 10.219.10.25 mypassword
EOF
exit 1
}

XENSERVER_IP="${1-$(print_usage_and_die)}"
XENSERVER_PASS="${2-$(print_usage_and_die)}"

set -eux

ssh -q \
    -o Batchmode=yes \
    -o StrictHostKeyChecking=no \
    -o UserKnownHostsFile=/dev/null \
    "root@$XENSERVER_IP" bash -s -- << END_OF_XENSERVER_COMMANDS
set -exu
rm -rf "devstack-master"
wget -qO - https://github.com/openstack-dev/devstack/archive/master.tar.gz |
tar -xzf -
cd "devstack-master"

cat << LOCALRC_CONTENT_ENDS_HERE > localrc
# Passwords
MYSQL_PASSWORD=citrix
SERVICE_TOKEN=citrix
ADMIN_PASSWORD=citrix
SERVICE_PASSWORD=citrix
RABBIT_PASSWORD=citrix
GUEST_PASSWORD=citrix
XENAPI_PASSWORD="$XENSERVER_PASS"
SWIFT_HASH="66a3d6b56c1f479c8b4e70ab5c2000f5"

# Use xvdb for backing cinder volumes
XEN_XVDB_SIZE_GB=10
VOLUME_BACKING_DEVICE=/dev/xvdb

# Tempest
DEFAULT_INSTANCE_TYPE="m1.tiny"

# Compute settings
EXTRA_OPTS=("xenapi_disable_agent=True")
API_RATE_LIMIT=False
VIRT_DRIVER=xenserver

# Use a XenServer Image
IMAGE_URLS="https://github.com/downloads/citrix-openstack/warehouse/cirros-0.3.0-x86_64-disk.vhd.tgz"
DEFAULT_IMAGE_NAME="cirros-0.3.0-x86_64-disk"

# OpenStack VM settings
OSDOMU_MEM_MB=4096
UBUNTU_INST_RELEASE=precise
UBUNTU_INST_IFACE="eth2"
OSDOMU_VDI_GB=40

# Exercise settings
ACTIVE_TIMEOUT=500
TERMINATE_TIMEOUT=500

# Increase boot timeout for quantum tests:
BOOT_TIMEOUT=500

# DevStack settings
LOGFILE=/tmp/devstack/log/stack.log
SCREEN_LOGDIR=/tmp/devstack/log/
VERBOSE=False

# XenAPI specific
XENAPI_CONNECTION_URL="http://$XENSERVER_IP"
VNCSERVER_PROXYCLIENT_ADDRESS="$XENSERVER_IP"

MULTI_HOST=False

# Skip boot from volume exercise
SKIP_EXERCISES=boot_from_volume,client-env

# Quantum specific
Q_PLUGIN=openvswitch
ENABLED_SERVICES+=,tempest,quantum,q-svc,q-agt,q-dhcp,q-l3,q-meta,q-domua,-n-net

# Disable security groups
Q_USE_SECGROUP=False

# With XenServer single box install, VLANs need to be enabled
ENABLE_TENANT_VLANS="True"
OVS_VLAN_RANGES="physnet1:1000:1024"

# CLEAN_TEMPLATES=true

Q_USE_DEBUG_COMMAND=True

LOCALRC_CONTENT_ENDS_HERE

cd tools/xen
./install_os_domU.sh
END_OF_XENSERVER_COMMANDS


devstack 的首次运行可能需要很长时间(具体取决于可用的互联网连接),因为 devstack 必须创建一个新的 VM (domU) 并安装 ubuntu,然后再安装 OpenStack。 Devstack 在首次安装后将 domU VM 保存为模板,因此后续运行将快得多。 如果在安装过程中出现问题(不幸的是,当 XCP 在 VM 中运行时经常发生),XenCenter 工具(不幸的是仅适用于 Windows)将有助于排除故障。

Devstack 应该在安装完成后提供说明,说明如何登录到 domU 实例,这将等同于常规的 devstack'd 主机。

使用 tempest 验证

使用提供的 localrc 成功运行 devstack 后,可以使用 tempest 来验证 Quantum+OVS+XCP 是否可以正确地为 OpenStack VM 配置网络。 要运行 quantum smoke 测试,请在 domU 中执行以下操作

$ cd /opt/stack/tempest 
$ nosetests tempest/scenario/test_network_basic_ops.py

结果

tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_001_create_keypairs[gate,smoke] ... ok
tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_002_create_security_groups[gate,smoke] ... ok
tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_003_create_networks[gate,smoke] ... ok
tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_004_check_networks[gate,smoke] ... ok
tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_005_create_servers[gate,smoke] ... ok
tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_006_check_tenant_network_connectivity[gate,smoke] ... SKIP: Tenant networks not configured to be reachable.
tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_007_assign_floating_ips[gate,smoke] ... ok
tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_008_check_public_network_connectivity[gate,smoke] ... ok

----------------------------------------------------------------------
Ran 8 tests in 74.313s

OK (SKIP=1)

使用练习验证

要验证设置是否正常工作,您可以运行 quantum-adv-test。 我选择移走所有其他文件,以便只运行 quantum

cd /opt/stack/devstack/
mkdir disabled
mv exercises/* disabled/
mv disabled/quantum-adv-test.sh exercises/
./exercise.sh 2>&1 | tee quantumlog


请注意,我不得不增加 BOOT_TIMEOUT 才能通过这些测试。 目前,它设置为一个极高的值,500(请参见上面的脚本)

结果

tail quantumlog
++ NOVA_VERSION=1.1
++ export COMPUTE_API_VERSION=1.1
++ COMPUTE_API_VERSION=1.1
+ set +o xtrace
*********************************************************************
SUCCESS: End DevStack Exercise: /opt/stack/devstack/exercises/quantum-adv-test.sh
*********************************************************************
=====================================================================
PASS quantum-adv-test
=====================================================================