Hi Adam, all the code relating with hitting endpoints implies that you are aware of the cluster names/ip’s. In a really distributed environment I wouldn’t take that into account. I would discover the service from Zookeeper. 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> [cid:19B646FC-B8E7-4F77-BBD3-75DD7B4B5BF7] On 09 Jul 2015, at 07:19, Adam Bordelon <a...@mesosphere.io<mailto:a...@mesosphere.io>> wrote: 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 <nikolaos.bal...@nexusgroup.com<mailto:nikolaos.bal...@nexusgroup.com>> wrote: Great Sent from my Samsung device -------- Original message -------- From: Donald Laidlaw <donlaid...@me.com<mailto:donlaid...@me.com>> Date: 08/07/2015 19:57 (GMT+01:00) To: user@mesos.apache.org<mailto:user@mesos.apache.org> 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 <nikolaos.bal...@nexusgroup.com<mailto: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<mailto:donlaid...@me.com>> Date: 08/07/2015 19:49 (GMT+01:00) To: user@mesos.apache.org<mailto: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<tel:%2B%203522619113580> 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