vert.x clustering on docker, coreos and etcd

Download Vert.x clustering on Docker, CoreOS and ETCD

Post on 21-Apr-2017

8.149 views

Category:

Internet

0 download

Embed Size (px)

TRANSCRIPT

  • Tim Nolet tim@magnetic.io

    Vert.X clustering on Docker, CoreOS and ETCD

    =+{ }+

    mailto:tim@magnetic.io

  • So whats 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

  • CoreOS- Just a Linux Distro

    - Run apps in containers

    - On the fly updating

    - Fast boot times

    - Systemd

    images: coreos.com

    http://coreos.com

  • ETCD- Distributed key/value store

    - Like a directory tree

    - JSON/REST API

    - Uses a Discovery URL

    images: coreos.com

    http://coreos.com

  • Docker- REALLY portable

    - Images/containers

    - JSON/REST API

    - Emits events!

  • Pre-alpha stack

    AWS / On premises

    CoreOS

    ETCD

    Docker

    CoreOSCoreOS

    DockerDocker DockerDockerDocker DockerDockerDocker

    Hazelcast

    DockerDockerVert.x DockerDockerVert.x DockerDockerVert.x

  • 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

  • Vamp- vamp bootstrap

    - vamp controller

    - vamp agent

    - vamp metrics

    - vamp docker

    - vamp discovery

    - vamp templates

    - vamp dashboard

    - etc. etc. etc

  • Vamp_agent (Vert.x module)cluster_boot.sh

    vamp_bootstrap

    run

    configure!

    1

    2 5

    3

    4

    Boot

    ETCD

    get/set pub. IP

    SYSTEMD

    pub. IP

    vamp_bootstrap.java

    download!

    6expose pub. IPs to other Vert.x instances

  • some code

  • 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

  • coreos

    Lets 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

  • and while thats running

  • the good parts- Vert.x with Docker/CoreOS/ETCD is cool because:

    - Size: in MBs and in complexity

    - Event bus makes distribution easy

    - polyglot works nice with the idea of micro services

  • 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

  • Ques;ons?

    we are

    hiring

    !