This talk was held at the Vert.x Meetup Amsterdam on 30-07-2014. The subject is on how to get a Vert.X cluster running in Docker containers running on CoreOS without any manual configuration.
2. So what’s magne;c.io?
- Next-gen e-commerce platform aimed at the
enterprise market
- Integrate Continuous Delivery from the ground up
- Cocktail of PaaS, containers and micro services
3. CoreOS
- Just a Linux Distro
- Run apps in containers
- On the fly updating
- Fast boot times
- Systemd
images: coreos.com
4. ETCD
- Distributed key/value store
- Like a directory tree
- JSON/REST API
- Uses a Discovery URL
images: coreos.com
7. AWS / Vagrant / Bare Metal
CoreOS Box
Docker
JVM / Vert.x
priv. IP pub. IP
pub. IPpriv. IP
priv. IP pub. IP
bootstrapping the event bus:
Russian dolls
11. hey presto…
!
██╗ ██╗ █████╗ ███╗ ███╗██████╗
██║ ██║██╔══██╗████╗ ████║██╔══██╗
██║ ██║███████║██╔████╔██║██████╔╝
╚██╗ ██╔╝██╔══██║██║╚██╔╝██║██╔═══╝
╚████╔╝ ██║ ██║██║ ╚═╝ ██║██║
╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝
version 1.1
by magnetic.io
!
==> Starting cluster bootstrap...
==> info: Hazelcast port => 5701
==> info: Vertx Eventbus port => 5702
==> info: ETCD host => 10.0.42.1
==> info: ETCD port => 4001
==> info: ETCD base path => /vamp/bootstrap
==> info: Public IP => 172.17.8.103
==> info: Physical hostname => core-03
==> info: Container hostname => f9dc53532ff4
==> info: Vertx module to run => vamp-agent-0.1.0
==> info: Connecting to ETCD
==> info: Connected to ETCD at 10.0.42.1:4001
==> info: Vamp Bootstrap will try to cluster with started remote host 172.17.8.101
==> info: Starting Vamp Bootstrap with module vamp-agent-0.1.0
==> info: Waiting for Vamp Bootstrap to come online...
==> info: Vamp Bootstrap was started with PID 24 and public IP 172.17.8.103
12. coreos
Let’s boot a cluster on AWS!
vamp_loadbalancer
vamp_agent
coreos
vamp_agentvamp_agent
coreos
vamp_agentvamp_agent
coreos
vamp_agent
autoscale
REST
coreos
vamp_
controller
three AV zones
traffic
14. …the good parts
- Vert.x with Docker/CoreOS/ETCD is cool because:
- Size: in MB’s and in complexity
- Event bus makes distribution easy
- polyglot works nice with the idea of micro
services
15. …the bad parts
- Once it becomes complex, boilerplate rises
- ‘Actor-like’ maybe to coarse and without the
build in ‘reactive’ stuff which Akka has
- Not enough control / insight over the event bus
as a system