Sorry for showing up late to the party. Good answers so far. I just want to add that if you know any master, you can hit http://<somemaster>/master/redirect to get a 307 Temporary Redirect which you can unpack to find the leading master's hostname:port.
On Wed, Jul 8, 2015 at 10:59 AM, Nikolaos Ballas neXus < [email protected]> wrote: > Great > > > > Sent from my Samsung device > > > -------- Original message -------- > From: Donald Laidlaw <[email protected]> > Date: 08/07/2015 19:57 (GMT+01:00) > To: [email protected] > Subject: Re: Java detector for mess masters and leader > > @Nicolaos > > Thanks for the offer. But I am almost finished writing what I outlined > below. I am good to go. > > Best regards, > -Don > > On Jul 8, 2015, at 2:51 PM, Nikolaos Ballas neXus < > [email protected]> wrote: > > I have code without curator if you want.I will send it to you that does > exactly what you described > > > > Sent from my Samsung device > > > -------- Original message -------- > From: Donald Laidlaw <[email protected]> > Date: 08/07/2015 19:49 (GMT+01:00) > To: [email protected] > Subject: Re: Java detector for mess masters and leader > > @ Nicolaos > I really don’t think that will work. > > When you use this code, it creates a node under /mesos named like: > _c_e7007a30-1eaf-4826-bb99-011e8a33ac111-lock-0000000099 because it is > gaining leadership. It does not create nodes like mesos does, with names > like info_0000000123. It therefore does not play well with mesos. > > I don’t think the Curator code matches the mesos code in exactly how it > does leadership election. > > I’ll just scan the mesos-created children of /mesos, they all begin with > the string “info” and are ephemeral sequence nodes. Their contents contains > the info I need, which I can parse using the mesos protocol buffer > definition for MasterInfo. Although I think your substring method would > work just as well. At least it will until 0.24 when the content is changed > to a JSON string. > > Best regards, > -Don > > > On Jul 8, 2015, at 11:49 AM, Ken Sipe <[email protected]> wrote: > > awesome sharing of code! > > I’ll add that if you are using Mesos-DNS, that the dns name master.mesos > will resolve to the masters and leader.mesos will resolve to the leader. > > if you are looking to resolve to marathon leader you would have to use > the code below against zk at the moment. > > - ken > > On Jul 8, 2015, at 9:42 AM, Nikolaos Ballas neXus < > [email protected]> wrote: > > Don…the bellow code will return leader node for mesos & marathon > framework. > > import … > public class SomeClass { > CuratorFramework client; > public void init(){ > client = CuratorFrameworkFactory.newClient(connectionString, new > ExponentialBackoffRetry(1000, 3)) > } > public String getMasterNodeIP(){ > if(client!=null){ > > client.start(); > LeaderSelectorListener listener = new LeaderSelectorListenerAdapter() > { > public void takeLeadership(CuratorFramework client) throws > Exception { > } > }; > > LeaderSelector selector = new LeaderSelector(client, path, listener); > selector.autoRequeue(); > selector.start(); > > Participant participant = selector.getLeader(); > String id = > participant.getId().substring(participant.getId().indexOf("@") + 1, > participant.getId().indexOf("*")); > masterNode.add(id); > } > } catch (Exception e) { > logger.error("Failed find out master node", e.getCause()); > } > > > } > } > *Nikolaos Ballas* | Software Development Manager > > Technology Nexus S.a.r.l. > 2-4 Rue Eugene Rupert > 2453 Luxembourg > Delivery address: 2-3 Rue Eugene Rupert,Vertigo Polaris Building > Tel: + 3522619113580 > [email protected] <[email protected]> | nexusgroup.com > <http://www.nexusgroup.com/> > *LinkedIn.com <http://www.linkedin.com/company/nexus-technology>* | *Twitter > <http://www.twitter.com/technologynexus>* | *Facebook.com > <https://www.facebook.com/pages/Technology-Nexus/133756470003189>* > > > <C5B06FBE-74F4-416B-9BCE-F914341A2E0B_4_.png> > > On 08 Jul 2015, at 16:27, Donald Laidlaw <[email protected]> wrote: > > @Nikolaos Ballas neXus > I can see no way to instantiate the Curator LeaderSelector without > actually becoming a participant in leader election. If I do instantiate > that class, it does not accept a null value for the LeaderSelectorListener > and so anything instantiating LeaderSelector must also become a participant. > > Even then, that class provides no way to listen for leadership change. The > only listening it does is to discover when it itself becomes the leader. I > suppose it would be possible to participate in the leadership election, but > immediately relinquish leadership causing a real mesos master to become the > leader, but that seems a little too invasive to do. > > The only solution I can see is to monitor the children of the mesos leader > node, and parse through the contents of the ones whose name begins with > “info” as per @Marco Massenzio. > > Best regards, > -Don > > On Jul 7, 2015, at 12:16 PM, Donald Laidlaw <[email protected]> wrote: > > Thank you all. > > I will use the Curator recipe, since I already use Curator for a bunch of > other things. > > If curator can find the leader and the participants that is good enough. > Otherwise I will parse the protocol buffer contents, and provide a way to > parse the future son contents when that happens. > > I’ll reply again with the results of using the Curator recipe to get the > leader and participants. > > Best regards, > -Don > > On Jul 7, 2015, at 11:04 AM, Dick Davies <[email protected]> wrote: > > The active master has a flag set in /metrics/snapshot : > "master/elected" which is 1 for the active > master and 0 otherwise, so it's easy enough to only load the metrics > from the active master. > > (I use the collectd plugin and push data rather than poll, but the > same principle should apply). > > On 7 July 2015 at 14:02, Donald Laidlaw <[email protected]> wrote: > > Has anyone ever developed Java code to detect the mesos masters and > leader, given a zookeeper connection? > > The reason I ask is because I would like to monitor mesos to report > various metrics reported by the master. This requires detecting and > tracking the leading master to query its /metrics/snapshot REST endpoint. > > Thanks, > -Don > > > > > > > >

