Dockerfile and supporting files for fully functional dockerized Openstack nodes for S3P Testing (scale, stability, performance, security) of OpenDaylight SDN controller used as network virtualization layer for OpenStack.
- Identify physical hosts. More is better for scale testing, but a single physical system can run all of the containers simultaneously
- service node (OpenStack infrastructure and control node)
- compute nodes (OpenStack compute nodes)
- Install Ubuntu 16.04 and docker on physical hosts
- Create linux bridges on hosts named br_mgmt and br_data
- deployment on a single physical server can leave the bridges with no physical interfaces
- multiple containers on one host may share the bridge
- for deployment on multiple physical servers, bond these bridges to network interfaces for management and tenant data, respectively
- Build the systemd container:
cd docker-devstack/systemd./build_systemd.sh
- Build the service node container:
cd docker-devstack/service- edit
build_service.shto reflect your docker image registry ./build_service.sh [tag name]
- Run the service node
./run_service.sh- the script
docker-devstack/docker/connect_container_to_networks.shwill create veth links from the container's net-namespace to the bridges created earlier. It will rename the container network interfaces, assign MAC & IP addresses to them. - Once the service node is running, a shell should be open at the prompt
stack@service-node: $
- Start stacking on the service node
- edit
/home/stack/service.odl.local.confas needed - run
./start.sh- devstack will download Linux packages and pip will install necessary components, OpenStack services will be set up and after about 10-20 minutes, the OpenStack control node should be running all required OpenStack services.
- While the service node is stacking, build the compute node:
cd docker-devstack/compute./build_compute.sh
- Run the compute node(s)
./run_compute.shto launch a compute node with default name- alternatively, create variables in your shell to reflect the correct values for:
IMAGE_REGISTRYIMAGE_REPOIMAGE_TAGHOST_ID(an integer representing the physical host)COMP_ID(an integer > 11 representing the compute host)- the COMP_ID should be greater than 11 because it will also be encoded in the IP and MAC addresses
- Once the service node has finished devstack, begin stacking in the compute hosts
/home/stack/start.sh- The first time a compute host has stacked, it should take more than 10 minutes
- After a successful stacking, uncomment the
OFFLINE=TrueandRECLONE=Falsedirectives in compute.odl.local.conf- subsequent restarts (
/home/stack/restart.sh) should only require about 20 seconds
- subsequent restarts (
- Clean the containers after a successful stack
docker-devstack/service/stop_and_clean_container.sh <Node name>- here is the name of the container e.g. service-node or compute-10-22
- Commit a stacked and cleaned container for faster deployment
- See https://docs.docker.com/engine/reference/commandline/commit/
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
- Interact with the OpenStack Horizon GUI
- through a docker port map at http://<physical_host_IP>:50080/dashboard
- on the command line of any openstack node