Hi everyone,

I have been testing recently Mesos and Apache Ignite. Some problems were not
documented and I sometimes had to look at some java sources.

So this is a very small guide to help you launch Ignite nodes from Mesos and
access these nodes with Java.

A) First, to install Mesos, I would advise to consult this tutorial which is
easy to follow:
https://www.digitalocean.com/community/tutorials/how-to-configure-a-production-ready-mesosphere-cluster-on-ubuntu-14-04

B) Then, to create a Mesos framework/application to launch your Ignite
nodes, you can refer to this tutorial:
http://apacheignite.gridgain.org/docs/mesos-deployment

For those having a "Got unexpected response code 404" exception in /stderr/
of a Mesos node sandbox after launching the application through
curl/marathon (step 3 of tutorial B) ), it basically says it can't download
the ignite-mesos.jar. I had this problem and edited the marathon.json (or
whatever the name you choose) to change the IGNITE_VERSION parameter
previously set to 1.0.5. I first changed it to "latest" and everything was
ok until I triedto access these nodes with Java (see after). For now, set
IGNITE_VERSION to "1.5.9".

By now, your Ignite nodes should now launch correctly on Mesos and you
should see something similar to tutorial B) steps 5-7.

Now let's try to access those Ignite nodes launched by Mesos with a small
Java application. At first, it did not work at all. If you try something
like bin/ignite.sh, it will create a new cluster independant of the one
created by Mesos. So you have to setup the proper configuration. And there,
I did not find any tutorial or information on Google. So here is what I did:

1) ssh to a Mesos node running ignite
2) ps -aux | grep ignite (to see the parameters used for launching these
ignite nodes)
3) the spring configuration file by default was "ignite-default-config.xml"
4) reproduce this configuration inside the java application with the
IgniteConfiguration class (see below)
5) it was not working. Looking at the Java exception, I discovered my java
app was using a different version of Ignite than Mesos (?!). Indeed,
although the latest stable version of Ignite is 1.5.0 on the download page
(https://ignite.apache.org/download.cgi#binaries), when using "latest" for
the field IGNITE_VERSION in the marathon.json file, it actually downloaded
and launched the version 1.5.9 (FWY, set IGNITE_VERSION to "1.5.9" to avoid
such mistake). I retrieve those jar from the Mesos slave nodes (look in
/tmp/mesos/slaves/.../latest/) and use them as libraries in my Java app
5) but it was still not working !? "Failed to connect to any address from IP
finder (will retry to join topology every 2 secs)". To make a long story
short, you have to provide to your IpFinder some IP addresses of your Mesos
slave nodes... and it worked !


*Here is a very small Java code to help you connect to your Mesos Ignite
nodes:*

Collection<String> addr = new ArrayList();
addr.add("X.X.X.X"); // replace this by IP addresses of ignite nodes
addr.add("X.X.X.X"); // replace this by IP addresses of ignite nodes

TcpDiscoveryVmIpFinder tcpvm = new TcpDiscoveryVmIpFinder();
tcpvm.setAddresses(addr);

TcpDiscoverySpi dspi = new TcpDiscoverySpi();
dspi.setIpFinder(tcpvm);
dspi.setJoinTimeout(60000);

IgniteConfiguration cfg = new IgniteConfiguration();
cfg.setDiscoverySpi(dspi);
cfg.setClientMode(true);

Ignite ignite = Ignition.start(cfg);


I hope this will be of some use to some of you.
Bests,
LPA



--
View this message in context: 
http://apache-ignite-developers.2346864.n4.nabble.com/Small-how-to-for-Mesos-Ignite-Java-tp8467.html
Sent from the Apache Ignite Developers mailing list archive at Nabble.com.

Reply via email to