XenServer/NetworkingFlags
目录
XenServer 网络配置
在配置 OpenStack 与 XenServer 的网络之前,你可能会发现阅读 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 时使用的桥接。你可能需要删除现有的网络并创建一个新的网络,以使你设置的新值生效。
网络模式
扁平网络
手册中涵盖了大部分细节
- https://docs.openstack.org/trunk/openstack-compute/admin/content/configuring-flat-networking.html
这需要将网络地址注入到 VM 镜像中。这目前容易出错(需要适当的客户代理软件,或将文件注入到 ubuntu 文件系统中)
FlatDHCP 网络
这使用 DHCP 向客户 VM 分配 IP 地址。
手册中涵盖了大部分细节
当启用网络 HA 时,它应该看起来像这样
请注意
- VM DHCP 请求:VM->xenbr2->nova-network->xenbr2->VM
- VM 到 VM 流量:VM->eth2->交换机->eth2->VM
- 浮动 IP 传入流量:public->eth1->xenbr1->nova-network->xenbr2->vm
VLAN 网络
手册中涵盖了大部分细节
- https://docs.openstack.org/trunk/openstack-compute/admin/content/configuring-vlan-networking.html
计算网络驱动程序有额外的标志(因此可以在 XenServer 上正确创建 VLAN 网络桥接)
network_driver=nova.virt.xenapi.vif.XenAPIBridgeDriver or network_driver=nova.virt.xenapi.vif.XenAPIOpenVswitchDriver
当启用网络 HA 时,它可能看起来像这样(注意:虚线桥接由 nova 自动创建)
请注意
- 与 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

