Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Create a persistent config.  This means that configuration is maintained across crashes and reboots.  Also every configuration command sent to the router will ensure that all configuration items are still correct.
  • Implement a redundant VPC (Virtual private cloud)

Boot Process


Provisioning process

The management server sends two components to the router (via the normal communication channels that er hypervisor dependent).  A json file and a command to execute.

...

For instance the ipassociation command will send data to either add or remove an ip from the router.   The data in the son will be merged with the existing ips on the machine and either added or removed from the central configuration.    The central config files are stored in /etc/cloudstack

When the merge process is complete configure.py is called.  This will work through all configuration files in /etc/cloudstack and apply any changes to the servers actual configuration.   Thus each command execution causes the machines configuration to be checked and reapplied if necessary.  This is to ensure that the router's configuration remains consistent.

Boot Process

During the boot process, the init script cloud-early-config is invoked.   This script does many things and is, truthfully in desperate need of refactoring.  We chose not to do that at this stage as our changes to the provisioning process were already pretty invasive.
During the execution of this script the "cmd_line" sent to the router via the hypervisor is rewritten to a json file and stored in /var/cache/cloud.
For the machine types router, vpc_router and dhcpsvr the update_config.py script is invoked.  This causes two things to happen:
  • The basic configuration of the box is setup using the information passed to the router in the "cmd_line"
  • Any previous configuration already present from before the reboot of the box is also applied.  This means that routers can now happily survive being rebooted from outside cloudstack.  Something that was not previously the case.

 

Redundancy