Skip to content

TritonDataCenter/manta-medusa

Repository files navigation

manta-medusa

This repository is part of the Joyent Manta project. For contribution guidelines, issues, and general documentation, visit the main Manta project page.

This repository contains the reflector server and in-job agent components of Medusa, the interactive session engine for the Joyent Manta storage and compute system. Manta is an object storage system built to run batch-oriented custom workloads on the storage nodes themselves. Medusa, in conjuction with the mlogin client software, enables users to run interactive workloads -- as if they were logging in to the storage server via SSH.

Active Branches

This repository is part of mantav1, the long term support maintenance version of Manta. Development is done on the mantav1 branch, the master branch is no longer used. See the mantav2 overview document for details on major Manta versions.

Components

The Reflector

This server marries up inbound connections from mlogin clients with inbound connections from a medusa-agent running in the context of a user's Marlin Job. As all connections are inbound, neither the User nor the Marlin Job need to be able to listen for connections on a publicly accessible IP address.

User:
+---------+           +---------+       +----------+
|         |websockets |         |       |          |
| mlogin  +----+----->| muskie0 +------>| medusa   |
|         |    :      |         |       | reflector|
+---------+    :      +---------+       +----------+
      x      (load       . . .               ^
     x      balanced) +---------+            |
    x          :      |         |            |
   xx    +-----+----->| muskieN +------------+
  xx     |            |         |
  x      |            +---------+       Marlin Job:
  x      |                              +----------+
  x      |websockets                    |          |
  x      +------------------------------+ medusa   |
  x                                     | agent    |
   xx                                  x+----------+
    xxxxx                           xxxx
        xxxxxxx           xxxxxxxxxxx
              xxxxxxxxxxxxx        ^
                                   |
       Interactive Shell Session --+

The Agent

Interactive sessions are a regular Map or Reduce task that runs the Medusa agent as the workload. During the build of Medusa, that agent is parcelled up in a self-expanding, self-executing shell archive. That archive, shipped with the server software, is PUT as a public Manta object at a well-known location so that jobs can include and run the current version.

License

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. For the full license text see LICENSE, or http://mozilla.org/MPL/2.0/.

Copyright 2019 Joyent, Inc.