Jump to: navigation, search

Difference between revisions of "Neutron/LBaaS/Agent"

< Neutron‎ | LBaaS
Line 31: Line 31:
  
 
Brief Component/Workflow diagram:
 
Brief Component/Workflow diagram:
 +
 
[[Image:Quantum$$LBaaS$$Agent$Plugin-Agent_Architecture.png]]
 
[[Image:Quantum$$LBaaS$$Agent$Plugin-Agent_Architecture.png]]
 
== Implementation ==
 
== Implementation ==

Revision as of 14:49, 23 November 2012

Quantum Agent for LoadBalancing service

Scope of the document

This document describes Agent component of the Quantum's Loadbalancing service, defines requrements, architecture and some implementation details.

Requirements

Service agent is needed to add several important features to a service which operations are potentially time consuming such as:

  1. Asynchronous execution.
 Plugin is notified by agent when requested operation is complete. 
  1. Workload balancing.
 There could be serveral agents listening for quantum server messages thus in large deployments it allows splitting workload to several hosts.

Architecture

  1. Plugin part
    • a) Calling agent
    Plugin packs all required information in the json message and sends it over AMQP to durable message queue.
    The message is consumed by one of the running agents and corresponding call is made via one of the drivers in synchronous manner.
    After driver call completes agent sends message to the plugin with status information for modified object.
  • a) Receiving response
    Plugin should wait on another queue where responses are posted by the agent. 
    Information in response should allow plugin to uniquely identify object for which status of operation is returned.
    Plugin consumes response messages in synchronous manner one by one since their processing is not a time consuming operation.
  1. Agent part
  Agent should be able to consume messages in multithreaded manner. E.g. agent should allow execution of several operations at once.
  One technical difficulty of this is device sharing. Consider the case when several operations go for the same device. 
  Such operations should be executed sequentially rather than concurrently.

Brief Component/Workflow diagram:

File:Quantum$$LBaaS$$Agent$Plugin-Agent Architecture.png

Implementation