You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
14
22
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/)
16
24
17
25
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.
19
42
20
43
## Getting Started
21
44
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.
25
48
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
27
56
28
57
The Makefile in the project's root makes all the necessary actions to easily compile, develop, test and deploy.
29
58
@@ -37,32 +66,48 @@ There are two ways to build the project using the Makefile:
37
66
- Building the project in the Makefile directory (creating the executable in the directory)
38
67
1.`make build`
39
68
40
-
### Create/Bootstrapping a CARAVELA instance
69
+
### Create - Create/Bootstrapping a Caravela instance
41
70
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
43
72
<machine_ip> is the local ip address of the machine.
44
73
74
+
**Important:** This command should be issued to run as daemon because it will run all the Caravela's node operations!!
75
+
45
76
`caravela create <machine_ip>`
46
77
47
-
### Join a CARAVELA instance
78
+
### Join - Join a Caravela instance
48
79
49
80
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`.
0 commit comments