ed7de99b58
Refactoor linking for DS use. Change-Id: I6de5813fb7df5741e13d34163545d2402a4fd6c5 Signed-off-by: Ron Stone <ronald.stone@windriver.com>
555 lines
18 KiB
ReStructuredText
555 lines
18 KiB
ReStructuredText
|
||
.. begin-aio-dx-install-verify-ip-connectivity
|
||
|
||
External connectivity is required to run the Ansible bootstrap
|
||
playbook. The StarlingX boot image will |DHCP| out all interfaces
|
||
so the server may have obtained an IP address and have external IP
|
||
connectivity if a |DHCP| server is present in your environment.
|
||
Verify this using the :command:`ip addr` and :command:`ping
|
||
8.8.8.8` command.
|
||
|
||
Otherwise, manually configure an IP address and default IP route.
|
||
Use the ``PORT``, ``IP-ADDRESS``/``SUBNET-LENGTH`` and
|
||
``GATEWAY-IP-ADDRESS`` applicable to your deployment environment.
|
||
|
||
.. code-block:: bash
|
||
|
||
sudo ip address add <IP-ADDRESS>/<SUBNET-LENGTH> dev <PORT>
|
||
sudo ip link set up dev <PORT>
|
||
sudo ip route add default via <GATEWAY-IP-ADDRESS> dev <PORT>
|
||
ping 8.8.8
|
||
|
||
.. end-aio-dx-install-verify-ip-connectivity
|
||
|
||
|
||
|
||
.. begin-config-controller-0-oam-interface-dx
|
||
|
||
The following example configures the |OAM| interface on a physical
|
||
untagged ethernet port, use |OAM| port name that is applicable to
|
||
your deployment environment, for example eth0:
|
||
|
||
.. code-block:: none
|
||
|
||
~(keystone_admin)$ OAM_IF=<OAM-PORT>
|
||
~(keystone_admin)$ system host-if-modify controller-0 $OAM_IF -c platform
|
||
~(keystone_admin)$ system interface-network-assign controller-0 $OAM_IF oam
|
||
|
||
.. end-config-controller-0-oam-interface-dx
|
||
|
||
|
||
|
||
.. begin-config-controller-0-ntp-interface-dx
|
||
|
||
.. code-block:: none
|
||
|
||
~(keystone_admin)$ system ntp-modify ntpservers=0.pool.ntp.org,1.pool.ntp.org
|
||
|
||
To configure |PTP| instead of |NTP|, see |ptp-server-config-index|.
|
||
|
||
.. end-config-controller-0-ntp-interface-dx
|
||
|
||
|
||
|
||
.. begin-config-controller-0-OS-k8s-sriov-dx
|
||
|
||
* Configure the Kubernetes |SRIOV| device plugin.
|
||
|
||
.. code-block:: none
|
||
|
||
~(keystone_admin)$ system host-label-assign controller-0 sriovdp=enabled
|
||
|
||
* If you are planning on running |DPDK| in Kubernetes hosted application
|
||
containers on this host, configure the number of 1G Huge pages required on
|
||
both |NUMA| nodes.
|
||
|
||
.. code-block:: bash
|
||
|
||
# assign 10x 1G huge page on processor/numa-node 0 on controller-0 to applications
|
||
~(keystone_admin)$ system host-memory-modify -f application controller-0 0 -1G 10
|
||
|
||
# assign 10x 1G huge page on processor/numa-node 1 on controller-0 to applications
|
||
~(keystone_admin)$ system host-memory-modify -f application controller-0 1 -1G 10
|
||
|
||
.. end-config-controller-0-OS-k8s-sriov-dx
|
||
|
||
|
||
.. begin-power-on-controller-1-server-dx
|
||
|
||
Power on the controller-1 server and force it to network boot with
|
||
the appropriate BIOS boot options for your particular server.
|
||
|
||
.. end-power-on-controller-1-server-dx
|
||
|
||
|
||
|
||
.. begin-config-controller-1-server-oam-dx
|
||
|
||
The following example configures the |OAM| interface on a physical untagged
|
||
ethernet port, use the |OAM| port name that is applicable to your
|
||
deployment environment, for example eth0:
|
||
|
||
.. code-block:: none
|
||
|
||
~(keystone_admin)$ OAM_IF=<OAM-PORT>
|
||
~(keystone_admin)$ system host-if-modify controller-1 $OAM_IF -c platform
|
||
~(keystone_admin)$ system interface-network-assign controller-1 $OAM_IF oam
|
||
|
||
.. end-config-controller-1-server-oam-dx
|
||
|
||
|
||
.. begin-config-k8s-sriov-controller-1-dx
|
||
|
||
* Configure the Kubernetes |SRIOV| device plugin.
|
||
|
||
.. code-block:: bash
|
||
|
||
~(keystone_admin)$ system host-label-assign controller-1 sriovdp=enabled
|
||
|
||
* If planning on running |DPDK| in Kubernetes hosted application
|
||
containers on this host, configure the number of 1G Huge pages required
|
||
on both |NUMA| nodes.
|
||
|
||
.. code-block:: bash
|
||
|
||
# assign 10x 1G huge page on processor/numa-node 0 on controller-1 to applications
|
||
~(keystone_admin)$ system host-memory-modify -f application controller-1 0 -1G 10
|
||
|
||
# assign 10x 1G huge page on processor/numa-node 1 on controller-1 to applications
|
||
~(keystone_admin)$ system host-memory-modify -f application controller-1 1 -1G 10
|
||
|
||
.. end-config-k8s-sriov-controller-1-dx
|
||
|
||
|
||
.. begin-install-sw-on-workers-power-on-dx
|
||
|
||
Power on the worker node servers and force them to network boot with the
|
||
appropriate BIOS boot options for your particular server.
|
||
|
||
.. end-install-sw-on-workers-power-on-dx
|
||
|
||
|
||
|
||
.. begin-os-specific-host-config-sriov-dx
|
||
|
||
* Configure the Kubernetes |SRIOV| device plugin.
|
||
|
||
.. code-block:: bash
|
||
|
||
for NODE in worker-0 worker-1; do
|
||
system host-label-assign $NODE sriovdp=enabled
|
||
done
|
||
|
||
* If planning on running |DPDK| in Kubernetes hosted application containers on
|
||
this host, configure the number of 1G Huge pages required on both |NUMA|
|
||
nodes.
|
||
|
||
.. code-block:: bash
|
||
|
||
for NODE in worker-0 worker-1; do
|
||
# assign 10x 1G huge page on processor/numa-node 0 on worker-node to applications
|
||
~(keystone_admin)$ system host-memory-modify -f application $NODE 0 -1G 10
|
||
|
||
# assign 10x 1G huge page on processor/numa-node 1 on worker-node to applications
|
||
~(keystone_admin)$ system host-memory-modify -f application $NODE 1 -1G 10
|
||
done
|
||
|
||
.. end-os-specific-host-config-sriov-dx
|
||
|
||
|
||
|
||
.. begin-config-controller-0-OS-add-cores-dx
|
||
|
||
A minimum of 4 platform cores are required, 6 platform cores are
|
||
recommended.
|
||
|
||
Increase the number of platform cores with the following
|
||
commands. This example assigns 6 cores on processor/numa-node 0
|
||
|
||
on controller-0 to platform.
|
||
|
||
.. code-block:: bash
|
||
|
||
~(keystone_admin)$ system host-cpu-modify -f platform -p0 6 controller-0
|
||
|
||
.. end-config-controller-0-OS-add-cores-dx
|
||
|
||
|
||
|
||
|
||
.. begin-config-controller-0-OS-vswitch-dx
|
||
|
||
To deploy |OVS-DPDK|, run the following command:
|
||
|
||
.. parsed-literal::
|
||
|
||
~(keystone_admin)$ system modify --vswitch_type |ovs-dpdk|
|
||
|
||
Default recommendation for an |AIO|-controller is to use a single core
|
||
for |OVS-DPDK| vSwitch.
|
||
|
||
.. code-block:: bash
|
||
|
||
# assign 1 core on processor/numa-node 0 on controller-0 to vswitch
|
||
~(keystone_admin)$ system host-cpu-modify -f vswitch -p0 1 controller-0
|
||
|
||
Once vswitch_type is set to |OVS|-|DPDK|, any subsequent nodes
|
||
created will default to automatically assigning 1 vSwitch core
|
||
for AIO controllers and 2 vSwitch cores (both on numa-node 0;
|
||
physical NICs are typically on first numa-node) for
|
||
compute-labeled worker nodes.
|
||
|
||
When using |OVS-DPDK|, configure 1G of huge pages for vSwitch memory on
|
||
each |NUMA| node on the host. It is recommended
|
||
to configure 1x 1G huge page (-1G 1) for vSwitch memory on each |NUMA|
|
||
node on the host.
|
||
|
||
However, due to a limitation with Kubernetes, only a single huge page
|
||
size is supported on any one host. If your application |VMs| require 2M
|
||
huge pages, then configure 500x 2M huge pages (-2M 500) for vSwitch
|
||
memory on each |NUMA| node on the host.
|
||
|
||
.. code-block:: bash
|
||
|
||
# Assign 1x 1G huge page on processor/numa-node 0 on controller-0 to vswitch
|
||
~(keystone_admin)$ system host-memory-modify -f vswitch -1G 1 controller-0 0
|
||
|
||
# Assign 1x 1G huge page on processor/numa-node 1 on controller-0 to vswitch
|
||
~(keystone_admin)$ system host-memory-modify -f vswitch -1G 1 controller-0 1
|
||
|
||
.. important::
|
||
|
||
|VMs| created in an |OVS-DPDK| environment must be configured to use
|
||
huge pages to enable networking and must use a flavor with property:
|
||
``hw:mem_page_size=large``
|
||
|
||
Configure the huge pages for |VMs| in an |OVS-DPDK| environment on
|
||
this host, the following commands are an example that assumes that 1G
|
||
huge page size is being used on this host:
|
||
|
||
.. code-block:: bash
|
||
|
||
# assign 1x 1G huge page on processor/numa-node 0 on controller-0 to applications
|
||
~(keystone_admin)$ system host-memory-modify -f application -1G 10 controller-0 0
|
||
|
||
# assign 1x 1G huge page on processor/numa-node 1 on controller-0 to applications
|
||
~(keystone_admin)$ system host-memory-modify -f application -1G 10 controller-0 1
|
||
|
||
.. note::
|
||
|
||
After controller-0 is unlocked, changing vswitch_type requires
|
||
locking and unlocking controller-0 to apply the change.
|
||
|
||
.. end-config-controller-0-OS-vswitch-dx
|
||
|
||
|
||
|
||
|
||
.. begin-config-controller-0-OS-add-fs-dx
|
||
|
||
.. note::
|
||
|
||
Both cannot exist at the same time.
|
||
|
||
Add an 'instances' filesystem
|
||
|
||
.. code-block:: bash
|
||
|
||
~(keystone_admin)$ export NODE=controller-0
|
||
|
||
# Create ‘instances’ filesystem
|
||
~(keystone_admin)$ system host-fs-add ${NODE} instances=<size>
|
||
|
||
Or add a 'nova-local' volume group:
|
||
|
||
.. code-block:: bash
|
||
|
||
~(keystone_admin)$ export NODE=controller-0
|
||
|
||
# Create ‘nova-local’ local volume group
|
||
~(keystone_admin)$ system host-lvg-add ${NODE} nova-local
|
||
|
||
# Get UUID of an unused DISK to to be added to the ‘nova-local’ volume
|
||
# group. CEPH OSD Disks can NOT be used
|
||
# List host’s disks and take note of UUID of disk to be used
|
||
~(keystone_admin)$ system host-disk-list ${NODE}
|
||
|
||
# Add the unused disk to the ‘nova-local’ volume group
|
||
~(keystone_admin)$ system host-pv-add ${NODE} nova-local <DISK_UUID>
|
||
|
||
.. end-config-controller-0-OS-add-fs-dx
|
||
|
||
|
||
|
||
.. begin-config-controller-0-OS-data-interface-dx
|
||
|
||
.. code-block:: bash
|
||
|
||
~(keystone_admin)$ NODE=controller-0
|
||
|
||
# List inventoried host’s ports and identify ports to be used as ‘data’ interfaces,
|
||
# based on displayed linux port name, pci address and device type.
|
||
~(keystone_admin)$ system host-port-list ${NODE}
|
||
|
||
# List host’s auto-configured ‘ethernet’ interfaces,
|
||
# find the interfaces corresponding to the ports identified in previous step, and
|
||
# take note of their UUID
|
||
~(keystone_admin)$ system host-if-list -a ${NODE}
|
||
|
||
# Modify configuration for these interfaces
|
||
# Configuring them as ‘data’ class interfaces, MTU of 1500 and named data#
|
||
~(keystone_admin)$ system host-if-modify -m 1500 -n data0 -c data ${NODE} <data0-if-uuid>
|
||
~(keystone_admin)$ system host-if-modify -m 1500 -n data1 -c data ${NODE} <data1-if-uuid>
|
||
|
||
# Create Data Networks that vswitch 'data' interfaces will be connected to
|
||
~(keystone_admin)$ DATANET0='datanet0'
|
||
~(keystone_admin)$ DATANET1='datanet1'
|
||
|
||
# Assign Data Networks to Data Interfaces
|
||
~(keystone_admin)$ system interface-datanetwork-assign ${NODE} <data0-if-uuid> ${DATANET0}
|
||
~(keystone_admin)$ system interface-datanetwork-assign ${NODE} <data1-if-uuid> ${DATANET1}
|
||
|
||
.. end-config-controller-0-OS-data-interface-dx
|
||
|
||
|
||
|
||
.. begin-increase-cores-controller-1-dx
|
||
|
||
Increase the number of platform cores with the following commands:
|
||
|
||
.. code-block::
|
||
|
||
# assign 6 cores on processor/numa-node 0 on controller-1 to platform
|
||
~(keystone_admin)$ system host-cpu-modify -f platform -p0 6 controller-1
|
||
|
||
.. end-increase-cores-controller-1-dx
|
||
|
||
|
||
|
||
.. begin-config-vswitch-controller-1-dx
|
||
|
||
If using |OVS-DPDK| vswitch, run the following commands:
|
||
Default recommendation for an |AIO|-controller is to use a single core
|
||
for |OVS-DPDK| vSwitch. This should have been automatically configured,
|
||
if not run the following command.
|
||
|
||
.. code-block:: bash
|
||
|
||
# assign 1 core on processor/numa-node 0 on controller-1 to vswitch
|
||
~(keystone_admin)$ system host-cpu-modify -f vswitch -p0 1 controller-1
|
||
|
||
When using |OVS-DPDK|, configure 1G of huge pages for vSwitch memory on
|
||
each |NUMA| node on the host. It is recommended
|
||
to configure 1x 1G huge page (-1G 1) for vSwitch memory on each |NUMA|
|
||
node on the host.
|
||
|
||
However, due to a limitation with Kubernetes, only a single huge page
|
||
size is supported on any one host. If your application VMs require 2M
|
||
huge pages, then configure 500x 2M huge pages (-2M 500) for vSwitch
|
||
memory on each |NUMA| node on the host.
|
||
|
||
.. code-block:: bash
|
||
|
||
# assign 1x 1G huge page on processor/numa-node 0 on controller-1 to vswitch
|
||
~(keystone_admin)$ system host-memory-modify -f vswitch -1G 1 controller-1 0
|
||
|
||
# Assign 1x 1G huge page on processor/numa-node 1 on controller-0 to vswitch
|
||
~(keystone_admin)$ system host-memory-modify -f vswitch -1G 1 controller-1 1
|
||
|
||
.. important::
|
||
|
||
|VMs| created in an |OVS-DPDK| environment must be configured to use
|
||
huge pages to enable networking and must use a flavor with property:
|
||
``hw:mem_page_size=large``.
|
||
|
||
Configure the huge pages for |VMs| in an |OVS-DPDK| environment on
|
||
this host, assuming 1G huge page size is being used on this host, with
|
||
the following commands:
|
||
|
||
.. code-block:: bash
|
||
|
||
# assign 10x 1G huge page on processor/numa-node 0 on controller-1 to applications
|
||
~(keystone_admin)$ system host-memory-modify -f application -1G 10 controller-1 0
|
||
|
||
# assign 10x 1G huge page on processor/numa-node 1 on controller-1 to applications
|
||
~(keystone_admin)$ system host-memory-modify -f application -1G 10 controller-1 1
|
||
|
||
.. end-config-vswitch-controller-1-dx
|
||
|
||
|
||
|
||
.. begin-config-fs-controller-1-dx
|
||
|
||
.. note::
|
||
Both cannot exist at the same time.
|
||
|
||
* Add an 'instances' filesystem:
|
||
|
||
.. code-block:: bash
|
||
|
||
~(keystone_admin)$ export NODE=controller-1
|
||
|
||
# Create ‘instances’ filesystem
|
||
~(keystone_admin)$ system host-fs-add ${NODE} instances=<size>
|
||
|
||
**Or**
|
||
|
||
* Add a 'nova-local' volume group:
|
||
|
||
.. code-block:: bash
|
||
|
||
~(keystone_admin)$ export NODE=controller-1
|
||
|
||
# Create ‘nova-local’ local volume group
|
||
~(keystone_admin)$ system host-lvg-add ${NODE} nova-local
|
||
|
||
# Get UUID of an unused DISK to to be added to the ‘nova-local’ volume
|
||
# group. CEPH OSD Disks can NOT be used
|
||
# List host’s disks and take note of UUID of disk to be used
|
||
~(keystone_admin)$ system host-disk-list ${NODE}
|
||
|
||
# Add the unused disk to the ‘nova-local’ volume group
|
||
~(keystone_admin)$ system host-pv-add ${NODE} nova-local <DISK_UUID>
|
||
|
||
.. end-config-fs-controller-1-dx
|
||
|
||
|
||
|
||
.. begin-config-data-interfaces-controller-1-dx
|
||
|
||
.. code-block:: bash
|
||
|
||
export NODE=controller-1
|
||
|
||
# List inventoried host's ports and identify ports to be used as 'data' interfaces,
|
||
# based on displayed linux port name, pci address and device type.
|
||
system host-port-list ${NODE}
|
||
|
||
# List host’s auto-configured ‘ethernet’ interfaces,
|
||
# find the interfaces corresponding to the ports identified in previous step, and
|
||
# take note of their UUID
|
||
system host-if-list -a ${NODE}
|
||
|
||
# Modify configuration for these interfaces
|
||
# Configuring them as 'data' class interfaces, MTU of 1500 and named data#
|
||
~(keystone_admin)$ system host-if-modify -m 1500 -n data0 -c data ${NODE} <data0-if-uuid>
|
||
~(keystone_admin)$ system host-if-modify -m 1500 -n data1 -c data ${NODE} <data1-if-uuid>
|
||
|
||
# Create Data Networks that vswitch 'data' interfaces will be connected to
|
||
~(keystone_admin)$ DATANET0='datanet0'
|
||
~(keystone_admin)$ DATANET1='datanet1'
|
||
|
||
# Assign Data Networks to Data Interfaces
|
||
~(keystone_admin)$ system interface-datanetwork-assign ${NODE} <data0-if-uuid> ${DATANET0}
|
||
~(keystone_admin)$ system interface-datanetwork-assign ${NODE} <data1-if-uuid> ${DATANET1}
|
||
|
||
.. end-config-data-interfaces-controller-1-dx
|
||
|
||
|
||
|
||
.. begin-os-specific-host-config-data-dx
|
||
|
||
.. code-block:: bash
|
||
|
||
# Execute the following lines with
|
||
~(keystone_admin)$ export NODE=worker-0
|
||
|
||
# and then repeat with
|
||
~(keystone_admin)$ export NODE=worker-1
|
||
|
||
# List inventoried host’s ports and identify ports to be used as `data` interfaces,
|
||
# based on displayed linux port name, pci address and device type.
|
||
~(keystone_admin)$ system host-port-list ${NODE}
|
||
|
||
# List host’s auto-configured ‘ethernet’ interfaces,
|
||
# find the interfaces corresponding to the ports identified in previous step, and
|
||
# take note of their UUID
|
||
~(keystone_admin)$ system host-if-list -a ${NODE}
|
||
|
||
# Modify configuration for these interfaces
|
||
# Configuring them as ‘data’ class interfaces, MTU of 1500 and named data#
|
||
~(keystone_admin)$ system host-if-modify -m 1500 -n data0 -c data ${NODE} <data0-if-uuid>
|
||
~(keystone_admin)$ system host-if-modify -m 1500 -n data1 -c data ${NODE} <data1-if-uuid>
|
||
|
||
# Create Data Networks that vswitch 'data' interfaces will be connected to
|
||
~(keystone_admin)$ DATANET0='datanet0'
|
||
~(keystone_admin)$ DATANET1='datanet1'
|
||
~(keystone_admin)$ system datanetwork-add ${DATANET0} vlan
|
||
~(keystone_admin)$ system datanetwork-add ${DATANET1} vlan
|
||
|
||
# Assign Data Networks to Data Interfaces
|
||
~(keystone_admin)$ system interface-datanetwork-assign ${NODE} <data0-if-uuid> ${DATANET0}
|
||
~(keystone_admin)$ system interface-datanetwork-assign ${NODE} <data1-if-uuid> ${DATANET1}
|
||
|
||
.. end-os-specific-host-config-data-dx
|
||
|
||
|
||
.. begin-os-specific-host-config-labels-dx
|
||
|
||
.. parsed-literal::
|
||
|
||
for NODE in worker-0 worker-1; do
|
||
system host-label-assign $NODE openstack-compute-node=enabled
|
||
kubectl taint nodes $NODE openstack-compute-node:NoSchedule
|
||
system host-label-assign $NODE |vswitch-label|
|
||
system host-label-assign $NODE sriov=enabled
|
||
done
|
||
|
||
.. end-os-specific-host-config-labels-dx
|
||
|
||
|
||
.. begin-os-specific-host-config-vswitch-dx
|
||
|
||
If using |OVS-DPDK| vswitch, run the following commands:
|
||
Default recommendation for worker node is to use two cores on
|
||
numa-node 0 for |OVS-DPDK| vSwitch; physical |NICs| are
|
||
typically on first numa-node. This should have been
|
||
automatically configured, if not run the following command.
|
||
|
||
.. code-block:: bash
|
||
|
||
for NODE in worker-0 worker-1; do
|
||
# assign 2 cores on processor/numa-node 0 on worker-node to vswitch
|
||
~(keystone_admin)$ system host-cpu-modify -f vswitch -p0 2 $NODE
|
||
done
|
||
|
||
When using |OVS-DPDK|, configure 1G of huge pages for vSwitch
|
||
memory on each |NUMA| node on the host. It is recommended to
|
||
configure 1x 1G huge page (-1G 1) for vSwitch memory on each
|
||
|NUMA| node on the host.
|
||
|
||
However, due to a limitation with Kubernetes, only a single huge
|
||
page size is supported on any one host. If your application VMs
|
||
require 2M huge pages, then configure 500x 2M huge pages (-2M
|
||
500) for vSwitch memory on each |NUMA| node on the host.
|
||
|
||
.. code-block:: bash
|
||
|
||
for NODE in worker-0 worker-1; do
|
||
# assign 1x 1G huge page on processor/numa-node 0 on worker-node to vswitch
|
||
~(keystone_admin)$ system host-memory-modify -f vswitch -1G 1 $NODE 0
|
||
# assign 1x 1G huge page on processor/numa-node 0 on worker-node to vswitch
|
||
~(keystone_admin)$ system host-memory-modify -f vswitch -1G 1 $NODE 1
|
||
done
|
||
|
||
.. important::
|
||
|
||
|VMs| created in an |OVS-DPDK| environment must be configured
|
||
to use huge pages to enable networking and must use a flavor
|
||
with property: ``hw:mem_page_size=large``.
|
||
|
||
Configure the huge pages for |VMs| in an |OVS-DPDK|
|
||
environment on this host, assuming 1G huge page size is being
|
||
used on this host, with the following commands:
|
||
|
||
.. code-block:: bash
|
||
|
||
for NODE in worker-0 worker-1; do
|
||
# assign 10x 1G huge page on processor/numa-node 0 on worker-node to applications
|
||
~(keystone_admin)$ system host-memory-modify -f application -1G 10 $NODE 0
|
||
# assign 10x 1G huge page on processor/numa-node 1 on worker-node to applications
|
||
~(keystone_admin)$ system host-memory-modify -f application -1G 10 $NODE 1
|
||
done
|
||
|
||
.. end-os-specific-host-config-vswitch-dx
|