Giter Club home page Giter Club logo

p.haul's Introduction

p.haul

Process HAULer -- a tool to live-migrate containers and processes

The live-migration idea is quite simple. To live migrate a task one needs to

  • stop it and save its state into image file(s)
  • make images available on the remote host
  • recreate task on it from the images

This is what p.haul does. It heavily uses CRIU (http://criu.org) to do state dump and restore. Task's stopped time is decreased using the CRIU's pre-dump action.

Get p.haul ready

  1. Install criu or put criu binary location to $PATH.

  2. Install protobuf-compiler and python-protobuf packages.

  3. Install p.haul by running $ python setup.py install or just use it without installing.

For more information read the P.Haul-related pages on the CRIU wiki (http://criu.org/Category:P.Haul).

How to contribute

The p.haul patches should be sent to CRIU development mailing list (https://openvz.org/mailman/listinfo/criu) with "p.haul" prefix. Configure your local git repository using following command to set subject prefix automatically:

  • $ git config format.subjectprefix "PATCH p.haul"

Before sending patches please make sure your code formatted according to project coding style (we use PEP8 with some exceptions) and your changes don't introduce linter warnings.

How to run flake8 linter to verify p.haul:

  • $ yum install python-setuptools
  • $ easy_install pip
  • $ pip install flake8
  • $ make lint

BUGs

All BUGs are to be reported on the [email protected] mailing list. To [un]subscribe goto http://lists.openvz.org/mailman/listinfo/criu)

p.haul's People

Contributors

adrianreber avatar arthurlockman avatar avagin avatar cyrillos avatar dmitry-guryanov avatar efiop avatar huikang avatar snorch avatar veruu avatar xemul avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

p.haul's Issues

Exception: docker restore failed

Hi. I use the latest version p.haul tool to migration the number-printer docker container from one host to another, but in the destination host, in the final restore stage, an Exception occurred with the message: docker restore failed.

And here is the log:

...
12:01:38.206: 2064: Container rootfs: /var/lib/docker/aufs/mnt/a4447ddbda3f0140d5b54f90527f523e11f884c5b1f9e0585382e6024307af2c
12:01:38.206: 2064: Container config: /var/lib/docker/containers/a4447ddbda3f0140d5b54f90527f523e11f884c5b1f9e0585382e6024307af2c
12:01:38.206: 2064: Container meta: /var/run/docker/execdriver/native/a4447ddbda3f0140d5b54f90527f523e11f884c5b1f9e0585382e6024307af2c
Traceback (most recent call last):
  File "/root/p.haul/phaul/xem_rpc.py", line 42, in work
    res = getattr(self._master, "rpc_" + data[1])(*data[2])
  File "/root/p.haul/phaul/service.py", line 120, in rpc_restore_from_images
    self.htype.final_restore(self.img, self.criu_connection)
  File "/root/p.haul/phaul/p_haul_docker.py", line 183, in final_restore
    raise Exception("docker restore failed")
Exception: docker restore failed
...

And when I tried to restore the destination host's container by manually, another error occurred:

# docker restore --image-dir=/var/local/p.haul-fs/rst-kb3qan-17.07.28-12.01/img/1  a4447ddbda3f
Error response from daemon: Cannot restore container a4447ddbda3f: [2] Container does not exist: open /var/run/docker/execdriver/native/a4447ddbda3f0140d5b54f90527f523e11f884c5b1f9e0585382e6024307af2c/state.json: no such file or directory
Error: failed to restore one or more containers

Here is my docker version:

# docker version
Client:
 Version:      1.9.0-dev
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   59c375a
 Built:        Wed Aug 12 16:58:42 UTC 2015
 OS/Arch:      linux/amd64
 Experimental: true

Server:
 Version:      1.9.0-dev
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   59c375a
 Built:        Wed Aug 12 16:58:42 UTC 2015
 OS/Arch:      linux/amd64
 Experimental: true

criu version:

# criu -V
Version: 2.2
GitID: v2.2

I have no idea about the solution. How to solve this bug?
Thanks in advance!

About live migration

Hi
I checked this wiki "https://criu.org/Live_migration", It looks like only different of normal migration is it keep the original process in stopped status. I try to install p.haul and encounter some trouble, also it looks like nobody is maintaining it anymore. Is it that possible I can do myself a live migration script since use criu is quite easy? Is there any more material about how to do live migration using Criu?

Thanks

the HOWTO tutorial does not work for me

I'm following the page https://github.com/xemul/p.haul/blob/master/test/docker/HOWTO

the docker version is 17.03.1-ce, installed at /usr/bin/docker
criu version is 3.4, installed by make and make install

Following the mtouch HOWTO step 0, protobuf & protobuf-python is installed when following CRIU installation guidance. python-rpyc is installed via pip install rpyc.

Then on both nodes, create CRIU_dir directory and command sudo criu service -o CRIU_dir/log -v4 --daemon
on destination node, start p.haul service ./p.haul-wrap service

Log for CRIU is

(00.000037) Version: 3.4 (gitid 0)
(00.000074) Warn (criu/cr-service.c:1113): Binding to local dir address!
(00.000105) The service socket is bound to ./criu_service.socket
(00.000436) Waiting for connection...

Log for p.haul is

Waiting for connection...

Am I missing something? Appreciate for your help

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.