Merge "[docs] Apply provider network config on per-group basis"
@ -104,3 +104,18 @@ The following diagram shows how virtual machines connect to the ``br-vlan`` and
|
|||||||
``br-vxlan`` bridges and send traffic to the network outside the host:
|
``br-vxlan`` bridges and send traffic to the network outside the host:
|
||||||
|
|
||||||
.. image:: ../figures/networking-compute.png
|
.. image:: ../figures/networking-compute.png
|
||||||
|
|
||||||
|
When Neutron agents are deployed "on metal" on a network node or collapsed
|
||||||
|
infra/network node, the ``Neutron Agents`` container and respective virtual
|
||||||
|
interfaces are no longer implemented. In addition, use of the
|
||||||
|
``host_bind_override`` override when defining provider networks allows
|
||||||
|
Neutron to interface directly with a physical interface or bond instead of the
|
||||||
|
``br-vlan`` bridge. The following diagram reflects the differences in the
|
||||||
|
virtual network layout.
|
||||||
|
|
||||||
|
.. image:: ../figures/networking-neutronagents-nobridge.png
|
||||||
|
|
||||||
|
The absence of ``br-vlan`` in-path of instance traffic is also reflected on
|
||||||
|
compute nodes, as shown in the following diagram.
|
||||||
|
|
||||||
|
.. image:: ../figures/networking-compute-nobridge.png
|
||||||
|
BIN
doc/source/reference/figures/networking-compute-nobridge.png
Normal file
After Width: | Height: | Size: 182 KiB |
After Width: | Height: | Size: 216 KiB |
BIN
doc/source/user/figures/arch-layout-provnet-groups-custom.png
Normal file
After Width: | Height: | Size: 310 KiB |
BIN
doc/source/user/figures/arch-layout-provnet-groups.png
Normal file
After Width: | Height: | Size: 247 KiB |
BIN
doc/source/user/figures/network-arch-multiple-bonds.png
Normal file
After Width: | Height: | Size: 361 KiB |
BIN
doc/source/user/figures/network-arch-multiple-interfaces.png
Normal file
After Width: | Height: | Size: 271 KiB |
BIN
doc/source/user/figures/network-arch-single-bond.png
Normal file
After Width: | Height: | Size: 324 KiB |
BIN
doc/source/user/figures/network-arch-single-interface.png
Normal file
After Width: | Height: | Size: 266 KiB |
@ -23,8 +23,10 @@ For in-depth technical information, see the
|
|||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
aio/quickstart.rst
|
aio/quickstart.rst
|
||||||
|
network-arch/example.rst
|
||||||
test/example.rst
|
test/example.rst
|
||||||
prod/example.rst
|
prod/example.rst
|
||||||
|
prod/provnet_groups.rst
|
||||||
limited-connectivity/index.rst
|
limited-connectivity/index.rst
|
||||||
l3pods/example.rst
|
l3pods/example.rst
|
||||||
ceph/full-deploy.rst
|
ceph/full-deploy.rst
|
||||||
|
137
doc/source/user/network-arch/example.rst
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
.. _production-network-archs:
|
||||||
|
|
||||||
|
=====================
|
||||||
|
Network architectures
|
||||||
|
=====================
|
||||||
|
|
||||||
|
OpenStack-Ansible supports a number of different network architectures,
|
||||||
|
and can be deployed using a single network interface for non-production
|
||||||
|
workloads or using multiple network interfaces or bonded interfaces for
|
||||||
|
production workloads.
|
||||||
|
|
||||||
|
The OpenStack-Ansible reference architecture segments traffic using VLANs
|
||||||
|
across multiple network interfaces or bonds. Common networks used in an
|
||||||
|
OpenStack-Ansible deployment can be observed in the following table:
|
||||||
|
|
||||||
|
+-----------------------+-----------------+------+
|
||||||
|
| Network | CIDR | VLAN |
|
||||||
|
+=======================+=================+======+
|
||||||
|
| Management Network | 172.29.236.0/22 | 10 |
|
||||||
|
+-----------------------+-----------------+------+
|
||||||
|
| Overlay Network | 172.29.240.0/22 | 30 |
|
||||||
|
+-----------------------+-----------------+------+
|
||||||
|
| Storage Network | 172.29.244.0/22 | 20 |
|
||||||
|
+-----------------------+-----------------+------+
|
||||||
|
|
||||||
|
The ``Management Network``, also referred to as the ``container network``,
|
||||||
|
provides management of and communication between the infrastructure
|
||||||
|
and OpenStack services running in containers or on metal. The
|
||||||
|
``management network`` uses a dedicated VLAN typically connected to the
|
||||||
|
``br-mgmt`` bridge, and may also be used as the primary interface used
|
||||||
|
to interact with the server via SSH.
|
||||||
|
|
||||||
|
The ``Overlay Network``, also referred to as the ``tunnel network``,
|
||||||
|
provides connectivity between hosts for the purpose of tunnelling
|
||||||
|
encapsulated traffic using VXLAN, GENEVE, or other protocols. The
|
||||||
|
``overlay network`` uses a dedicated VLAN typically connected to the
|
||||||
|
``br-vxlan`` bridge.
|
||||||
|
|
||||||
|
The ``Storage Network`` provides segregated access to Block Storage from
|
||||||
|
OpenStack services such as Cinder and Glance. The ``storage network`` uses
|
||||||
|
a dedicated VLAN typically connected to the ``br-storage`` bridge.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The CIDRs and VLANs listed for each network are examples and may
|
||||||
|
be different in your environment.
|
||||||
|
|
||||||
|
Additional VLANs may be required for the following purposes:
|
||||||
|
|
||||||
|
* External provider networks for Floating IPs and instances
|
||||||
|
* Self-service project/tenant networks for instances
|
||||||
|
* Other OpenStack services
|
||||||
|
|
||||||
|
Network interfaces
|
||||||
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Single interface or bond
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
OpenStack-Ansible supports the use of a single interface or set of bonded
|
||||||
|
interfaces that carry traffic for OpenStack services as well as instances.
|
||||||
|
|
||||||
|
The following diagram demonstrates hosts using a single interface:
|
||||||
|
|
||||||
|
.. image:: ../figures/network-arch-single-interface.png
|
||||||
|
:width: 100%
|
||||||
|
:alt: Network Interface Layout - Single Interface
|
||||||
|
|
||||||
|
The following diagram demonstrates hosts using a single bond:
|
||||||
|
|
||||||
|
.. image:: ../figures/network-arch-single-bond.png
|
||||||
|
:width: 100%
|
||||||
|
:alt: Network Interface Layout - Single Bond
|
||||||
|
|
||||||
|
Each host will require the correct network bridges to be implemented.
|
||||||
|
The following is the ``/etc/network/interfaces`` file for ``infra1``
|
||||||
|
using a single bond.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
If your environment does not have ``eth0``, but instead has ``p1p1`` or some
|
||||||
|
other interface name, ensure that all references to ``eth0`` in all
|
||||||
|
configuration files are replaced with the appropriate name. The same applies
|
||||||
|
to additional network interfaces.
|
||||||
|
|
||||||
|
.. literalinclude:: ../../../../etc/network/interfaces.d/openstack_interface.cfg.singlebond.example
|
||||||
|
|
||||||
|
Multiple interfaces or bonds
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
OpenStack-Ansible supports the use of a multiple interfaces or sets of bonded
|
||||||
|
interfaces that carry traffic for OpenStack services and instances.
|
||||||
|
|
||||||
|
The following diagram demonstrates hosts using multiple interfaces:
|
||||||
|
|
||||||
|
.. image:: ../figures/network-arch-multiple-interfaces.png
|
||||||
|
:width: 100%
|
||||||
|
:alt: Network Interface Layout - Multiple Interfaces
|
||||||
|
|
||||||
|
The following diagram demonstrates hosts using multiple bonds:
|
||||||
|
|
||||||
|
.. image:: ../figures/network-arch-multiple-bonds.png
|
||||||
|
:width: 100%
|
||||||
|
:alt: Network Interface Layout - Multiple Bonds
|
||||||
|
|
||||||
|
Each host will require the correct network bridges to be implemented. The
|
||||||
|
following is the ``/etc/network/interfaces`` file for ``infra1`` using
|
||||||
|
multiple bonded interfaces.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
If your environment does not have ``eth0``, but instead has ``p1p1`` or
|
||||||
|
some other interface name, ensure that all references to ``eth0`` in all
|
||||||
|
configuration files are replaced with the appropriate name. The same
|
||||||
|
applies to additional network interfaces.
|
||||||
|
|
||||||
|
.. literalinclude:: ../../../../etc/network/interfaces.d/openstack_interface.cfg.multibond.example
|
||||||
|
|
||||||
|
Additional resources
|
||||||
|
~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
For more information on how to properly configure network interface files
|
||||||
|
and OpenStack-Ansible configuration files for different deployment scenarios,
|
||||||
|
please refer to the following:
|
||||||
|
|
||||||
|
* :dev_docs:`Configuring a test environment
|
||||||
|
<user/test/example.html>`
|
||||||
|
* :dev_docs:`Configuring a homogeneous production environment
|
||||||
|
<user/prod/example.html>`
|
||||||
|
* :dev_docs:`Using provider network groups for a heterogeneous environment
|
||||||
|
<user/prod/provnet_groups.html>`
|
||||||
|
|
||||||
|
For network agent and container networking toplogies, please refer to the
|
||||||
|
following:
|
||||||
|
|
||||||
|
* :dev_docs:`Container networking architecture
|
||||||
|
<reference/architecture/container-networking.html>`
|
167
doc/source/user/prod/provnet_groups.rst
Normal file
@ -0,0 +1,167 @@
|
|||||||
|
.. _provider-network-groups-config:
|
||||||
|
|
||||||
|
=======================
|
||||||
|
Provider network groups
|
||||||
|
=======================
|
||||||
|
|
||||||
|
Many network configuration examples assume a homogenous environment,
|
||||||
|
where each server is configured identically and consistent network
|
||||||
|
interfaces and interface names can be assumed across all hosts.
|
||||||
|
|
||||||
|
Recent changes to OSA enables deployers to define provider networks
|
||||||
|
that apply to particular inventory groups and allows for a heterogeneous
|
||||||
|
network configuration within a cloud environment. New groups can be created
|
||||||
|
or existing inventory groups, such as ``network_hosts`` or
|
||||||
|
``compute_hosts``, can be used to ensure certain configurations are applied
|
||||||
|
only to hosts that meet the given parameters.
|
||||||
|
|
||||||
|
Before reading this document, please review the following scenario:
|
||||||
|
|
||||||
|
* :dev_docs:`Production environment <user/prod/example.html>`
|
||||||
|
|
||||||
|
This example environment has the following characteristics:
|
||||||
|
|
||||||
|
* A ``network_hosts`` group consisting of three collapsed
|
||||||
|
infrastructure/network (control plane) hosts
|
||||||
|
* A ``compute_hosts`` group consisting of two compute hosts
|
||||||
|
* Multiple Network Interface Cards (NIC) used as provider network interfaces
|
||||||
|
that vary between hosts
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The groups ``network_hosts`` and ``compute_hosts`` are pre-defined groups
|
||||||
|
in an OpenStack-Ansible deployment.
|
||||||
|
|
||||||
|
The following diagram demonstates servers with different network interface
|
||||||
|
names:
|
||||||
|
|
||||||
|
.. image:: ../figures/arch-layout-provnet-groups.png
|
||||||
|
:width: 100%
|
||||||
|
:alt: Production environment host layout
|
||||||
|
|
||||||
|
In this example environment, infrastructure/network nodes hosting L2/L3/DHCP
|
||||||
|
agents will utilize an interface named ``ens1f0`` for the provider network
|
||||||
|
``physnet1``. Compute nodes, on the other hand, will utilize an interface
|
||||||
|
named ``ens2f0`` for the same ``physnet1`` provider network.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Differences in network interface names may be the result of a difference in
|
||||||
|
drivers and/or PCI slot locations.
|
||||||
|
|
||||||
|
Deployment configuration
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Environment layout
|
||||||
|
------------------
|
||||||
|
|
||||||
|
The ``/etc/openstack_deploy/openstack_user_config.yml`` file defines the
|
||||||
|
environment layout.
|
||||||
|
|
||||||
|
The following configuration describes the layout for this environment.
|
||||||
|
|
||||||
|
.. literalinclude:: ../../../../etc/openstack_deploy/openstack_user_config.yml.provnet-group.example
|
||||||
|
|
||||||
|
Hosts in the ``network_hosts`` group will map ``physnet1`` to the ``ens1f0``
|
||||||
|
interface, while hosts in the ``compute_hosts`` group will map ``physnet1``
|
||||||
|
to the ``ens2f0`` interface. Additional provider mappings can be established
|
||||||
|
using the same format in a separate definition.
|
||||||
|
|
||||||
|
An additional provider interface definition named ``physnet2`` using different
|
||||||
|
interfaces between hosts may resemble the following:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-vlan2"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth13"
|
||||||
|
host_bind_override: "ens1f1"
|
||||||
|
type: "vlan"
|
||||||
|
range: "2000:2999"
|
||||||
|
net_name: "physnet2"
|
||||||
|
group_binds:
|
||||||
|
- network_hosts
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-vlan2"
|
||||||
|
container_type: "veth"
|
||||||
|
host_bind_override: "ens2f1"
|
||||||
|
type: "vlan"
|
||||||
|
range: "2000:2999"
|
||||||
|
net_name: "physnet2"
|
||||||
|
group_binds:
|
||||||
|
- compute_hosts
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The ``container_interface`` parameter is only necessary when Neutron
|
||||||
|
agents are run in containers, and can be excluded in many cases. The
|
||||||
|
``container_bridge`` and ``container_type`` parameters also relate to
|
||||||
|
infrastructure containers, but should remain defined for legacy purposes.
|
||||||
|
|
||||||
|
Custom Groups
|
||||||
|
-------------
|
||||||
|
|
||||||
|
Custom inventory groups can be created to assist in segmenting hosts beyond
|
||||||
|
the built-in groups provided by OpenStack-Ansible.
|
||||||
|
|
||||||
|
Before creating custom groups, please review the following:
|
||||||
|
|
||||||
|
* :dev_docs:`OpenStack-Ansible Inventory
|
||||||
|
<contributor/inventory.html>`
|
||||||
|
|
||||||
|
* :dev_docs:`Configuring the inventory
|
||||||
|
<reference/inventory/configure-inventory.html>`
|
||||||
|
|
||||||
|
The following diagram demonstates how a custom group can be used to further
|
||||||
|
segment hosts:
|
||||||
|
|
||||||
|
.. image:: ../figures/arch-layout-provnet-groups-custom.png
|
||||||
|
:width: 100%
|
||||||
|
:alt: Production environment host layout
|
||||||
|
|
||||||
|
When creating a custom group, first create a skeleton in
|
||||||
|
``/etc/openstack_deploy/env.d/``. The following is an example of an inventory
|
||||||
|
skeleton for a group named ``custom2_hosts`` that will consist of bare metal
|
||||||
|
hosts, and has been created at
|
||||||
|
``/etc/openstack_deploy/env.d/custom2_hosts.yml``.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
---
|
||||||
|
physical_skel:
|
||||||
|
custom2_containers:
|
||||||
|
belongs_to:
|
||||||
|
- all_containers
|
||||||
|
custom2_hosts:
|
||||||
|
belongs_to:
|
||||||
|
- hosts
|
||||||
|
|
||||||
|
Define the group and its members in a corresponding file in
|
||||||
|
``/etc/openstack_deploy/conf.d/``. The following is an example of a group
|
||||||
|
named ``custom2_hosts`` defined in
|
||||||
|
``/etc/openstack_deploy/env.d/custom2_hosts.yml`` consisting of a single
|
||||||
|
member, ``compute2``:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
---
|
||||||
|
# custom example
|
||||||
|
custom2_hosts:
|
||||||
|
compute2:
|
||||||
|
ip: 172.29.236.17
|
||||||
|
|
||||||
|
The custom group can then be specifed when creating a provider network, as
|
||||||
|
shown here:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-vlan"
|
||||||
|
container_type: "veth"
|
||||||
|
host_bind_override: "ens8f1"
|
||||||
|
type: "vlan"
|
||||||
|
range: "101:200,301:400"
|
||||||
|
net_name: "physnet1"
|
||||||
|
group_binds:
|
||||||
|
- custom2_hosts
|
@ -0,0 +1,137 @@
|
|||||||
|
# This is a multi-NIC bonded configuration to implement the required bridges
|
||||||
|
# for OpenStack-Ansible. This illustrates the configuration of the first
|
||||||
|
# Infrastructure host and the IP addresses assigned should be adapted
|
||||||
|
# for implementation on the other hosts.
|
||||||
|
#
|
||||||
|
# After implementing this configuration, the host will need to be
|
||||||
|
# rebooted.
|
||||||
|
|
||||||
|
# Assuming that eth0/1 and eth2/3 are dual port NIC's we pair
|
||||||
|
# eth0 with eth2 and eth1 with eth3 for increased resiliency
|
||||||
|
# in the case of one interface card failing.
|
||||||
|
auto eth0
|
||||||
|
iface eth0 inet manual
|
||||||
|
bond-master bond0
|
||||||
|
bond-primary eth0
|
||||||
|
|
||||||
|
auto eth1
|
||||||
|
iface eth1 inet manual
|
||||||
|
bond-master bond1
|
||||||
|
bond-primary eth1
|
||||||
|
|
||||||
|
auto eth2
|
||||||
|
iface eth2 inet manual
|
||||||
|
bond-master bond0
|
||||||
|
|
||||||
|
auto eth3
|
||||||
|
iface eth3 inet manual
|
||||||
|
bond-master bond1
|
||||||
|
|
||||||
|
# Create a bonded interface. Note that the "bond-slaves" is set to none. This
|
||||||
|
# is because the bond-master has already been set in the raw interfaces for
|
||||||
|
# the new bond0.
|
||||||
|
auto bond0
|
||||||
|
iface bond0 inet manual
|
||||||
|
bond-slaves none
|
||||||
|
bond-mode active-backup
|
||||||
|
bond-miimon 100
|
||||||
|
bond-downdelay 200
|
||||||
|
bond-updelay 200
|
||||||
|
|
||||||
|
# This bond will carry VLAN and VXLAN traffic to ensure isolation from
|
||||||
|
# control plane traffic on bond0.
|
||||||
|
auto bond1
|
||||||
|
iface bond1 inet manual
|
||||||
|
bond-slaves none
|
||||||
|
bond-mode active-backup
|
||||||
|
bond-miimon 100
|
||||||
|
bond-downdelay 250
|
||||||
|
bond-updelay 250
|
||||||
|
|
||||||
|
# Container/Host management VLAN interface
|
||||||
|
auto bond0.10
|
||||||
|
iface bond0.10 inet manual
|
||||||
|
vlan-raw-device bond0
|
||||||
|
|
||||||
|
# OpenStack Networking VXLAN (tunnel/overlay) VLAN interface
|
||||||
|
auto bond1.30
|
||||||
|
iface bond1.30 inet manual
|
||||||
|
vlan-raw-device bond1
|
||||||
|
|
||||||
|
# Storage network VLAN interface (optional)
|
||||||
|
auto bond0.20
|
||||||
|
iface bond0.20 inet manual
|
||||||
|
vlan-raw-device bond0
|
||||||
|
|
||||||
|
# Container/Host management bridge
|
||||||
|
auto br-mgmt
|
||||||
|
iface br-mgmt inet static
|
||||||
|
bridge_stp off
|
||||||
|
bridge_waitport 0
|
||||||
|
bridge_fd 0
|
||||||
|
bridge_ports bond0.10
|
||||||
|
address 172.29.236.11
|
||||||
|
netmask 255.255.252.0
|
||||||
|
gateway 172.29.236.1
|
||||||
|
dns-nameservers 8.8.8.8 8.8.4.4
|
||||||
|
|
||||||
|
# OpenStack Networking VXLAN (tunnel/overlay) bridge
|
||||||
|
#
|
||||||
|
# Nodes hosting Neutron agents must have an IP address on this interface,
|
||||||
|
# including COMPUTE, NETWORK, and collapsed INFRA/NETWORK nodes.
|
||||||
|
#
|
||||||
|
|
||||||
|
auto br-vxlan
|
||||||
|
iface br-vxlan inet static
|
||||||
|
bridge_stp off
|
||||||
|
bridge_waitport 0
|
||||||
|
bridge_fd 0
|
||||||
|
bridge_ports bond1.30
|
||||||
|
address 172.29.240.16
|
||||||
|
netmask 255.255.252.0
|
||||||
|
|
||||||
|
# OpenStack Networking VLAN bridge
|
||||||
|
#
|
||||||
|
# The "br-vlan" bridge is no longer necessary for deployments unless Neutron
|
||||||
|
# agents are deployed in a container. Instead, a direct interface such as
|
||||||
|
# bond1 can be specified via the "host_bind_override" override when defining
|
||||||
|
# provider networks.
|
||||||
|
#
|
||||||
|
#auto br-vlan
|
||||||
|
#iface br-vlan inet manual
|
||||||
|
# bridge_stp off
|
||||||
|
# bridge_waitport 0
|
||||||
|
# bridge_fd 0
|
||||||
|
# bridge_ports bond1
|
||||||
|
|
||||||
|
# compute1 Network VLAN bridge
|
||||||
|
#auto br-vlan
|
||||||
|
#iface br-vlan inet manual
|
||||||
|
# bridge_stp off
|
||||||
|
# bridge_waitport 0
|
||||||
|
# bridge_fd 0
|
||||||
|
#
|
||||||
|
|
||||||
|
# Storage bridge (optional)
|
||||||
|
#
|
||||||
|
# Only the COMPUTE and STORAGE nodes must have an IP address
|
||||||
|
# on this bridge. When used by infrastructure nodes, the
|
||||||
|
# IP addresses are assigned to containers which use this
|
||||||
|
# bridge.
|
||||||
|
#
|
||||||
|
auto br-storage
|
||||||
|
iface br-storage inet manual
|
||||||
|
bridge_stp off
|
||||||
|
bridge_waitport 0
|
||||||
|
bridge_fd 0
|
||||||
|
bridge_ports bond0.20
|
||||||
|
|
||||||
|
# compute1 Storage bridge
|
||||||
|
#auto br-storage
|
||||||
|
#iface br-storage inet static
|
||||||
|
# bridge_stp off
|
||||||
|
# bridge_waitport 0
|
||||||
|
# bridge_fd 0
|
||||||
|
# bridge_ports bond0.20
|
||||||
|
# address 172.29.244.16
|
||||||
|
# netmask 255.255.252.0
|
@ -0,0 +1,124 @@
|
|||||||
|
# This is a multi-NIC bonded configuration to implement the required bridges
|
||||||
|
# for OpenStack-Ansible. This illustrates the configuration of the first
|
||||||
|
# Infrastructure host and the IP addresses assigned should be adapted
|
||||||
|
# for implementation on the other hosts.
|
||||||
|
#
|
||||||
|
# After implementing this configuration, the host will need to be
|
||||||
|
# rebooted.
|
||||||
|
|
||||||
|
# Assuming that eth0/1 and eth2/3 are dual port NIC's we pair
|
||||||
|
# eth0 with eth2 for increased resiliency in the case of one interface card
|
||||||
|
# failing.
|
||||||
|
auto eth0
|
||||||
|
iface eth0 inet manual
|
||||||
|
bond-master bond0
|
||||||
|
bond-primary eth0
|
||||||
|
|
||||||
|
auto eth1
|
||||||
|
iface eth1 inet manual
|
||||||
|
|
||||||
|
auto eth2
|
||||||
|
iface eth2 inet manual
|
||||||
|
bond-master bond0
|
||||||
|
|
||||||
|
auto eth3
|
||||||
|
iface eth3 inet manual
|
||||||
|
|
||||||
|
# Create a bonded interface. Note that the "bond-slaves" is set to none. This
|
||||||
|
# is because the bond-master has already been set in the raw interfaces for
|
||||||
|
# the new bond0.
|
||||||
|
auto bond0
|
||||||
|
iface bond0 inet manual
|
||||||
|
bond-slaves none
|
||||||
|
bond-mode active-backup
|
||||||
|
bond-miimon 100
|
||||||
|
bond-downdelay 200
|
||||||
|
bond-updelay 200
|
||||||
|
|
||||||
|
# Container/Host management VLAN interface
|
||||||
|
auto bond0.10
|
||||||
|
iface bond0.10 inet manual
|
||||||
|
vlan-raw-device bond0
|
||||||
|
|
||||||
|
# OpenStack Networking VXLAN (tunnel/overlay) VLAN interface
|
||||||
|
auto bond0.30
|
||||||
|
iface bond0.30 inet manual
|
||||||
|
vlan-raw-device bond0
|
||||||
|
|
||||||
|
# Storage network VLAN interface (optional)
|
||||||
|
auto bond0.20
|
||||||
|
iface bond0.20 inet manual
|
||||||
|
vlan-raw-device bond0
|
||||||
|
|
||||||
|
# Container/Host management bridge
|
||||||
|
auto br-mgmt
|
||||||
|
iface br-mgmt inet static
|
||||||
|
bridge_stp off
|
||||||
|
bridge_waitport 0
|
||||||
|
bridge_fd 0
|
||||||
|
bridge_ports bond0.10
|
||||||
|
address 172.29.236.11
|
||||||
|
netmask 255.255.252.0
|
||||||
|
gateway 172.29.236.1
|
||||||
|
dns-nameservers 8.8.8.8 8.8.4.4
|
||||||
|
|
||||||
|
# OpenStack Networking VXLAN (tunnel/overlay) bridge
|
||||||
|
#
|
||||||
|
# Nodes hosting Neutron agents must have an IP address on this interface,
|
||||||
|
# including COMPUTE, NETWORK, and collapsed INFRA/NETWORK nodes.
|
||||||
|
#
|
||||||
|
|
||||||
|
auto br-vxlan
|
||||||
|
iface br-vxlan inet static
|
||||||
|
bridge_stp off
|
||||||
|
bridge_waitport 0
|
||||||
|
bridge_fd 0
|
||||||
|
bridge_ports bond0.30
|
||||||
|
address 172.29.240.16
|
||||||
|
netmask 255.255.252.0
|
||||||
|
|
||||||
|
# OpenStack Networking VLAN bridge
|
||||||
|
#
|
||||||
|
# The "br-vlan" bridge is no longer necessary for deployments unless Neutron
|
||||||
|
# agents are deployed in a container. Instead, a direct interface such as
|
||||||
|
# bond0 can be specified via the "host_bind_override" override when defining
|
||||||
|
# provider networks.
|
||||||
|
#
|
||||||
|
#auto br-vlan
|
||||||
|
#iface br-vlan inet manual
|
||||||
|
# bridge_stp off
|
||||||
|
# bridge_waitport 0
|
||||||
|
# bridge_fd 0
|
||||||
|
# bridge_ports bond0
|
||||||
|
|
||||||
|
# compute1 Network VLAN bridge
|
||||||
|
#auto br-vlan
|
||||||
|
#iface br-vlan inet manual
|
||||||
|
# bridge_stp off
|
||||||
|
# bridge_waitport 0
|
||||||
|
# bridge_fd 0
|
||||||
|
#
|
||||||
|
|
||||||
|
# Storage bridge (optional)
|
||||||
|
#
|
||||||
|
# Only the COMPUTE and STORAGE nodes must have an IP address
|
||||||
|
# on this bridge. When used by infrastructure nodes, the
|
||||||
|
# IP addresses are assigned to containers which use this
|
||||||
|
# bridge.
|
||||||
|
#
|
||||||
|
auto br-storage
|
||||||
|
iface br-storage inet manual
|
||||||
|
bridge_stp off
|
||||||
|
bridge_waitport 0
|
||||||
|
bridge_fd 0
|
||||||
|
bridge_ports bond0.20
|
||||||
|
|
||||||
|
# compute1 Storage bridge
|
||||||
|
#auto br-storage
|
||||||
|
#iface br-storage inet static
|
||||||
|
# bridge_stp off
|
||||||
|
# bridge_waitport 0
|
||||||
|
# bridge_fd 0
|
||||||
|
# bridge_ports bond0.20
|
||||||
|
# address 172.29.244.16
|
||||||
|
# netmask 255.255.252.0
|
313
etc/openstack_deploy/openstack_user_config.yml.multibond.example
Normal file
@ -0,0 +1,313 @@
|
|||||||
|
---
|
||||||
|
cidr_networks:
|
||||||
|
container: 172.29.236.0/22
|
||||||
|
tunnel: 172.29.240.0/22
|
||||||
|
storage: 172.29.244.0/22
|
||||||
|
|
||||||
|
used_ips:
|
||||||
|
- "172.29.236.1,172.29.236.50"
|
||||||
|
- "172.29.240.1,172.29.240.50"
|
||||||
|
- "172.29.244.1,172.29.244.50"
|
||||||
|
- "172.29.248.1,172.29.248.50"
|
||||||
|
|
||||||
|
global_overrides:
|
||||||
|
internal_lb_vip_address: 172.29.236.9
|
||||||
|
#
|
||||||
|
# The below domain name must resolve to an IP address
|
||||||
|
# in the CIDR specified in haproxy_keepalived_external_vip_cidr.
|
||||||
|
# If using different protocols (https/http) for the public/internal
|
||||||
|
# endpoints the two addresses must be different.
|
||||||
|
#
|
||||||
|
external_lb_vip_address: openstack.example.com
|
||||||
|
management_bridge: "br-mgmt"
|
||||||
|
provider_networks:
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-mgmt"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth1"
|
||||||
|
ip_from_q: "container"
|
||||||
|
type: "raw"
|
||||||
|
group_binds:
|
||||||
|
- all_containers
|
||||||
|
- hosts
|
||||||
|
is_container_address: true
|
||||||
|
#
|
||||||
|
# The below provider network defines details related to overlay traffic,
|
||||||
|
# including the range of VXLAN VNIs to assign to project/tenant networks
|
||||||
|
# and other attributes.
|
||||||
|
#
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-vxlan"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth10"
|
||||||
|
ip_from_q: "tunnel"
|
||||||
|
type: "vxlan"
|
||||||
|
range: "1:1000"
|
||||||
|
net_name: "vxlan"
|
||||||
|
group_binds:
|
||||||
|
- neutron_linuxbridge_agent
|
||||||
|
#
|
||||||
|
# The below provider network define details related to a given provider
|
||||||
|
# network: physnet1. Details include the name of the veth interface to
|
||||||
|
# connect to the bridge when agent on_metal is False (container_interface)
|
||||||
|
# or the physical interface to connect to the bridge when agent on_metal
|
||||||
|
# is True (host_bind_override), as well as the network type. The provider
|
||||||
|
# network name (net_name) will be used to build a physical network mapping
|
||||||
|
# to a network interface using either container_interface or
|
||||||
|
# host_bind_override (when defined).
|
||||||
|
#
|
||||||
|
# The network details will be used to populate the respective network
|
||||||
|
# configuration file(s) on the members of the listed groups. In this
|
||||||
|
# example, host_bind_override specifies the bond1 interface and applies
|
||||||
|
# only to the members of the neutron_linuxbridge_agent inventory group.
|
||||||
|
#
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-vlan"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth11"
|
||||||
|
host_bind_override: "bond1"
|
||||||
|
type: "vlan"
|
||||||
|
range: "101:200,301:400"
|
||||||
|
net_name: "physnet1"
|
||||||
|
group_binds:
|
||||||
|
- neutron_linuxbridge_agent
|
||||||
|
#
|
||||||
|
# The below provider network defines details related to storage traffic.
|
||||||
|
#
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-storage"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth2"
|
||||||
|
ip_from_q: "storage"
|
||||||
|
type: "raw"
|
||||||
|
group_binds:
|
||||||
|
- glance_api
|
||||||
|
- cinder_api
|
||||||
|
- cinder_volume
|
||||||
|
- nova_compute
|
||||||
|
|
||||||
|
###
|
||||||
|
### Infrastructure
|
||||||
|
###
|
||||||
|
|
||||||
|
# galera, memcache, rabbitmq, utility
|
||||||
|
shared-infra_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
container_vars:
|
||||||
|
# Optional | Example setting the container_tech for a target host.
|
||||||
|
container_tech: lxc
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
container_vars:
|
||||||
|
# Optional | Example setting the container_tech for a target host.
|
||||||
|
container_tech: nspawn
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# repository (apt cache, python packages, etc)
|
||||||
|
repo-infra_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# load balancer
|
||||||
|
# Ideally the load balancer should not use the Infrastructure hosts.
|
||||||
|
# Dedicated hardware is best for improved performance and security.
|
||||||
|
haproxy_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# rsyslog server
|
||||||
|
log_hosts:
|
||||||
|
log1:
|
||||||
|
ip: 172.29.236.14
|
||||||
|
|
||||||
|
###
|
||||||
|
### OpenStack
|
||||||
|
###
|
||||||
|
|
||||||
|
# keystone
|
||||||
|
identity_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# cinder api services
|
||||||
|
storage-infra_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# glance
|
||||||
|
# The settings here are repeated for each infra host.
|
||||||
|
# They could instead be applied as global settings in
|
||||||
|
# user_variables, but are left here to illustrate that
|
||||||
|
# each container could have different storage targets.
|
||||||
|
image_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
container_vars:
|
||||||
|
limit_container_types: glance
|
||||||
|
glance_nfs_client:
|
||||||
|
- server: "172.29.244.15"
|
||||||
|
remote_path: "/images"
|
||||||
|
local_path: "/var/lib/glance/images"
|
||||||
|
type: "nfs"
|
||||||
|
options: "_netdev,auto"
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
container_vars:
|
||||||
|
limit_container_types: glance
|
||||||
|
glance_nfs_client:
|
||||||
|
- server: "172.29.244.15"
|
||||||
|
remote_path: "/images"
|
||||||
|
local_path: "/var/lib/glance/images"
|
||||||
|
type: "nfs"
|
||||||
|
options: "_netdev,auto"
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
container_vars:
|
||||||
|
limit_container_types: glance
|
||||||
|
glance_nfs_client:
|
||||||
|
- server: "172.29.244.15"
|
||||||
|
remote_path: "/images"
|
||||||
|
local_path: "/var/lib/glance/images"
|
||||||
|
type: "nfs"
|
||||||
|
options: "_netdev,auto"
|
||||||
|
|
||||||
|
# nova api, conductor, etc services
|
||||||
|
compute-infra_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# heat
|
||||||
|
orchestration_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# horizon
|
||||||
|
dashboard_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# neutron server, agents (L3, etc)
|
||||||
|
network_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# ceilometer (telemetry data collection)
|
||||||
|
metering-infra_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# aodh (telemetry alarm service)
|
||||||
|
metering-alarm_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# gnocchi (telemetry metrics storage)
|
||||||
|
metrics_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# nova hypervisors
|
||||||
|
compute_hosts:
|
||||||
|
compute1:
|
||||||
|
ip: 172.29.236.16
|
||||||
|
compute2:
|
||||||
|
ip: 172.29.236.17
|
||||||
|
|
||||||
|
# ceilometer compute agent (telemetry data collection)
|
||||||
|
metering-compute_hosts:
|
||||||
|
compute1:
|
||||||
|
ip: 172.29.236.16
|
||||||
|
compute2:
|
||||||
|
ip: 172.29.236.17
|
||||||
|
|
||||||
|
# cinder volume hosts (NFS-backed)
|
||||||
|
# The settings here are repeated for each infra host.
|
||||||
|
# They could instead be applied as global settings in
|
||||||
|
# user_variables, but are left here to illustrate that
|
||||||
|
# each container could have different storage targets.
|
||||||
|
storage_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
container_vars:
|
||||||
|
cinder_backends:
|
||||||
|
limit_container_types: cinder_volume
|
||||||
|
nfs_volume:
|
||||||
|
volume_backend_name: NFS_VOLUME1
|
||||||
|
volume_driver: cinder.volume.drivers.nfs.NfsDriver
|
||||||
|
nfs_mount_options: "rsize=65535,wsize=65535,timeo=1200,actimeo=120"
|
||||||
|
nfs_shares_config: /etc/cinder/nfs_shares
|
||||||
|
shares:
|
||||||
|
- ip: "172.29.244.15"
|
||||||
|
share: "/vol/cinder"
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
container_vars:
|
||||||
|
cinder_backends:
|
||||||
|
limit_container_types: cinder_volume
|
||||||
|
nfs_volume:
|
||||||
|
volume_backend_name: NFS_VOLUME1
|
||||||
|
volume_driver: cinder.volume.drivers.nfs.NfsDriver
|
||||||
|
nfs_mount_options: "rsize=65535,wsize=65535,timeo=1200,actimeo=120"
|
||||||
|
nfs_shares_config: /etc/cinder/nfs_shares
|
||||||
|
shares:
|
||||||
|
- ip: "172.29.244.15"
|
||||||
|
share: "/vol/cinder"
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
container_vars:
|
||||||
|
cinder_backends:
|
||||||
|
limit_container_types: cinder_volume
|
||||||
|
nfs_volume:
|
||||||
|
volume_backend_name: NFS_VOLUME1
|
||||||
|
volume_driver: cinder.volume.drivers.nfs.NfsDriver
|
||||||
|
nfs_mount_options: "rsize=65535,wsize=65535,timeo=1200,actimeo=120"
|
||||||
|
nfs_shares_config: /etc/cinder/nfs_shares
|
||||||
|
shares:
|
||||||
|
- ip: "172.29.244.15"
|
||||||
|
share: "/vol/cinder"
|
@ -0,0 +1,351 @@
|
|||||||
|
---
|
||||||
|
cidr_networks:
|
||||||
|
container: 172.29.236.0/22
|
||||||
|
tunnel: 172.29.240.0/22
|
||||||
|
storage: 172.29.244.0/22
|
||||||
|
|
||||||
|
used_ips:
|
||||||
|
- "172.29.236.1,172.29.236.50"
|
||||||
|
- "172.29.240.1,172.29.240.50"
|
||||||
|
- "172.29.244.1,172.29.244.50"
|
||||||
|
- "172.29.248.1,172.29.248.50"
|
||||||
|
|
||||||
|
global_overrides:
|
||||||
|
internal_lb_vip_address: 172.29.236.9
|
||||||
|
#
|
||||||
|
# The below domain name must resolve to an IP address
|
||||||
|
# in the CIDR specified in haproxy_keepalived_external_vip_cidr.
|
||||||
|
# If using different protocols (https/http) for the public/internal
|
||||||
|
# endpoints the two addresses must be different.
|
||||||
|
#
|
||||||
|
external_lb_vip_address: openstack.example.com
|
||||||
|
management_bridge: "br-mgmt"
|
||||||
|
provider_networks:
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-mgmt"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth1"
|
||||||
|
ip_from_q: "container"
|
||||||
|
type: "raw"
|
||||||
|
group_binds:
|
||||||
|
- all_containers
|
||||||
|
- hosts
|
||||||
|
is_container_address: true
|
||||||
|
#
|
||||||
|
# The below provider network defines details related to vxlan traffic,
|
||||||
|
# including the range of VNIs to assign to project/tenant networks and
|
||||||
|
# other attributes.
|
||||||
|
#
|
||||||
|
# The network details will be used to populate the respective network
|
||||||
|
# configuration file(s) on the members of the listed groups.
|
||||||
|
#
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-vxlan"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth10"
|
||||||
|
ip_from_q: "tunnel"
|
||||||
|
type: "vxlan"
|
||||||
|
range: "1:1000"
|
||||||
|
net_name: "vxlan"
|
||||||
|
group_binds:
|
||||||
|
- network_hosts
|
||||||
|
- compute_hosts
|
||||||
|
#
|
||||||
|
# The below provider network(s) define details related to a given provider
|
||||||
|
# network: physnet1. Details include the name of the veth interface to
|
||||||
|
# connect to the bridge when agent on_metal is False (container_interface)
|
||||||
|
# or the physical interface to connect to the bridge when agent on_metal
|
||||||
|
# is True (host_bind_override), as well as the network type. The provider
|
||||||
|
# network name (net_name) will be used to build a physical network mapping
|
||||||
|
# to a network interface; either container_interface or host_bind_override
|
||||||
|
# (when defined).
|
||||||
|
#
|
||||||
|
# The network details will be used to populate the respective network
|
||||||
|
# configuration file(s) on the members of the listed groups. In this
|
||||||
|
# example, host_bind_override specifies the ens1f0 interface and applies
|
||||||
|
# only to the members of network_hosts:
|
||||||
|
#
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-vlan"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth12"
|
||||||
|
host_bind_override: "ens1f0"
|
||||||
|
type: "flat"
|
||||||
|
net_name: "physnet1"
|
||||||
|
group_binds:
|
||||||
|
- network_hosts
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-vlan"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth11"
|
||||||
|
host_bind_override: "ens1f0"
|
||||||
|
type: "vlan"
|
||||||
|
range: "101:200,301:400"
|
||||||
|
net_name: "physnet1"
|
||||||
|
group_binds:
|
||||||
|
- network_hosts
|
||||||
|
#
|
||||||
|
# The below provider network(s) also define details related to the
|
||||||
|
# physnet1 provider network. In this example, however, host_bind_override
|
||||||
|
# specifies the ens2f0 interface and applies only to the members of
|
||||||
|
# compute_hosts:
|
||||||
|
#
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-vlan"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth12"
|
||||||
|
host_bind_override: "ens2f0"
|
||||||
|
type: "flat"
|
||||||
|
net_name: "physnet1"
|
||||||
|
group_binds:
|
||||||
|
- compute_hosts
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-vlan"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth11"
|
||||||
|
host_bind_override: "ens2f0"
|
||||||
|
type: "vlan"
|
||||||
|
range: "101:200,301:400"
|
||||||
|
net_name: "physnet1"
|
||||||
|
group_binds:
|
||||||
|
- compute_hosts
|
||||||
|
#
|
||||||
|
# The below provider network defines details related to storage traffic.
|
||||||
|
#
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-storage"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth2"
|
||||||
|
ip_from_q: "storage"
|
||||||
|
type: "raw"
|
||||||
|
group_binds:
|
||||||
|
- glance_api
|
||||||
|
- cinder_api
|
||||||
|
- cinder_volume
|
||||||
|
- nova_compute
|
||||||
|
|
||||||
|
###
|
||||||
|
### Infrastructure
|
||||||
|
###
|
||||||
|
|
||||||
|
# galera, memcache, rabbitmq, utility
|
||||||
|
shared-infra_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
container_vars:
|
||||||
|
# Optional | Example setting the container_tech for a target host.
|
||||||
|
container_tech: lxc
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
container_vars:
|
||||||
|
# Optional | Example setting the container_tech for a target host.
|
||||||
|
container_tech: nspawn
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# repository (apt cache, python packages, etc)
|
||||||
|
repo-infra_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# load balancer
|
||||||
|
# Ideally the load balancer should not use the Infrastructure hosts.
|
||||||
|
# Dedicated hardware is best for improved performance and security.
|
||||||
|
haproxy_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# rsyslog server
|
||||||
|
log_hosts:
|
||||||
|
log1:
|
||||||
|
ip: 172.29.236.14
|
||||||
|
|
||||||
|
###
|
||||||
|
### OpenStack
|
||||||
|
###
|
||||||
|
|
||||||
|
# keystone
|
||||||
|
identity_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# cinder api services
|
||||||
|
storage-infra_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# glance
|
||||||
|
# The settings here are repeated for each infra host.
|
||||||
|
# They could instead be applied as global settings in
|
||||||
|
# user_variables, but are left here to illustrate that
|
||||||
|
# each container could have different storage targets.
|
||||||
|
image_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
container_vars:
|
||||||
|
limit_container_types: glance
|
||||||
|
glance_nfs_client:
|
||||||
|
- server: "172.29.244.15"
|
||||||
|
remote_path: "/images"
|
||||||
|
local_path: "/var/lib/glance/images"
|
||||||
|
type: "nfs"
|
||||||
|
options: "_netdev,auto"
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
container_vars:
|
||||||
|
limit_container_types: glance
|
||||||
|
glance_nfs_client:
|
||||||
|
- server: "172.29.244.15"
|
||||||
|
remote_path: "/images"
|
||||||
|
local_path: "/var/lib/glance/images"
|
||||||
|
type: "nfs"
|
||||||
|
options: "_netdev,auto"
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
container_vars:
|
||||||
|
limit_container_types: glance
|
||||||
|
glance_nfs_client:
|
||||||
|
- server: "172.29.244.15"
|
||||||
|
remote_path: "/images"
|
||||||
|
local_path: "/var/lib/glance/images"
|
||||||
|
type: "nfs"
|
||||||
|
options: "_netdev,auto"
|
||||||
|
|
||||||
|
# nova api, conductor, etc services
|
||||||
|
compute-infra_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# heat
|
||||||
|
orchestration_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# horizon
|
||||||
|
dashboard_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# neutron server, agents (L3, etc)
|
||||||
|
network_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# ceilometer (telemetry data collection)
|
||||||
|
metering-infra_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# aodh (telemetry alarm service)
|
||||||
|
metering-alarm_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# gnocchi (telemetry metrics storage)
|
||||||
|
metrics_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# nova hypervisors
|
||||||
|
compute_hosts:
|
||||||
|
compute1:
|
||||||
|
ip: 172.29.236.16
|
||||||
|
compute2:
|
||||||
|
ip: 172.29.236.17
|
||||||
|
|
||||||
|
# ceilometer compute agent (telemetry data collection)
|
||||||
|
metering-compute_hosts:
|
||||||
|
compute1:
|
||||||
|
ip: 172.29.236.16
|
||||||
|
compute2:
|
||||||
|
ip: 172.29.236.17
|
||||||
|
|
||||||
|
# cinder volume hosts (NFS-backed)
|
||||||
|
# The settings here are repeated for each infra host.
|
||||||
|
# They could instead be applied as global settings in
|
||||||
|
# user_variables, but are left here to illustrate that
|
||||||
|
# each container could have different storage targets.
|
||||||
|
storage_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
container_vars:
|
||||||
|
cinder_backends:
|
||||||
|
limit_container_types: cinder_volume
|
||||||
|
nfs_volume:
|
||||||
|
volume_backend_name: NFS_VOLUME1
|
||||||
|
volume_driver: cinder.volume.drivers.nfs.NfsDriver
|
||||||
|
nfs_mount_options: "rsize=65535,wsize=65535,timeo=1200,actimeo=120"
|
||||||
|
nfs_shares_config: /etc/cinder/nfs_shares
|
||||||
|
shares:
|
||||||
|
- ip: "172.29.244.15"
|
||||||
|
share: "/vol/cinder"
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
container_vars:
|
||||||
|
cinder_backends:
|
||||||
|
limit_container_types: cinder_volume
|
||||||
|
nfs_volume:
|
||||||
|
volume_backend_name: NFS_VOLUME1
|
||||||
|
volume_driver: cinder.volume.drivers.nfs.NfsDriver
|
||||||
|
nfs_mount_options: "rsize=65535,wsize=65535,timeo=1200,actimeo=120"
|
||||||
|
nfs_shares_config: /etc/cinder/nfs_shares
|
||||||
|
shares:
|
||||||
|
- ip: "172.29.244.15"
|
||||||
|
share: "/vol/cinder"
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
container_vars:
|
||||||
|
cinder_backends:
|
||||||
|
limit_container_types: cinder_volume
|
||||||
|
nfs_volume:
|
||||||
|
volume_backend_name: NFS_VOLUME1
|
||||||
|
volume_driver: cinder.volume.drivers.nfs.NfsDriver
|
||||||
|
nfs_mount_options: "rsize=65535,wsize=65535,timeo=1200,actimeo=120"
|
||||||
|
nfs_shares_config: /etc/cinder/nfs_shares
|
||||||
|
shares:
|
||||||
|
- ip: "172.29.244.15"
|
||||||
|
share: "/vol/cinder"
|
@ -0,0 +1,313 @@
|
|||||||
|
---
|
||||||
|
cidr_networks:
|
||||||
|
container: 172.29.236.0/22
|
||||||
|
tunnel: 172.29.240.0/22
|
||||||
|
storage: 172.29.244.0/22
|
||||||
|
|
||||||
|
used_ips:
|
||||||
|
- "172.29.236.1,172.29.236.50"
|
||||||
|
- "172.29.240.1,172.29.240.50"
|
||||||
|
- "172.29.244.1,172.29.244.50"
|
||||||
|
- "172.29.248.1,172.29.248.50"
|
||||||
|
|
||||||
|
global_overrides:
|
||||||
|
internal_lb_vip_address: 172.29.236.9
|
||||||
|
#
|
||||||
|
# The below domain name must resolve to an IP address
|
||||||
|
# in the CIDR specified in haproxy_keepalived_external_vip_cidr.
|
||||||
|
# If using different protocols (https/http) for the public/internal
|
||||||
|
# endpoints the two addresses must be different.
|
||||||
|
#
|
||||||
|
external_lb_vip_address: openstack.example.com
|
||||||
|
management_bridge: "br-mgmt"
|
||||||
|
provider_networks:
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-mgmt"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth1"
|
||||||
|
ip_from_q: "container"
|
||||||
|
type: "raw"
|
||||||
|
group_binds:
|
||||||
|
- all_containers
|
||||||
|
- hosts
|
||||||
|
is_container_address: true
|
||||||
|
#
|
||||||
|
# The below provider network defines details related to overlay traffic,
|
||||||
|
# including the range of VXLAN VNIs to assign to project/tenant networks
|
||||||
|
# and other attributes.
|
||||||
|
#
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-vxlan"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth10"
|
||||||
|
ip_from_q: "tunnel"
|
||||||
|
type: "vxlan"
|
||||||
|
range: "1:1000"
|
||||||
|
net_name: "vxlan"
|
||||||
|
group_binds:
|
||||||
|
- neutron_linuxbridge_agent
|
||||||
|
#
|
||||||
|
# The below provider network define details related to a given provider
|
||||||
|
# network: physnet1. Details include the name of the veth interface to
|
||||||
|
# connect to the bridge when agent on_metal is False (container_interface)
|
||||||
|
# or the physical interface to connect to the bridge when agent on_metal
|
||||||
|
# is True (host_bind_override), as well as the network type. The provider
|
||||||
|
# network name (net_name) will be used to build a physical network mapping
|
||||||
|
# to a network interface using either container_interface or
|
||||||
|
# host_bind_override (when defined).
|
||||||
|
#
|
||||||
|
# The network details will be used to populate the respective network
|
||||||
|
# configuration file(s) on the members of the listed groups. In this
|
||||||
|
# example, host_bind_override specifies the bond0 interface and applies
|
||||||
|
# only to the members of the neutron_linuxbridge_agent inventory group.
|
||||||
|
#
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-vlan"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth11"
|
||||||
|
host_bind_override: "bond0"
|
||||||
|
type: "vlan"
|
||||||
|
range: "101:200,301:400"
|
||||||
|
net_name: "physnet1"
|
||||||
|
group_binds:
|
||||||
|
- neutron_linuxbridge_agent
|
||||||
|
#
|
||||||
|
# The below provider network defines details related to storage traffic.
|
||||||
|
#
|
||||||
|
- network:
|
||||||
|
container_bridge: "br-storage"
|
||||||
|
container_type: "veth"
|
||||||
|
container_interface: "eth2"
|
||||||
|
ip_from_q: "storage"
|
||||||
|
type: "raw"
|
||||||
|
group_binds:
|
||||||
|
- glance_api
|
||||||
|
- cinder_api
|
||||||
|
- cinder_volume
|
||||||
|
- nova_compute
|
||||||
|
|
||||||
|
###
|
||||||
|
### Infrastructure
|
||||||
|
###
|
||||||
|
|
||||||
|
# galera, memcache, rabbitmq, utility
|
||||||
|
shared-infra_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
container_vars:
|
||||||
|
# Optional | Example setting the container_tech for a target host.
|
||||||
|
container_tech: lxc
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
container_vars:
|
||||||
|
# Optional | Example setting the container_tech for a target host.
|
||||||
|
container_tech: nspawn
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# repository (apt cache, python packages, etc)
|
||||||
|
repo-infra_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# load balancer
|
||||||
|
# Ideally the load balancer should not use the Infrastructure hosts.
|
||||||
|
# Dedicated hardware is best for improved performance and security.
|
||||||
|
haproxy_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# rsyslog server
|
||||||
|
log_hosts:
|
||||||
|
log1:
|
||||||
|
ip: 172.29.236.14
|
||||||
|
|
||||||
|
###
|
||||||
|
### OpenStack
|
||||||
|
###
|
||||||
|
|
||||||
|
# keystone
|
||||||
|
identity_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# cinder api services
|
||||||
|
storage-infra_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# glance
|
||||||
|
# The settings here are repeated for each infra host.
|
||||||
|
# They could instead be applied as global settings in
|
||||||
|
# user_variables, but are left here to illustrate that
|
||||||
|
# each container could have different storage targets.
|
||||||
|
image_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
container_vars:
|
||||||
|
limit_container_types: glance
|
||||||
|
glance_nfs_client:
|
||||||
|
- server: "172.29.244.15"
|
||||||
|
remote_path: "/images"
|
||||||
|
local_path: "/var/lib/glance/images"
|
||||||
|
type: "nfs"
|
||||||
|
options: "_netdev,auto"
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
container_vars:
|
||||||
|
limit_container_types: glance
|
||||||
|
glance_nfs_client:
|
||||||
|
- server: "172.29.244.15"
|
||||||
|
remote_path: "/images"
|
||||||
|
local_path: "/var/lib/glance/images"
|
||||||
|
type: "nfs"
|
||||||
|
options: "_netdev,auto"
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
container_vars:
|
||||||
|
limit_container_types: glance
|
||||||
|
glance_nfs_client:
|
||||||
|
- server: "172.29.244.15"
|
||||||
|
remote_path: "/images"
|
||||||
|
local_path: "/var/lib/glance/images"
|
||||||
|
type: "nfs"
|
||||||
|
options: "_netdev,auto"
|
||||||
|
|
||||||
|
# nova api, conductor, etc services
|
||||||
|
compute-infra_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# heat
|
||||||
|
orchestration_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# horizon
|
||||||
|
dashboard_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# neutron server, agents (L3, etc)
|
||||||
|
network_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# ceilometer (telemetry data collection)
|
||||||
|
metering-infra_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# aodh (telemetry alarm service)
|
||||||
|
metering-alarm_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# gnocchi (telemetry metrics storage)
|
||||||
|
metrics_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
|
||||||
|
# nova hypervisors
|
||||||
|
compute_hosts:
|
||||||
|
compute1:
|
||||||
|
ip: 172.29.236.16
|
||||||
|
compute2:
|
||||||
|
ip: 172.29.236.17
|
||||||
|
|
||||||
|
# ceilometer compute agent (telemetry data collection)
|
||||||
|
metering-compute_hosts:
|
||||||
|
compute1:
|
||||||
|
ip: 172.29.236.16
|
||||||
|
compute2:
|
||||||
|
ip: 172.29.236.17
|
||||||
|
|
||||||
|
# cinder volume hosts (NFS-backed)
|
||||||
|
# The settings here are repeated for each infra host.
|
||||||
|
# They could instead be applied as global settings in
|
||||||
|
# user_variables, but are left here to illustrate that
|
||||||
|
# each container could have different storage targets.
|
||||||
|
storage_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.29.236.11
|
||||||
|
container_vars:
|
||||||
|
cinder_backends:
|
||||||
|
limit_container_types: cinder_volume
|
||||||
|
nfs_volume:
|
||||||
|
volume_backend_name: NFS_VOLUME1
|
||||||
|
volume_driver: cinder.volume.drivers.nfs.NfsDriver
|
||||||
|
nfs_mount_options: "rsize=65535,wsize=65535,timeo=1200,actimeo=120"
|
||||||
|
nfs_shares_config: /etc/cinder/nfs_shares
|
||||||
|
shares:
|
||||||
|
- ip: "172.29.244.15"
|
||||||
|
share: "/vol/cinder"
|
||||||
|
infra2:
|
||||||
|
ip: 172.29.236.12
|
||||||
|
container_vars:
|
||||||
|
cinder_backends:
|
||||||
|
limit_container_types: cinder_volume
|
||||||
|
nfs_volume:
|
||||||
|
volume_backend_name: NFS_VOLUME1
|
||||||
|
volume_driver: cinder.volume.drivers.nfs.NfsDriver
|
||||||
|
nfs_mount_options: "rsize=65535,wsize=65535,timeo=1200,actimeo=120"
|
||||||
|
nfs_shares_config: /etc/cinder/nfs_shares
|
||||||
|
shares:
|
||||||
|
- ip: "172.29.244.15"
|
||||||
|
share: "/vol/cinder"
|
||||||
|
infra3:
|
||||||
|
ip: 172.29.236.13
|
||||||
|
container_vars:
|
||||||
|
cinder_backends:
|
||||||
|
limit_container_types: cinder_volume
|
||||||
|
nfs_volume:
|
||||||
|
volume_backend_name: NFS_VOLUME1
|
||||||
|
volume_driver: cinder.volume.drivers.nfs.NfsDriver
|
||||||
|
nfs_mount_options: "rsize=65535,wsize=65535,timeo=1200,actimeo=120"
|
||||||
|
nfs_shares_config: /etc/cinder/nfs_shares
|
||||||
|
shares:
|
||||||
|
- ip: "172.29.244.15"
|
||||||
|
share: "/vol/cinder"
|