Files
tacker/devstack/plugin.sh
Koichiro Den 578b12e989 Add a seperate controller subnode to subdivide the memory load
The number of required plugins has increased to the extent that
controller on Zuul FT infrastructure almost runs out of memory [1].
This potentially induces various problems such as FT failure noises
or POST_FAILURE at the ansible task 'export-devstack-journal'.
To request expanded images such as ubuntu-focal-expanded (16GB) or
ubuntu-focal-32GB would be an option, but it turns out that would
lead us to another problematic situation. [2]

This patch, instead, addresses the issue by subdividing the memory
load. As a first step, introduce a new subnode 'tacker-controller',
on which both tacker-server and tacker-conductor are located.

Note:
* when we re-locate some other components to this new subnode, it might
  better to rename it.
* `devstack_local_conf: {}` in .zuul.yaml is to cancel out the global
  job.vars devstack_local_conf.post-config.$NEUTRON_DHCP_CONF, which
  is not present on 'tacker-controller' in the first place.
* TACKER_MODE is set to 'standalone'. 'all-in-one' supposes core
  services like nova, neutron, keystone, etc. api servers are located
  on the same host as tacker-server.
* in devstack/lib/tacker:create_tacker_accounts, SERVICE_HOST should
  have been TACKER_HOST. this minor fix is included.
* in roles/setup-default-vim/tasks/main.yaml, the same where conditions
  were scattered but all tasks in it just needed to run on 'controller'
  only. so let us wrap them all in a block.
* renamed devstack/plugin.sh:tacker_register_default_vim for clarity.
* policy file modification for Heat is now done by an ansible task.
  it frees us from the co-location requirements for Tacker and Heat.
* drop devstack/lib/tacker:is_tacker_enabled as it's no longer needed.

[1]: we investigated how severe the memory load on 'controller' was
     on Zuul FT infrastructure:
     * The highest memory-consuming processes in desc order:
       808.70MB (9.87%) 828112 /usr/sbin/mysqld
       179.81MB (2.19%) 184124 ... /usr/local/bin/tacker-server ...
       152.57MB (1.86%) 156232 ... /usr/local/bin/tacker-conductor .
       146.67MB (1.79%) 150188 ... /usr/local/bin/neutron-server ...
       132.96MB (1.62%) 136148 ... /usr/local/bin/neutron-server ...
       129.08MB (1.58%) 132180 ... /usr/local/bin/heat-engine ...
       127.48MB (1.56%) 130544 ... /usr/local/bin/heat-engine ...
       122.16MB (1.49%) 125092 nova-apiuWSGI worker 1
       121.00MB (1.48%) 123900 neutron-openvswitch-agent ...
       119.50MB (1.46%) 122368 cinder-apiuWSGI worker 1
       ---(snip)---
     * `free -m` output
               total   used   free   shared   buff/cache   available
       Mem:     7955   7427    196       16          331         219
       Swap:    1022   1019      3

[2]: http://eavesdrop.openstack.org/irclogs/%23openstack-infra/
     %23openstack-infra.2020-11-25.log.html

Change-Id: I030ffd5fd11b7ca9abca56e85e449ed4c4d709bd
2020-12-15 06:08:08 +00:00

73 lines
2.2 KiB
Bash

# plugin.sh - Devstack extras script to install tacker
# Save trace setting
XTRACE=$(set +o | grep xtrace)
set -o xtrace
echo_summary "tacker's plugin.sh was called with args $1 and $2 ..."
. $DEST/tacker/devstack/lib/tacker
(set -o posix; set)
# check for service enabled
if is_service_enabled tacker; then
if [[ "$1" == "stack" && "$2" == "install" ]]; then
# Perform installation of service source
echo_summary "Installing Tacker"
install_tacker
elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
# Configure after the other layer 1 and 2 services have been configured
echo_summary "Configuring Tacker"
configure_tacker
create_tacker_accounts
elif [[ "$1" == "stack" && "$2" == "extra" ]]; then
# Initialize and start the tacker service
echo_summary "Initializing Tacker"
init_tacker
echo_summary "Starting Tacker API and conductor"
start_tacker
if is_service_enabled horizon; then
echo_summary "Installing tacker horizon"
tacker_horizon_install
fi
if [[ "${TACKER_MODE}" == "all" || -v IS_ZUUL_FT ]]; then
echo_summary "Setup initial tacker network"
tacker_create_initial_network
echo_summary "Check and download images for tacker initial"
tacker_check_and_download_images
echo_summary "Setup default VIM resources"
tacker_setup_default_vim_resources
if is_service_enabled ceilometer; then
echo_summary "Configure maintenance event types"
configure_maintenance_event_types
fi
fi
fi
if [[ "$1" == "unstack" ]]; then
# Shut down tacker services
if is_service_enabled horizon; then
echo_summary "Uninstall tacker horizon"
tacker_horizon_uninstall
fi
stop_tacker
fi
if [[ "$1" == "clean" ]]; then
# Remove state and transient data
# Remember clean.sh first calls unstack.sh
cleanup_tacker
fi
fi
# Restore xtrace
$XTRACE
# Tell emacs to use shell-script-mode
## Local variables:
## mode: shell-script
## End: