Monday, December 17, 2012

The Architecture of Salvus (or, a bunch of my favorite programs)

Components

  • VPN : tinc, connects all computers at all sites into one unified network address space with secure communication
  • SSL : stunnel
  • Client : CoffeeScript client library that runs in web browser
  • Load balancer : HAproxy
  • Database : Apache Cassandra-- distributed, NoSQL, fault tolerant; this is the *only* longterm non-stateless part of the system
  • Compute : VM's running some TCP servers (e.g., python2, sage, console, projects, python3, R, etc.)
  • Hub : written in Node; Sock.js server; connects with *everything* -- compute servers, Cassandra DB, other hubs, and clients.
  • HTTP server : nginx
  • Admin : python program that uses paramiko to start/stop everything, configure VM's, etc.
  • Cloud : (mostly) KVM virtual machines in various places, plus public clouds...

ASCII Art Diagram

   Client    Client    Client   Client  ...
     /|\
      |
   https://salv.us (stunnel, sock.js)
      |
      |
     \|/
 HAProxy load balancers ........                      Admin  
 /|\       /|\      /|\      /|\
  |         |        |        |
  |http1.1  |        |        |
  |         |        |        |
 \|/       \|/      \|/      \|/
 Hub<----> Hub<---->Hub<---> Hub  <----------->   Cassandra <-->  ...
           /|\      /|\      /|\
            |        |        |
   ---------|        |        | (tcp)
   |                 |        |
   |                 |        |
  \|/               \|/       \|/
 Compute          Compute  Compute   Compute ...

No comments:

Post a Comment