Prerequisites for Calico with Mesos

This guide details a minimal install of the external services required by a Calico-Mesos Agent.

  • A Note on Clustered Services: In general, a production-ready mesos cluster should run each of these services across multiple highly available hosts with a quorum. However, for demo and development purposes, this guide will cover launching only one of each service on a single centos7 host. Consult the appropriate documentation for each service:

    For more information on how to set up a more production-ready calico-mesos cluster in such a manner, contact us on slack.

  • A Note on Calico’s Customizations in Mesos: It is important to note that no customizations are necessary for any of the aforementioned services to be compatible with a Calico-Mesos Agent. Adding calico to a mesos cluster only requires modifications to each Agent.

Prerequisite: Add the Mesos Official Repository

Mesos-master, zookeeper, and marathon are installed from the official Mesos repository. Add the official repository:

    rpm -Uvh http://repos.mesosphere.com/el/7/noarch/RPMS/mesosphere-el-repo-7-1.noarch.rpm

ZooKeeper

Install Mesos’ datastore - ZooKeeper:

yum install -y mesosphere-zookeeper
systemctl start zookeeper

ZooKeeper uses tcp over port 2181. If you’re using a firewall, open this port:

sudo firewall-cmd --zone=public --add-port=2181/tcp --permanent
sudo systemctl restart firewalld

Marathon

Supported Versions: v1.0.0 (recommended), v0.14.0 - v0.14.2

Once mesos-master is running, we can launch Marathon:

sudo yum install -y marathon
systemctl start marathon

Marathon listens for tcp connections on port 8080. If you’re using a firewall, open this port:

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo systemctl restart firewalld

etcd

Calico uses etcd as its data store and communication mechanism among Calico components. Install it from Centos’ repositories with the following command, replacing $IP with the cluster-accessible IP you would like etcd to bind to:

yum install -y etcd
echo ETCD_LISTEN_CLIENT_URLS=\"http://0.0.0.0:2379\" >> /etc/etcd/etcd.conf
echo ETCD_ADVERTISE_CLIENT_URLS=\"http://$IP:2379\" >> /etc/etcd/etcd.conf
systemctl start etcd.service

Etcd listens for tcp connections on port 2379. If you’re using a firewall, open this port:

sudo firewall-cmd --zone=public --add-port=2379/tcp --permanent
sudo systemctl restart firewalld

Next steps

Check out one of our guides on using Calico-Mesos with the Unified Containerizer or the Docker Containerizer to see how to launch tasks networked with Calico.