跳转到: 导航, 搜索

XenServer/NetworkingFlags

XenServer 网络配置

在配置 OpenStackXenServer 的网络之前,你可能会发现阅读 XenServer 网络的相关资料很有用。

请记住这张图

{{https://wiki.openstack.org/XenServer/XenXCPAndXenServer?action=AttachFile&do=get&target=XenServer-dom0-domU.png}}

要点

XenServer 配置

  • 我们假设 XenServer 有三个物理接口:eth0、eth1、eth2
  • 这意味着 Dom0 有以下桥接:xenbr0、xenbr1、xenbr2
  • Dom0 还有主机本地 xenapi 网络,通常 XenServer 的地址是 169.254.0.1

DomU 配置

  • DomU 是一个 PV 虚拟机(具有 para-虚拟化扩展的内核)
  • 它通常有四个接口
    • eth0 -> 连接到 xenapi (xapi 流量)
    • eth1 -> xenbr2 租户网络流量
    • eth2 -> xenbr0 管理流量 (MySQL、RabbitMQ、Glance 等)
    • eth3 -> xenbr1 公网流量 (浮动 IP、API 端点)

你可能需要了解的标志

每个标志都有 DevStack 设置和 nova.conf 条目

公网接口

连接到公网的“DomU”上的接口。Nova-network 使用它,以便将浮动 IP 流量发送到正确的网络。


PUBLIC_INTERFACE=eth3 # DevStack
public_interface=eth3 # nova.conf


VLAN 接口

在使用 VLAN 网络时,你需要设置以下标志

vlan_interface=eth2


这是 XenServer 上将创建桥接的接口,该桥接位于正确的 VLAN 上,然后 VM 将连接到该桥接。因此,如果该标志是 eth2,并且你的客户网络位于 VLAN42 上,则可能会在你的 XenServer 主机上创建一个新的网络桥接(除非已经存在),并使用它。或者一个 ex

(可能存在错误:似乎此标志也用于 DomU 接口,用于将 DHCP 服务器和路由器连接到适当的 VLAN 网络。以前有一个单独的标志用于此,这是 XenServer 所必需的)

扁平接口

仅在你使用 FlatDHCP 时才需要。(TODO - 或 Flat?)

这是 DomU 上你希望租户/VM 网络流量的接口。Nova 将把 DHCP 和 NAT 附加到此接口。

flat_interface=eth2


注意:此接口不应配置,nova 将附加所有必需的桥接。

扁平网络桥接

仅在你使用 Flat 或 FlatDHCP 时才需要。

这是 XenServer 桥接,VM 实例将在此桥接上附加其 VIF。这应该与 DomU 的 Guest 接口连接到的桥接相同。


FLAT_NETWORK_BRIDGE=xenbr2
flat_network_bridge=xenbr2


上述设置也可以使用名称标签代替 XenServer 名称。当你在不同主机上发现 XenServer 为你的网络赋予不同的名称时(例如 xapi1 和 xapi3),这很有用。因此,你可以将其设置为类似的内容


flat_network_bridge=my_vm_network_name_label


注意:此标志仅影响当你使用 nova-manage 添加网络时写入数据库的网络桥接,它不会动态影响将 VIF 附加到你的 VM 时使用的桥接。你可能需要删除现有的网络并创建一个新的网络,以使你设置的新值生效。

网络模式

扁平网络

手册中涵盖了大部分细节

这需要将网络地址注入到 VM 镜像中。这目前容易出错(需要适当的客户代理软件,或将文件注入到 ubuntu 文件系统中)

FlatDHCP 网络

这使用 DHCP 向客户 VM 分配 IP 地址。

手册中涵盖了大部分细节

当启用网络 HA 时,它应该看起来像这样

Flatdhcp.png

请注意

  • VM DHCP 请求:VM->xenbr2->nova-network->xenbr2->VM
  • VM 到 VM 流量:VM->eth2->交换机->eth2->VM
  • 浮动 IP 传入流量:public->eth1->xenbr1->nova-network->xenbr2->vm

VLAN 网络

手册中涵盖了大部分细节

计算网络驱动程序有额外的标志(因此可以在 XenServer 上正确创建 VLAN 网络桥接)


network_driver=nova.virt.xenapi.vif.XenAPIBridgeDriver
or
network_driver=nova.virt.xenapi.vif.XenAPIOpenVswitchDriver


当启用网络 HA 时,它可能看起来像这样(注意:虚线桥接由 nova 自动创建)

Vlan.png

请注意

  • 与 FlatDHCP 非常相似,请尝试先了解它
  • nova-network 节点在 domU 中创建自己的桥接(未在上图中显示)。它使用 DomU 上的 eth1 作为 trunk 端口。它确保正确配置了适当的 DHCP 服务器实例,并且仅侦听适当的 VLAN 网络。

因此,当你创建一个 VM 时,大致会发生以下情况

  • PIF 由 (A) vlan_interface 标志或 (B) networks db 表中的 bridge_interface 列标识,将用于创建 XenServer VLAN 网络
  • 此网络中的 VM 实例的 VIF 将插入此 VLAN 网络
  • “Openstack domU”,即 nova-network 运行的位置,充当多个 VLAN 网络的网关,因此它必须连接到 VLAN 桥接的父桥接。因此,它必须在 DomU 的父桥接接口上

这里有一些额外的指针

网络 HA

这在 XenServer 上与其他超visor 一样:nova-network 必须在每个计算主机上运行,并且必须设置以下标志


multi_host=True


已知它与 FlatDHCP 配合良好,但也应该适用于其他模式(TODO - 获取确认)

示例配置

单网卡无 VLAN

通过 eth0 运行所有内容,并使你的 domU 也只有一个接口。


public_interface=eth0
flat_interface=eth0
flat_network_bridge=xenbr0
# update xenapi connection URL to have IP that is available on eth0


TODO - 添加一个图表来描述此配置

TODO - 添加此 DevStack 配置

单网卡有 VLAN

DevStack 通过在 XenServer 上添加额外的 VLAN 网络来分离公共、管理和租户网络。

TODO - 添加更多这些

示例 DevStack localrc 配置

DevStack 将帮助创建运行 OpenStack 代码的 DomU VM。如果需要,它将帮助你并在你的 XenServer 上创建额外的网络。

默认配置:XenServer 上的单网卡带 VLAN

首先,DevStack readme 建议你的 localrc 文件的默认配置


MYSQL_PASSWORD=my_super_secret
SERVICE_TOKEN=my_super_secret
ADMIN_PASSWORD=my_super_secret
SERVICE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=my_super_secret
# This is the password for your guest (for both stack and root users)
GUEST_PASSWORD=my_super_secret

# IMPORTANT: The following must be set to your dom0 root password!
XENAPI_PASSWORD=my_super_secret

# Do not download the usual images
IMAGE_URLS=""
# Explicitly set multi-host
MULTI_HOST=1
# Give extra time for boot
ACTIVE_TIMEOUT=45
# Interface on which you would like to access services
HOST_IP_IFACE=eth0
# First time Ubuntu network install params
NETINSTALLIP="dhcp"
NAMESERVERS=""
NETMASK=""
GATEWAY=""


这是当前的联网默认值(在 xenrc 文件中定义)。


# This is eth0 on the DomU VM is connected to xenapi local host management network and does DHCP

# public interface running on home router, with static IP
# This is eth3 on the DomU VM
PUB_IP=192.168.1.55
PUB_BR=xenbr0
PUB_DEV=eth0
PUB_VLAN=-1
PUB_NETMASK=255.255.255.0

# VM network on VLAN 100
# This is eth1 on the DomU VM
VM_IP=$10.255.255.255 # A host-only ip that let's the interface come up, otherwise unused
VM_NETMASK=255.255.255.0
VM_BR=""
VM_VLAN=100
VM_DEV=eth0

# Management traffic on VLAN 101
# this is eth2 on the DomU VM
MGT_IP=172.16.100.55
MGT_NETMASK=255.255.255.0
MGT_BR=""
MGT_VLAN=101
MGT_DEV=eth0


这意味着 DevStack 将在不存在的情况下创建两个额外的网络

  • eth0 和 VLAN 100 (vmbr)
  • eth0 和 VLAN 101 (mgmtbr)

使用两块网卡,带 VLAN,使用 PXE

你可以使用 PXE 安装 XenServer。这将倾向于使你的管理网络位于 XenServer 的 eth0 上,并使用 DHCP。然后你可以将公共网络放在 eth1 上,并在 eth1 上运行 VLAN 上的 VM 流量。

为了实现这一点,你可能需要类似以下内容

# MGMT network params
MGT_IP="dhcp" # use dhcp, as the PXE server is on this network
MGT_NETMASK=255.255.255.0
MGT_BR=xenbr0
MGT_VLAN=-1
MGT_DEV=eth0

# Public network
PUB_IP=172.24.4.10 # static ip in same subnet as your floating ip ranage
PUB_NETMASK=255.255.255.0
PUB_BR=xenbr1
PUB_VLAN=-1
PUB_DEV=eth1

# VM network params
VM_IP=10.255.255.255 # A host-only ip that let's the interface come up, otherwise unused
VM_NETMASK=255.255.255.0
VM_BR=""
VM_VLAN=100
VM_DEV=eth1