You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@mesos.apache.org by "Dominic Hamon (JIRA)" <ji...@apache.org> on 2015/02/04 20:24:35 UTC

[jira] [Resolved] (MESOS-181) Virtual Machine Isolation Module

     [ https://issues.apache.org/jira/browse/MESOS-181?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dominic Hamon resolved MESOS-181.
---------------------------------
    Resolution: Won't Fix

Sadly, our isolation efforts have diverged from the initial effort here. If we do ever provide VM isolation, we'll need to carefully determine requirements first and then develop a solution.

> Virtual Machine Isolation Module
> --------------------------------
>
>                 Key: MESOS-181
>                 URL: https://issues.apache.org/jira/browse/MESOS-181
>             Project: Mesos
>          Issue Type: Story
>          Components: isolation, slave
>         Environment: Ubuntu 11.04, Ubuntu 11.10
>            Reporter: Charles Earl
>            Priority: Minor
>              Labels: virtualiztion
>
> Earlier in the year I implemented a virtual machine isolation module. This module uses lib-virt to launch and manage virtual machine containers. The code is still rough and have done basic testing with the Spark example. 
> This code works with the KVM (http://www.linux-kvm.org/page/Main_Page) virtual machine manager. I've placed the relevant code in a branch called mesos-vm, for now located at https://github.com/charlescearl/VirtualMesos. The code is based upon the mesos lxc isolation module that is located in src/slave/lxc_isolation_module.cpp/.hpp. My code based on the mesos master branch dated Wed Nov 23 12:02:07 2011 -0800, commit 059aabb2ec5bd7b20ed08ab9c439531a352ba3ec. I'll generate a patch soon for this. Suggestions appreciated on whether this is the appropriate branch/commit to patch against.
> Most of the implementation is contained in vm_isolation_module.cpp and vm_isolation_module.hpp and there are some minor additions in launcher to handle setup of the environment for the virtual machine. I use the libvirt (http://libvirt.org/) library, to manage the virtual machine container in which the jobs are executed.
> Dependencies
> The code has been tested on Ubuntu 11.04 and 11.10 and depends on libpython2.6 and libvirt0
> Configuration of the virtual machine container
> The virtual machine invocation depends upon a few configuration assumptions:
>  1.   ssh public keys installed on the container. I assume that the container is setup to allow password-less secure access.
>   2.  Directory structure on the container matches the servant machine. For example, in invoking a spark executor, assume that the paths match the setup on the container host.
> Running it
> In the $MESOS_HOME/conf/mesos.conf file add the line 
>    isolation=vm
> to use the virtual machine isolation.
> The Mesos slave is invoked with the isolation parameter set to vm. For example
>      sudo bin/mesos-slave -m mesos://master@mesos-host:5050 -w 9839 --isolation=vm
> Rough description of how it works
> The `vm_isolation_module` class forks a process that in turn launches a virtual machine.  A routine  located in bin called find_addr.pl is responsible for figuring out the IP address of the launched virtual machine. This is probably not portable since it is explicitly looking for entry in the virbr0 network.
> A script vmLauncherTemplate.sh located in bin assists the the vmLauncher method to setup the environment for launching tasks inside of the virtual machine. The vmLauncher method uses vmLauncherTemplate.sh  to create a tasks specific shell vmLauncherTemplate-<task_id>.sh, which is copied to the running guest and used to run the executor inside the VM. This communicates with the slave on the host.
> Comments and suggestions on improvements and next directions are appreciated!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)