@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 > <nikolaos.bal...@nexusgroup.com> 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 <donlaid...@me.com> > Date: 08/07/2015 19:49 (GMT+01:00) > To: user@mesos.apache.org > 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 <kens...@gmail.com >> <mailto:kens...@gmail.com>> 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 >>> <nikolaos.bal...@nexusgroup.com <mailto:nikolaos.bal...@nexusgroup.com>> >>> 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 >>> cont...@nexusgroup.com <mailto:contact...@nexusgroup.com> | 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 <donlaid...@me.com >>>> <mailto:donlaid...@me.com>> 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 <donlaid...@me.com >>>>> <mailto:donlaid...@me.com>> 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 <d...@hellooperator.net >>>>>> <mailto:d...@hellooperator.net>> 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 <donlaid...@me.com >>>>>> <mailto:donlaid...@me.com>> 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 >>>>> >>>> >>> >> >