跳转到: 导航, 搜索

Neutron/FloodlightPluginSetup

Neutron Floodlight 插件设置

本页描述了如何配置 BigSwitch RestProxy Neutron 插件与开源 Floodlight 控制器。该插件也可以管理商业 BigSwitch 控制器,但此处不讨论。这两个控制器都使用 OpenFlow 协议来管理虚拟机连接到的 Open vSwitch 桥接。它们还可以管理用于在物理计算和网络节点之间互连 br-int 桥接的任何支持 OpenFlow 的物理交换机。

限制

  • RestProxy 插件和 Floodlight 控制器组合不提供路由器或外部网络访问(即,没有网关 SNAT 或浮动 IP)。
  • Floodlight 控制器似乎没有任何形式的数据持久性 - 至少在按照 此处 描述的为 Quantum 配置的模块时。因此,停止和重新启动 Floodlight 会导致它丢失之前从代理 ReST 调用接收到的所有虚拟网络信息。似乎使用 sync_data=True 重新启动 RestProxy 插件应该恢复此信息,但对我来说没有起作用。

在物理交换机上

要使用此插件,您的物理交换机不需要支持 OpenFlow。但是,br-int 桥接需要通过物理接口(例如 eth3)连接到交换机端口,这些端口位于相同的二层广播域中。因此,这些物理交换机端口需要配置为相同交换机 VLAN 中的常规接入端口。(注意:与 OpenvSwitch 插件不同,Floodlight 控制器在任何地方都不使用 802.1Q VLAN 标记进行隔离)。

如果您有支持 OpenFlow 的物理交换机,可以配置它们由 Floodlight 控制器管理。如何执行此操作因供应商和型号而异,但一旦启用了 OpenFlow 固件,只需将它们指向 Floodlight 控制器的 IP 地址和 TCP 端口 6633 即可。

在控制器节点上

运行 Floodlight 控制器

要使用 Floodlight 的 RestProxy 插件,您需要运行一个可以从计算主机访问的 Floodlight 控制器,即通过管理网络进行 TCP/IP 连接(OpenFlow 是一种带外协议)。它将管理您将在每个计算主机上设置的 Open vSwitch 桥接上的流。

您只需要在云设置中运行单个 Floodlight 控制器,尽管该插件支持指定多个控制器,如果您想配置高可用性。但是,该功能可能仅适用于 BigSwitch 控制器。

如果您的操作系统没有 floodlight 包,您可能需要为启动和停止它编写自己的服务脚本。

在这里,我们描述了如何从命令行下载、编译和以调试模式运行它。以调试模式运行不适合生产环境,因为控制器会在您关闭终端时终止,但对于测试来说很好。

安装构建 floodlight 的先决条件(git、JDK、ant)。在 Ubuntu 上,执行

sudo apt-get install git default-jdk ant

从 github 获取 floodlight 源代码并切换到最新的稳定版本

git clone https://github.com/floodlight/floodlight
git checkout fl-last-passed-build

构建 floodlight

cd floodlight; ant

运行 floodlight

java -jar target/floodlight.jar -cf src/main/resources/quantum.properties

默认情况下,floodlight 监听端口 8080 以进行 ReST 连接,监听端口 6633 以进行 OpenFlow 连接。

有关更多信息,请参阅 Floodlight OpenStack 文档Floodlight 安装指南

配置 quantum.conf

编辑 /etc/quantum/quantum.conf 并设置 core_plugin 变量以使用 BigSwitch Floodlight 插件

core_plugin = quantum.plugins.bigswitch.plugin.QuantumRestProxyV2

配置 /etc/quantum/plugins/bigswitch/restproxy.ini

您需要指定 MySQL 数据库的登录信息,以及 Floodlight 控制器的位置。如果您已在云控制器上运行 Floodlight 控制器,请将 localhost:8080 指定为控制器位置

[DATABASE]
sql_connection = mysql://<user>:<password>@localhost/restproxy_quantum?charset=utf8
[RESTPROXY]
servers=localhost:8080

在计算和网络主机上

安装 Open vSwitch 并创建一个名为 br-int 的集成桥接,并配置它以使用 Floodlight 控制器。如果具有 Floodlight 控制器的节点的 IP 地址为 192.168.2.10,则通过执行以下操作配置桥接

sudo ovs-vsctl --no-wait add-br br-int
sudo ip link set dev eth2 up
sudo ovs-vsctl --no-wait br-set-external-id br-int bridge-id br-int
sudo ovs-vsctl --no-wait set-controller br-int tcp:192.168.2.10:6633

添加连接用于互连 br-int 桥接的物理 VLAN 的接口,例如,如果那是 eth2

sudo ovs-vsctl -- --may-exist add-port br-int eth2

注意:当 Quantum 配置为使用 RestProxy 插件时,计算主机上没有运行 quantum-*-agent 服务。

在网络节点上

安装 Neutron DHCP 代理包并配置 /etc/neutron/dhcp_agent.ini,如下所示

[DEFAULT]
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
ovs_use_veth = true
root_helper = sudo /usr/local/bin/neutron-rootwrap /etc/neutron/rootwrap.conf
use_namespaces = True
debug = False
verbose = True
enable_isolated_metadata = True

注意:在使用 OpenFlow 控制的 Open vSwitch 时,需要 ovs_use_veth=true 或 use_namespaces=false。

注意:不要在网络节点上运行 quantum-l3-agent 服务,因为 RestProxy 插件与它不兼容。

配置 DevStack

这是一个双节点配置示例,一个控制器节点运行 Floodlight 控制器,一个计算节点运行 nova-compute。没有网络节点,而是 DHCP 代理在控制器节点上运行。在运行 stack.sh 之前,您必须按照上述描述在两个节点上安装和配置 Open vSwitch,并在控制器上安装和运行 Floodlight。

有一个 Vagrant/Ansible 脚本可以完成大部分繁重的工作 此处

# localrc for the controller node
MULTI_HOST=true
HOST_IP=192.168.2.10

# add n-novnc if you want to run nova-compute on the controller node too
ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-sch,n-cauth,horizon,mysql,rabbit,sysstat,n-cond,n-novnc,n-xvnc
disable_service c-api c-sch c-vol cinder
enable_service n-vol

disable_service n-net
enable_service q-svc
enable_service q-dhcp
enable_service q-meta
enable_service quantum

Q_PLUGIN=bigswitch_floodlight
BS_FL_CONTROLLERS_PORT=127.0.0.1:8080
Q_OVS_USE_VETH=true

DATABASE_PASSWORD=password
RABBIT_PASSWORD=password
SERVICE_TOKEN=password
SERVICE_PASSWORD=password
ADMIN_PASSWORD=password


# localrc for the compute node
HOST_IP=192.168.2.11
SERVICE_HOST=192.168.2.10

ENABLED_SERVICES=n-cpu,n-novnc,neutron

# the following 2 lines are probably not necessary as we configure ovs manually beforehand
Q_PLUGIN=bigswitch_floodlight
Q_HOST=$SERVICE_HOST

MYSQL_HOST=$SERVICE_HOST
RABBIT_HOST=$SERVICE_HOST
DATABASE_PASSWORD=password
RABBIT_PASSWORD=password
SERVICE_TOKEN=password
SERVICE_PASSWORD=password
ADMIN_PASSWORD=password

VNCSERVER_LISTEN=$HOST_IP
VNCSERVER_PROXYCLIENT_ADDRESS=$HOST_IP


Floodlight-devstack-wiki.jpg