Skip to content

Commit 0c61969

Browse files
committed
Update.
1 parent cf4fb18 commit 0c61969

File tree

1 file changed

+70
-25
lines changed

1 file changed

+70
-25
lines changed

README.md

Lines changed: 70 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,58 @@
1-
# Caravela: A Cloud @ Edge [![Build Status](https://travis-ci.com/Strabox/caravela.svg?token=8iyx88Q98Rgp5aaUbkKN&branch=master)](https://travis-ci.com/Strabox/caravela) [![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) ![](https://img.shields.io/badge/awesome-%E2%9C%93-ff69b4.svg?style=flat-square)
1+
# Caravela: Cloud @ Edge [![Build Status](https://travis-ci.com/Strabox/caravela.svg?token=8iyx88Q98Rgp5aaUbkKN&branch=master)](https://travis-ci.com/Strabox/caravela) [![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) ![](https://img.shields.io/badge/awesome-%E2%9C%93-ff69b4.svg?style=flat-square)
22

33
## Table of Contents
44

5-
- [What is CARAVELA ?](https://github.com/Strabox/CARAVELA-A-Cloud-at-Edge#what-is-caravela-)
6-
- [Getting Started](https://github.com/Strabox/CARAVELA-A-Cloud-at-Edge#getting-started)
7-
- [Contributing](https://github.com/Strabox/CARAVELA-A-Cloud-at-Edge#contributing)
8-
- [License](https://github.com/Strabox/CARAVELA-A-Cloud-at-Edge#license)
5+
- [What is Caravela ?](https://github.com/Strabox/caravela#what-is-caravela-)
6+
- [Advantages over Docker Swarm](https://github.com/Strabox/caravela#advantages-over-docker-swarm-)
7+
- [Getting Started](https://github.com/Strabox/caravela#getting-started)
8+
- [Install - Go Toolchain](https://github.com/Strabox/caravela#install-go-toolchain)
9+
- [Install - From Source](https://github.com/Strabox/caravela#install-from-source)
10+
- [Create - Create/Bootstrapping a Caravela instance](https://github.com/Strabox/caravela#create-create/bootstrapping-a-caravela-instance)
11+
- [Join - Join a Caravela instance](https://github.com/Strabox/caravela#join-join-a-caravela-instance)
12+
- [Run - Deploy containers](https://github.com/Strabox/caravela#run-deploy-containers)
13+
- [Stop - Stop containers](https://github.com/Strabox/caravela#stop-stop-containers)
14+
- [List - List container deployed](https://github.com/Strabox/caravela#list-list-containers-deployed)
15+
- [Contributing](https://github.com/Strabox/caravela#contributing)
16+
- [License](https://github.com/Strabox/caravela#license)
917

10-
## What is CARAVELA ?
18+
## What is Caravela ?
1119

12-
CARAVELA is a prototype container cloud management/orchestrator platform, inspired by the Docker Swarm and Kubernetes orchestrators,
13-
but with a fully decentralized, hence scalable architecture in order to be deployed in a Edge Computing environment.
20+
Caravela is a prototype for a **Docker container orchestrator platform**, inspired by the Docker Swarm and Kubernetes orchestrators,
21+
but with a fully decentralized architecture, resource discovery and scheduling algorithms, that are scalable in order to be deployed in a Edge Computing environment.
1422

15-
This work is being developed in the context of my Masters Degree Thesis in Computer Science and Engineering @ Instituto Superior Técnico - Lisbon.
23+
This work was developed in the context of [my Masters Degree Thesis](https://github.com/Strabox/caravela-thesis) in Computer Science and Engineering @ [Instituto Superior Técnico - University of Lisbon.](https://tecnico.ulisboa.pt/en/)
1624

1725
The main goal of the work was to test resource constrained scheduling requests evaluating its performance compared
18-
with centralized versions.
26+
with centralized versions like Docker Swarm. In order to test its performance and scalability with thousands of nodes,
27+
[Caravela-Sim](https://github.com/Strabox/caravela-sim) was developed.
28+
29+
### Advantages over Docker Swarm
30+
31+
- Caravela has a P2P architecture (on top of the Chord P2P overlay). All the algorithms that run on top it are fully
32+
decentralized. Caravela is highly scalable and failure tolerant. It has no Single Point of Failure (SPoF).
33+
- In the thesis we prove that for a network with **1,048,576** nodes providing resources, only Caravela
34+
could continue to operate offering a very good performance at all levels. After a few thousands nodes Docker Swarm
35+
master nodes would crush due to the load of requests.
36+
- On contrary of Swarm user's can request the speed of the node's CPU where the container must be deployed.
37+
- We extended the stack deployment of swarm to offer a request-level scheduling policy. A user can request in
38+
a stack deployment for a set of container to be deployed in the same node (e.g. due to low latency requirements),
39+
we called this **co-location** policy. User can also require that the containers must be spread over different nodes
40+
(e.g. due to resilience requirements), we called this **spread** policy. These proeprties are orthogonal to the system
41+
level scheduling policies (**binpack** and **spread**) that are supported in Docker Swarm and also in Caravela.
1942

2043
## Getting Started
2144

22-
This project is a standalone middleware to orchestrate Docker containers but it is highly inspired in the
23-
Docker, Swarm and Kubernetes projects so the APIs and the CLI try to mimic a small subset of commands/features from
24-
that platforms. So it is easily migrate container's deployment for a CARAVELA instance.
45+
This project is a standalone middleware to orchestrate Docker containers, but it is highly inspired in the
46+
Docker, Swarm and Kubernetes projects so the APIs and the CLI mimic a small. but fundamental, subset of commands/features from
47+
that platforms. So it is easily migrate container's deployment for a Caravela instance.
2548

26-
### Compile From Source
49+
### Install - Go Toolchain
50+
51+
Using the go tool chain it is possible to easily install Caravela in Go's local environment:
52+
53+
`go get -u github.com/Strabox/caravela`
54+
55+
### Install - From Source
2756

2857
The Makefile in the project's root makes all the necessary actions to easily compile, develop, test and deploy.
2958

@@ -37,32 +66,48 @@ There are two ways to build the project using the Makefile:
3766
- Building the project in the Makefile directory (creating the executable in the directory)
3867
1. `make build`
3968

40-
### Create/Bootstrapping a CARAVELA instance
69+
### Create - Create/Bootstrapping a Caravela instance
4170

42-
A CARAVELA instance can be bootstrapped with a single node. The command necessary is the following one where
71+
A Caravela instance can be bootstrapped with a single node. The command necessary is the following one where
4372
<machine_ip> is the local ip address of the machine.
4473

74+
**Important:** This command should be issued to run as daemon because it will run all the Caravela's node operations!!
75+
4576
`caravela create <machine_ip>`
4677

47-
### Join a CARAVELA instance
78+
### Join - Join a Caravela instance
4879

4980
To enter and start supplying/use resources, the following command gets the job done. It is only needed to replace
50-
`<machine_ip>` with the local IP address of the machine and `<caravela_machine_ip>` with the IP address of a machine that is
51-
already participating in a CARAVELA instance.
81+
`<caravela_machine_ip>` with the IP address of a machine that is already participating in a Caravela instance.
82+
83+
**Important:** This command should be issued to run as daemon because it will run all the Caravela's node operations!!
84+
85+
`caravela join <caravela_machine_ip>`
86+
87+
### Run - Deploy containers
88+
89+
To deploy a container in Caravela that requires: a fast CPU (FastCPU: CPUClass = 1, SlowCPU: CPUClass = 0),
90+
2 cores, 256MB of RAM and the port mapping 8080:80 the following command can be issued. The `<container_image>` parameter
91+
should be replaced by a container's image allocated in DockerHub, e.g. `strabox/caravela:latest`.
92+
93+
`caravela run -cpuClass 1 -cpus 2 -memory 256 -p 8080:80 <container_image>`
94+
95+
### Stop - Stop containers
5296

53-
`caravela join <machine_ip> <caravela_machine_ip>`
97+
To stop containers it is only necessary to replace `<containerID_1>` for the container's ID. The container's IDs
98+
can be obtained with the command described in next section.
5499

55-
### Run, Stop Containers and more
100+
`caravela container stop <containerID_1> <containerID_N>`
56101

57-
#### Run
102+
### List - List containers deployed
58103

59-
`caravela run -cpus 2 -memory 256 <image>`
104+
To list all the container deployed in Caravela the following command outputs all of the information about each one.
60105

61-
#### Stop
106+
`caravela container ps`
62107

63108
## Contributing
64109

65-
TODO
110+
Use the GitHub [issues tracker](https://github.com/Strabox/caravela/issues) for exposing doubts, recommendations and questions.
66111

67112
## License
68113

0 commit comments

Comments
 (0)