0.0.23 • Published 10 years ago

jacc v0.0.23

Weekly downloads
1
License
WTFPL
Repository
github
Last release
10 years ago

Jacc - Just Another Cloud in the Cloud

Jacc targets the following user case:

  • web applications running behind a load balancing proxy
  • efficient hosting of several compentents, typically a cluser of application server, caching servers etc. A database cluster can also be hosted or use a DBaaS with backups etc. pre-configured
  • ready for production use with the redundance and reliability this requires

Jacc is NOT a Heroku type architeture with support for remote deployment. You are required to login to the server that hosts the web applications.

Jacc is a private cloud built from standard components such as docker.io, hipache and redis-dns. Docker is a linux containers architecture and hipache a high perforamnce web proxy. redis-dns provides an internal DNS between containers. Docker and hipache are provided by the team behind the dotCloud service.

The goal is to provide an architecture suitable for hosting a variety of components on a limited amount of server. Examples of components could be web applications build in PHP/Java/NodeJS/Ruby/Python etc. It could also include databases, caching systems, queue management etc. The limit is really only what's runs on the Linux flavours that docker supports.

Installation

Pre-requiresites:

  • docker version 0.7.1
  • redis
  • NodeJS (preferabley managed with nvm)
  • Python
  • make - for development only

Installation:

  1. Install with sudo npm install jacc -g
  2. Install redis: sudo apt-get install -y redis-server
  3. Then install supervisord, either using a linux package manager or simply with python package manager: sudo apt-get install -y supervisor (or with sudo pip install supervisor but then you need to setup supervisor as a service yourself)
  4. Locate the jacc installation in node_modules (typically in /usr/lib/node_modules/jacc)
  5. Update the IP adress in the file JACC_HOME/etc/redis-dns-config.json with the IP adress of the docker bridge (do ifconfig|grep -A 1 docker).
  6. Update the command section in the files JACC_HOME/etc/supervisor/*.conf with the path to the jacc installation
  7. Copy the hipache and redis-dns config files for supervisor and restart sudo cp JACC_HOME/etc/supervisor/*.conf /etc/supervisor/conf.d/ && sudo supervisorctl reload
  8. Check that hipache and redis-dns started with sudo supervisorctl status

Setup containers:

  1. Do jacc add <IMAGE_ID> <URL> <internal port> <DNS> followed by ./jacc.sh update to add an image and start a container. hipache and redis-dns configuration will be updated at the same time
  • STARTING CONTAINERS HAVE NOT BEEN IMPLEMENTED YET, START MANUALLY WITH docker run -d -dns=IP IMAGE_ID
  1. jacc list shows the configuration and jacc status the running containers

docker configuration:

docker need to be configured to open up the HTTP API. The start script needs to include this flag DOCKER_OPTS=-H 127.0.0.1:4243. For ubuntu, this is changed in /etc/init/docker.conf. Now the docker command line tool needs the flag -H=tcp://127.0.0.1:4243. Create an alias for simplcity: alias docker='docker -H=tcp://127.0.0.1:4243'. Place this in your .profile etc.

Development

NOTE: The overall design principle for Jacc is to re-use what's already out there. Don't re-invent the wheel.

An easy way to get started quickly is to create a virtual machine using Vagrant. This repo has everything you need: https://github.com/colmsjo/docker. You can of course setup docker and the other required modules yourself.

Run make install to install everything in the current directory.

Jacc comes with a test suite. The first step when developing is to make sure that the test runs without any erros.

A number of environment variables needs to be set. You can for instance use the ./test/setenv.template file showed below:

export JACC_TEST_CONTAINERID=$abcdefghijkl
export JACC_TEST_URL="app1.jacc.local"
export JACC_TEST_PORT="80"
export JACC_TEST_DNS="app1.local"

Then do source ./test/setenv followed by make to kickoff the test suite.

Troubleshooting

  1. 'No running containers with ID: XXX' - This is most likely caused by a problem connecting to docker. Does docker ps and curl http://localhost:4243/containers/json show containers?
0.0.23

10 years ago

0.0.22

10 years ago

0.0.21

10 years ago

0.0.20

10 years ago

0.0.16

10 years ago

0.0.19

10 years ago

0.0.18

10 years ago

0.0.17

10 years ago

0.0.15

10 years ago

0.0.14

10 years ago

0.0.13

10 years ago

0.0.12

10 years ago

0.0.11

10 years ago

0.0.1-o

10 years ago

0.0.10

10 years ago

0.0.9

10 years ago

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

11 years ago