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.
