Merge "[DOCS] Update OVN Scenario"
This commit is contained in:
commit
e34b27e5ae
|
@ -12,13 +12,19 @@ using OVN with Open vSwitch, which replaces the agent-based model used by
|
||||||
the aforementioned architectures. This document outlines how to set it up in
|
the aforementioned architectures. This document outlines how to set it up in
|
||||||
your environment.
|
your environment.
|
||||||
|
|
||||||
The current implementation of OVN in OpenStack-Ansible should not be considered
|
.. warning::
|
||||||
production-ready and makes the following architectural assumptions:
|
|
||||||
|
The current implementation of OVN in OpenStack-Ansible is experimental
|
||||||
|
and not production ready.
|
||||||
|
|
||||||
|
The following architectural assumptions have been made:
|
||||||
|
|
||||||
* Each compute node will act as an OVN controller
|
* Each compute node will act as an OVN controller
|
||||||
* Each compute node is eligible to serve as an OVN gateway node
|
* Each compute node is eligible to serve as an OVN gateway node
|
||||||
|
|
||||||
NOTE: Physical VTEP integration is not yet supported.
|
.. note::
|
||||||
|
|
||||||
|
Physical VTEP integration is not supported.
|
||||||
|
|
||||||
Recommended reading
|
Recommended reading
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
@ -28,16 +34,13 @@ reading that scenario to get some background. It is also recommended to be
|
||||||
familiar with OVN and networking-ovn projects and their configuration.
|
familiar with OVN and networking-ovn projects and their configuration.
|
||||||
|
|
||||||
* `Scenario: Open vSwitch <app-openvswitch.html>`_
|
* `Scenario: Open vSwitch <app-openvswitch.html>`_
|
||||||
* `OVN Architecture <http://www.openvswitch.org//support/dist-docs/ovn-architecture.7.html>`_
|
* `OVN Architecture <http://www.openvswitch.org/support/dist-docs/ovn-architecture.7.html>`_
|
||||||
* `Networking-ovn <https://github.com/openstack/networking-ovn>`_
|
* `Networking-ovn <https://github.com/openstack/networking-ovn>`_
|
||||||
|
|
||||||
Prerequisites
|
Prerequisites
|
||||||
~~~~~~~~~~~~~
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
* Open vSwitch >= 2.9.0
|
* Open vSwitch >= 2.10.0
|
||||||
|
|
||||||
* Networking-ovn at time of writing requires neutron-lib>=1.17.0. The
|
|
||||||
overrides described here will ensure that version is installed.
|
|
||||||
|
|
||||||
* A successful deployment of OVN requires a dedicated network
|
* A successful deployment of OVN requires a dedicated network
|
||||||
interface be attached to the OVS provider bridge. This is not
|
interface be attached to the OVS provider bridge. This is not
|
||||||
|
@ -57,6 +60,98 @@ Create a group var file for your network hosts
|
||||||
- name: "openvswitch"
|
- name: "openvswitch"
|
||||||
pattern: "CONFIG_OPENVSWITCH"
|
pattern: "CONFIG_OPENVSWITCH"
|
||||||
|
|
||||||
|
Copy the neutron environment overrides to
|
||||||
|
/etc/openstack_deploy/env.d/neutron.yml to disable the creation of the
|
||||||
|
neutron agents container and implement the neutron_ovn_northd_container
|
||||||
|
hosts group containing all network nodes:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
component_skel:
|
||||||
|
neutron_ovn_controller:
|
||||||
|
belongs_to:
|
||||||
|
- neutron_all
|
||||||
|
neutron_ovn_northd:
|
||||||
|
belongs_to:
|
||||||
|
- neutron_all
|
||||||
|
|
||||||
|
container_skel:
|
||||||
|
neutron_agents_container:
|
||||||
|
contains: {}
|
||||||
|
neutron_ovn_northd_container:
|
||||||
|
belongs_to:
|
||||||
|
- network_containers
|
||||||
|
contains:
|
||||||
|
- neutron_ovn_northd
|
||||||
|
|
||||||
|
Copy the nova environment overrides to
|
||||||
|
/etc/openstack_deploy/env.d/nova.yml to implement the
|
||||||
|
neutron_ovn_controller hosts group containing all compute nodes:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
nova_compute_container:
|
||||||
|
belongs_to:
|
||||||
|
- compute_containers
|
||||||
|
- kvm-compute_containers
|
||||||
|
- lxd-compute_containers
|
||||||
|
- qemu-compute_containers
|
||||||
|
- powervm-compute_containers
|
||||||
|
contains:
|
||||||
|
- neutron_ovn_controller
|
||||||
|
- nova_compute
|
||||||
|
properties:
|
||||||
|
is_metal: true
|
||||||
|
|
||||||
|
Specify provider network definitions in your
|
||||||
|
``/etc/openstack_deploy/openstack_user_config.yml`` that define
|
||||||
|
one or more Neutron provider bridges and related configuration:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Bridges specified here will be created automatically. Only VLAN
|
||||||
|
network types are supported at this time.
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-privatenet"
|
||||||
|
container_type: "veth"
|
||||||
|
type: "vlan"
|
||||||
|
range: "101:200,301:400"
|
||||||
|
net_name: "private"
|
||||||
|
group_binds:
|
||||||
|
- neutron_ovn_controller
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-publicnet"
|
||||||
|
container_type: "veth"
|
||||||
|
type: "vlan"
|
||||||
|
range: "203:203,467:500"
|
||||||
|
net_name: "public"
|
||||||
|
group_binds:
|
||||||
|
- neutron_ovn_controller
|
||||||
|
|
||||||
|
Specify an overlay network definition in your
|
||||||
|
``/etc/openstack_deploy/openstack_user_config.yml`` that defines
|
||||||
|
overlay network-related configuration:
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The bridge name should correspond to a pre-created Linux bridge.
|
||||||
|
Only GENEVE overlay network types are supported at this time.
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-vxlan"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth10"
|
||||||
|
ip_from_q: "tunnel"
|
||||||
|
type: "geneve"
|
||||||
|
range: "1:1000"
|
||||||
|
net_name: "geneve"
|
||||||
|
group_binds:
|
||||||
|
- neutron_ovn_controller
|
||||||
|
|
||||||
Set the following user variables in your
|
Set the following user variables in your
|
||||||
``/etc/openstack_deploy/user_variables.yml``:
|
``/etc/openstack_deploy/user_variables.yml``:
|
||||||
|
@ -70,37 +165,6 @@ Set the following user variables in your
|
||||||
|
|
||||||
neutron_ml2_drivers_type: "vlan,local,geneve"
|
neutron_ml2_drivers_type: "vlan,local,geneve"
|
||||||
|
|
||||||
# Typically this would be defined by the os-neutron-install
|
|
||||||
# playbook. The provider_networks library would parse the
|
|
||||||
# provider_networks list in openstack_user_config.yml and
|
|
||||||
# generate the values of network_types, network_vlan_ranges
|
|
||||||
# and network_mappings. network_mappings would have a
|
|
||||||
# different value for each host in the inventory based on
|
|
||||||
# whether or not the host was metal (typically a compute host)
|
|
||||||
# or a container (typically a neutron agent container)
|
|
||||||
#
|
|
||||||
# When using OVN w/ Open vSwitch, we override it to take into account
|
|
||||||
# the Open vSwitch bridge we are going to define outside of
|
|
||||||
# OpenStack-Ansible plays. All segmentation id ranges can be tweaked
|
|
||||||
# to suit the environment. VXLAN networks are not directly supported.
|
|
||||||
|
|
||||||
# When configuring Neutron to support only geneve tenant networks and
|
|
||||||
# vlan provider networks the configuration may resemble the following:
|
|
||||||
neutron_provider_networks:
|
|
||||||
network_types: "geneve"
|
|
||||||
network_geneve_ranges: "1:1000"
|
|
||||||
network_vlan_ranges: "vlan"
|
|
||||||
network_mappings: "vlan:br-provider"
|
|
||||||
|
|
||||||
# When configuring Neutron to support only vlan tenant networks and
|
|
||||||
# vlan provider networks the configuration may resemble the following:
|
|
||||||
neutron_provider_networks:
|
|
||||||
network_types: "vlan"
|
|
||||||
network_vlan_ranges: "vlan:102:199"
|
|
||||||
network_mappings: "vlan:br-provider"
|
|
||||||
|
|
||||||
repo_build_upper_constraints_overrides: [neutron-lib>=1.17.0]
|
|
||||||
|
|
||||||
The overrides are instructing Ansible to deploy the OVN mechanism driver and
|
The overrides are instructing Ansible to deploy the OVN mechanism driver and
|
||||||
associated OVN components. This is done by setting ``neutron_plugin_type``
|
associated OVN components. This is done by setting ``neutron_plugin_type``
|
||||||
to ``ml2.ovn``.
|
to ``ml2.ovn``.
|
||||||
|
@ -111,6 +175,38 @@ routing functions rather than the standard L3 agent model.
|
||||||
The ``neutron_ml2_drivers_type`` override provides support for all type
|
The ``neutron_ml2_drivers_type`` override provides support for all type
|
||||||
drivers supported by OVN.
|
drivers supported by OVN.
|
||||||
|
|
||||||
|
If provider network overrides are needed on a global or per-host basis,
|
||||||
|
the following format can be used in ``user_variables.yml`` or per-host
|
||||||
|
in ``openstack_user_config.yml``.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
These overrides are not normally required.
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
# When configuring Neutron to support only geneve tenant networks and
|
||||||
|
# vlan provider networks the configuration may resemble the following:
|
||||||
|
neutron_provider_networks:
|
||||||
|
network_types: "geneve"
|
||||||
|
network_geneve_ranges: "1:1000"
|
||||||
|
network_vlan_ranges: "public"
|
||||||
|
network_mappings: "public:br-publicnet"
|
||||||
|
|
||||||
|
# When configuring Neutron to support only vlan tenant networks and
|
||||||
|
# vlan provider networks the configuration may resemble the following:
|
||||||
|
neutron_provider_networks:
|
||||||
|
network_types: "vlan"
|
||||||
|
network_vlan_ranges: "public:203:203,467:500"
|
||||||
|
network_mappings: "public:br-publicnet"
|
||||||
|
|
||||||
|
# When configuring Neutron to support multiple vlan provider networks
|
||||||
|
# the configuration may resemble the following:
|
||||||
|
neutron_provider_networks:
|
||||||
|
network_types: "vlan"
|
||||||
|
network_vlan_ranges: "public:203:203,467:500,private:101:200,301:400"
|
||||||
|
network_mappings: "public:br-publicnet,private:br-privatenet"
|
||||||
|
|
||||||
Open Virtual Network (OVN) commands
|
Open Virtual Network (OVN) commands
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
@ -227,10 +323,3 @@ The HAproxy client and server timeout values have been increased from
|
||||||
The HAproxy implementation in use may not properly handle active/backup
|
The HAproxy implementation in use may not properly handle active/backup
|
||||||
failover for ovsdb-server with OVN. Work may be done to implement
|
failover for ovsdb-server with OVN. Work may be done to implement
|
||||||
pacemaker/corosync or wait for active/active support.
|
pacemaker/corosync or wait for active/active support.
|
||||||
|
|
||||||
Warranty
|
|
||||||
~~~~~~~~
|
|
||||||
|
|
||||||
This implementation of OVN is not supported and should be considered
|
|
||||||
only for development purposes. The architecture within OSA is subject
|
|
||||||
to change. Reviews and suggestions are welcome.
|
|
||||||
|
|
Loading…
Reference in New Issue