Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
The Marionette Collective


    Middleware Concepts
            and
       Message Flow


  http://marionette-collective.o...
The Marionette Collective




Connectivity
Traditional Multi-Threaded
Delegate comms to Middleware
Delegate comms to Middleware
Delegate comms to Middleware
Delegate comms to Middleware
The Marionette Collective




Types of Message
Types of Message - Queued
Types of Message - Queued
Types of Message - Broadcast
The Marionette Collective



  Components
      and
  Terminology
Nodes

Physical
servers
 being
managed




           mcollective-0.4.7.noarch.rpm
                       mcollective-comm...
Server

mcollectived

 The ruby
  based
 daemon
 on every
  node
               mcollective-0.4.7.noarch.rpm
             ...
Agent

    service.rb

Small ruby classes
   that manage
services, packages,
       etc.

  Hosted by the
                ...
Client

Include MCollective::RPC


Any component
   that sends
  requests to
     servers.

                           mco...
Collective

 Combination of
  nodes, servers,
agents, middleware
    and clients
Connectivity Plugin

Communication
     between
all components.

Many possible.

rubygem stomp
The Marionette Collective




 Anatomy of a
 RPC request
The Marionette Collective



* Discover with filter
* Send request with filter
* Wait for responses matching discovery


   ...
Request - Discovery - Request ID

{:msgtime=>1280270404,
 :requestid=>"a48b4f84d66ff0c30c621d544750a081",
 :msgtarget=>"/t...
Request - Discovery - Target

{:msgtime=>1280270404,
 :requestid=>"a48b4f84d66ff0c30c621d544750a081",
 :msgtarget=>"/topic...
Request - Discovery - Filter

{:msgtime=>1280270404,
 :requestid=>"a48b4f84d66ff0c30c621d544750a081",
 :msgtarget=>"/topic...
Request - Discovery - Body

{:msgtime=>1280270404,
 :requestid=>"a48b4f84d66ff0c30c621d544750a081",
 :msgtarget=>"/topic/m...
Request - Discovery - Reply

{:msgtime=>1280270802,
 :requestid=>"a48b4f84d66ff0c30c621d544750a081",
 :senderagent=>"disco...
Request - RPC Request - Filter
{:msgtime=>1280271069,
 :filter=>
  {"identity"=>[],
   "fact"=>[{:value=>"za", :fact=>"coun...
Request - RPC Request - Target
{:msgtime=>1280271069,
 :filter=>
  {"identity"=>[],
   "fact"=>[{:value=>"za", :fact=>"coun...
Request - RPC Request - RPC Body
{:msgtime=>1280271069,
 :filter=>
  {"identity"=>[],
   "fact"=>[{:value=>"za", :fact=>"co...
Request - RPC Reply


{:msgtime=>1280272138,
 :requestid=>"3b57f528746828c9f77d2d1956b94eb9",
 :body=> {:statuscode => 0,
...
Upcoming SlideShare
Loading in …5
×

Architecture, Flow and Terminology

46,125 views

Published on

Presentation detailing the architecture, middleware use, components and terminology of MCollective.

Additionally data flow and packet details of a full RPC request is shown.

Published in: Technology

Architecture, Flow and Terminology

  1. The Marionette Collective Middleware Concepts and Message Flow http://marionette-collective.org
  2. The Marionette Collective Connectivity
  3. Traditional Multi-Threaded
  4. Delegate comms to Middleware
  5. Delegate comms to Middleware
  6. Delegate comms to Middleware
  7. Delegate comms to Middleware
  8. The Marionette Collective Types of Message
  9. Types of Message - Queued
  10. Types of Message - Queued
  11. Types of Message - Broadcast
  12. The Marionette Collective Components and Terminology
  13. Nodes Physical servers being managed mcollective-0.4.7.noarch.rpm mcollective-common-0.4.7.noarch.rpm
  14. Server mcollectived The ruby based daemon on every node mcollective-0.4.7.noarch.rpm mcollective-common-0.4.7.noarch.rpm
  15. Agent service.rb Small ruby classes that manage services, packages, etc. Hosted by the mcollective-0.4.7.noarch.rpm server mcollective-common-0.4.7.noarch.rpm
  16. Client Include MCollective::RPC Any component that sends requests to servers. mcollective-client-0.4.7.noarch.rpm mcollective-common-0.4.7.noarch.rpm
  17. Collective Combination of nodes, servers, agents, middleware and clients
  18. Connectivity Plugin Communication between all components. Many possible. rubygem stomp
  19. The Marionette Collective Anatomy of a RPC request
  20. The Marionette Collective * Discover with filter * Send request with filter * Wait for responses matching discovery mc-service -W country=za httpd status
  21. Request - Discovery - Request ID {:msgtime=>1280270404, :requestid=>"a48b4f84d66ff0c30c621d544750a081", :msgtarget=>"/topic/mcollective.discovery.command", :callerid=>"cert=rip", :filter=> {"identity"=>[], "fact"=>[{:fact=>"country", :value=>"za"}], "agent"=>[“service”], "cf_class"=>[]}, :senderid=>"nephilim.ml.org", :body=>"ping", :hash=> "xxxxx"} mc-service -W country=za httpd status
  22. Request - Discovery - Target {:msgtime=>1280270404, :requestid=>"a48b4f84d66ff0c30c621d544750a081", :msgtarget=>"/topic/mcollective.discovery.command", :callerid=>"cert=rip", :filter=> {"identity"=>[], "fact"=>[{:fact=>"country", :value=>"za"}], "agent"=>[“service”], "cf_class"=>[]}, :senderid=>"nephilim.ml.org", :body=>"ping", :hash=> "xxxxx"} mc-service -W country=za httpd status
  23. Request - Discovery - Filter {:msgtime=>1280270404, :requestid=>"a48b4f84d66ff0c30c621d544750a081", :msgtarget=>"/topic/mcollective.discovery.command", :callerid=>"cert=rip", :filter=> {"identity"=>[], "fact"=>[{:fact=>"country", :value=>"za"}], "agent"=>[“service”], "cf_class"=>[]}, :senderid=>"nephilim.ml.org", :body=>"ping", :hash=> "xxxxx"} mc-service -W country=za httpd status
  24. Request - Discovery - Body {:msgtime=>1280270404, :requestid=>"a48b4f84d66ff0c30c621d544750a081", :msgtarget=>"/topic/mcollective.discovery.command", :callerid=>"cert=rip", :filter=> {"identity"=>[], "fact"=>[{:fact=>"country", :value=>"za"}], "agent"=>[“service”], "cf_class"=>[]}, :senderid=>"nephilim.ml.org", :body=>"ping", :hash=> "xxxxx"} mc-service -W country=za httpd status
  25. Request - Discovery - Reply {:msgtime=>1280270802, :requestid=>"a48b4f84d66ff0c30c621d544750a081", :senderagent=>"discovery", :body=>"pong", :senderid=>"my.machine.co.za", :msgtarget=>"/topic/mcollective.discovery.reply", :hash=> "xxx"} mc-service -W country=za httpd status
  26. Request - RPC Request - Filter {:msgtime=>1280271069, :filter=> {"identity"=>[], "fact"=>[{:value=>"za", :fact=>"country"}], "agent"=>["service"], "cf_class"=>[]}, :requestid=>"3b57f528746828c9f77d2d1956b94eb9", :msgtarget=>"/topic/mcollective.service.command", :callerid=>"cert=rip", :body=> {:agent => “service" :action => “status”, :service => “httpd”}, :senderid=>"nephilim.ml.org", :hash=> "xxxx"} mc-service -W country=za httpd status
  27. Request - RPC Request - Target {:msgtime=>1280271069, :filter=> {"identity"=>[], "fact"=>[{:value=>"za", :fact=>"country"}], "agent"=>["service"], "cf_class"=>[]}, :requestid=>"3b57f528746828c9f77d2d1956b94eb9", :msgtarget=>"/topic/mcollective.service.command", :callerid=>"cert=rip", :body=> {:agent => “service" :action => “status”, :service => “httpd”}, :senderid=>"nephilim.ml.org", :hash=> "xxxx"} mc-service -W country=za httpd status
  28. Request - RPC Request - RPC Body {:msgtime=>1280271069, :filter=> {"identity"=>[], "fact"=>[{:value=>"za", :fact=>"country"}], "agent"=>["service"], "cf_class"=>[]}, :requestid=>"3b57f528746828c9f77d2d1956b94eb9", :msgtarget=>"/topic/mcollective.service.command", :callerid=>"cert=rip", :body=> {:agent => “service" :action => “status”, :service => “httpd”}, :senderid=>"nephilim.ml.org", :hash=> "xxxx"} mc-service -W country=za httpd status
  29. Request - RPC Reply {:msgtime=>1280272138, :requestid=>"3b57f528746828c9f77d2d1956b94eb9", :body=> {:statuscode => 0, :statusmsg => “OK”, :data{:status => “running"}} :senderagent=>"service", :senderid=>"my.machine.co.za", :hash=> "xxxxx", :msgtarget=>"/topic/mcollective.service.reply"} mc-service -W country=za httpd status

×