Mesos, Marathon, the cloud and 10 data centers – How to talk to each other?

I’ve been looking into Mesos, Marathon and Chronos combo to host a large number of websites. In my head I should be able to type a few commands into my laptop, and wait about 30 minutes for the thing to build and deploy.

My only issue, is that my resources are scattered across multiple data centers, numerous cloud accounts, and about 6 on premises places. I see no reason why I can’t control them all from my laptop — (I have serious power and control issues when it comes to my hardware!)

  • Docker compose not finding my index.js
  • Parsing error on salt docker-formula while using composeng
  • Fail to set ulimit inside docker container
  • Docker build error with vue-cli Webpack boilerplate
  • Docker build argument
  • How to use nested docker.image('test_image').inside() in a Jenkins pipeline
  • I’m thinking that my best approach is to build the brains in the cloud, (zoo keeper and at least one master), and then add on the separate data centers, but I am yet to see any examples of a distributed cluster, where not all the nodes can talk to each other.

    Can anyone recommend a way of doing this?

  • Find host ip from a docker container running in boot2docker / osx
  • Docker compose version 2.1+ on mac
  • How to copy a folder from docker to other folder?
  • Copy file from local machine to docker
  • How to create multiple guest session on ubuntu or others linux distros?
  • Couldn't resolve host within docker container and java process
  • 2 Solutions collect form web for “Mesos, Marathon, the cloud and 10 data centers – How to talk to each other?”

    I’ve got a setup like this, that i’d like to recommend:

    • Source code, deployment scripts and dockerfiles in GIT
    • Each webservice has its own directory and comes together with a dockerfile to containerize it
    • A build script (shell script running docker builds) builds all the docker containers, of which all images are pushed to a docker image repository
    • A ansible deploy deploys all the containers remotely to a set of VPSes. (You use your own deployment procedure, that fits mesos/marathon)
    • As part of the process, a activeMQ broker is deployed to the cloud (yep, in a container). While deploying, it supplies each node with the URL of the broker they need to connect to. In your setup you could instead use ZooKeeper or etcd for example.

    I am also using jenkins to do automatic rebuilds and to run deploys whenever there has been GIT commits, but they can also be done manually.

    Rebuilds are lightning fast, and deploys dont take much time either. I can replicate everything I have in my repository endlessly and have zero configuration.

    To be able to do a new deploy, all I need is a set of VPSs with docker daemons, and some datastores for persistence. Im not sure if this is something that you can replace with mesos, but ansible will definitely be able to install a mesos cloud for you onto your hardware.

    All logging is being done with logstash, to a central logging server.

    i have setup a 3 master, 5 slave, 1 gateway mesos/marathon/docker setup and documented here
    https://github.com/debianmaster/Notes/wiki/Mesos-marathon-Docker-cluster-setup-on-RHEL-7-with-three-master

    this may help you in understanding the load balancing / scaling across different machines in your data center

    1) masters can also be used as slaves
    2) mesos haproxy bridge script can be used for service discovery of the newly created services in the cluster
    3) gateway haproxy is updated every min with new services that are created

    This documentation has
    1) master/slave setup
    2) setting up haproxy that automatically reloads
    3) setting up dockers
    4) example service program

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.