Questions about distributed processing


Hi all

I have a couple of (possibly related) questions about how the distributed processing works between multiple appliances in a zone.

The first is regarding druby. I see that just about all objects hanging off of $evm are DRb::DRbObject stubs, but I only ever see the druby remote URIs containing the IP This leads me to ask - what is druby used for - apparently not inter-appliance communication? Is it to provided the separation between the Automate engine and the back-end Rails code?

The second question is regarding distributed Automate code processing. I have 2 worker appliances in a zone, one running the Provider roles, and the other running the Automation Engine role. They may not necessarily have direct connectivity to each other (or do they need this?) - but both connect to the VMDB appliance on port 5432.

If my automate method does something (like vm.start) that would result in an API call to the Provider (eg vCenter), how is the inter-process communication between the 2 appliances handled?



DRuby is currently used as the communication mechanism between a Worker and the Automate Method it spawns. In the future, we will most likely replace this with REST API calls.

All the inter-process workers communicate via PostgreSQL accessible on port 5432. In your example, vm.start would update something in the database that other workers on all appliances can see.


Thanks for the answer.