Benjamin Bouillé bio photo

Benjamin Bouillé

IT consultant

Email Twitter Google+ LinkedIn Github Stackoverflow

Some notes on installation of mesos daemons on a single machine for testing purpose only.

Environnement

  • OS : Debian 6.0.6 x64

Download

$ wget http://mirrors.linsrv.net/apache/incubator/mesos/mesos-0.11.0-incubating/mesos-0.11.0-incubating.tar.gz

Dependencies

Install the Debian dependencies, as root:

apt-get install build-essential python-dev libcunit1 libz-dev libssl-dev libcurl4-openssl-dev

Installation

Prepare the mesos installation, as root:

tar xzvf mesos-0.11.0-incubating.tar.gz
mv mesos-0.11.0 /usr/local/mesos
cd /usr/local/mesos 
mkdir build 
cd build 
../configure 
make 
make check

Then install mesos, as root :

make install

###Configuration (standalone)

See the official configuration page here for further details.

  • Set the hostname ‘localhost’ in the file masters:
$ cat /usr/local/var/mesos/deploy/masters
localhost
  • Set the hostname ‘localhost’ in the file slaves:
$ cat /usr/local/var/mesos/deploy/masters
localhost
  • Edit mesos.conf and set the following parameters:
$ vim /usr/local/var/mesos/conf/mesos.conf
log_dir=/var/log/mesos
master=localhost:5050
  • Create the log folder :
mkdir /var/log/mesos
  • Create and SSH key for root on the master without password:
ssh-keygen -P ""
  • Distribute the key on localhost (standalone mode):
ssh-copy-id localhost

WARNING : this SSH configuration is for testing environnement ONLY, please ensure a proper key and user management on each node.

##Run mesos

Start the cluster as root:

cd /usr/local/sbin
./mesos-start-cluster.sh

Network status, as root :

netstat -lptn
Connexions Internet actives (seulement serveurs)
Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1474/sshd
tcp 0 0 0.0.0.0:5050 0.0.0.0:* LISTEN 8104/mesos-master
tcp 0 0 0.0.0.0:45350 0.0.0.0:* LISTEN 8119/mesos-slave

Catch the log of the master and slave daemons with this command as root:

tail -f /var/log/*.INFO

###Mesos UI

Mesos listening to port 5050 for job orchestration AND web ui, check the cluster status from web ui on http://localhost:5050. An overview of this standalone configuration in the UI :

###Test mesos framework

Several examples are available in the distribution:

cd /usr/local/mesos/build

Run one java example:

src/examples/java/test-framework localhost:5050
Registered! ID = 201306061832-16777343-5050-8104-0000
Launching task 0
Status update: task 0 is in state TASK_RUNNING
Status update: task 0 is in state TASK_FINISHED
Finished tasks: 1
[...]
Launching task 4
Status update: task 4 is in state TASK_RUNNING
Status update: task 4 is in state TASK_FINISHED
Finished tasks: 5

Or one python example:

src/examples/python/test-framework localhost:5050

##Stop mesos

Stop the cluster as root:

cd /usr/local/sbin
./mesos-stop-cluster.sh