Fixed (and simplified) clustering, using automatic zen discovery
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/20507af0 Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/20507af0 Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/20507af0 Branch: refs/heads/master Commit: 20507af0818ed93f48cee185fde64a8ac9a4a0b4 Parents: 587e699 Author: Martin Harris <[email protected]> Authored: Wed Jun 4 13:33:30 2014 +0100 Committer: Martin Harris <[email protected]> Committed: Tue Jun 17 10:19:58 2014 +0100 ---------------------------------------------------------------------- .../elasticsearch/ElasticSearchCluster.java | 2 - .../elasticsearch/ElasticSearchClusterImpl.java | 55 -------------------- .../nosql/elasticsearch/ElasticSearchNode.java | 3 +- .../elasticsearch/ElasticSearchNodeImpl.java | 15 ------ 4 files changed, 1 insertion(+), 74 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/20507af0/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchCluster.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchCluster.java b/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchCluster.java index 4f6448f..fea777e 100644 --- a/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchCluster.java +++ b/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchCluster.java @@ -16,7 +16,5 @@ public interface ElasticSearchCluster extends DynamicCluster { BasicAttributeSensorAndConfigKey<String> CLUSTER_NAME = new BasicAttributeSensorAndConfigKey<String>(String.class, "elasticsearch.cluster.name", "Name of the ElasticSearch cluster", "BrooklynCluster"); - AttributeSensor<String> NODE_LIST = Sensors.newStringSensor("elasticsearch.cluster.node.list", "Comma delimited list of nodes in hostname:port format"); - String getName(); } http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/20507af0/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterImpl.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterImpl.java b/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterImpl.java index 5e1deb6..fe60c4a 100644 --- a/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterImpl.java +++ b/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterImpl.java @@ -4,45 +4,24 @@ import java.util.Collection; import java.util.concurrent.atomic.AtomicInteger; import brooklyn.entity.Entity; -import brooklyn.entity.basic.Attributes; -import brooklyn.entity.group.AbstractMembershipTrackingPolicy; import brooklyn.entity.group.DynamicClusterImpl; import brooklyn.entity.proxying.EntitySpec; import brooklyn.location.Location; -import brooklyn.policy.PolicySpec; -import brooklyn.util.text.Strings; public class ElasticSearchClusterImpl extends DynamicClusterImpl implements ElasticSearchCluster { private AtomicInteger nextMemberId = new AtomicInteger(0); - private MemberTrackingPolicy policy; public ElasticSearchClusterImpl() { } @Override - public void init() { - policy = addPolicy(PolicySpec.create(MemberTrackingPolicy.class) - .displayName(getName() + " membership tracker") - .configure("group", this) - .configure(AbstractMembershipTrackingPolicy.NOTIFY_ON_DUPLICATES, false)); - } - - @Override public void start(Collection<? extends Location> locations) { super.start(locations); } @Override - public void stop() { - if (policy != null) { - removePolicy(policy); - } - super.stop(); - } - - @Override protected boolean calculateServiceUp() { boolean up = false; for (Entity member : getMembers()) { @@ -57,8 +36,6 @@ public class ElasticSearchClusterImpl extends DynamicClusterImpl implements Elas EntitySpec<ElasticSearchNode> spec = (EntitySpec<ElasticSearchNode>)getConfig(MEMBER_SPEC, EntitySpec.create(ElasticSearchNode.class)); spec.configure(ElasticSearchNode.CLUSTER_NAME, getConfig(ElasticSearchClusterImpl.CLUSTER_NAME)) - .configure(ElasticSearchNode.MULTICAST_ENABLED, false) - .configure(ElasticSearchNode.UNICAST_ENABLED, false) .configure(ElasticSearchNode.NODE_NAME, "elasticsearch-" + nextMemberId.incrementAndGet()); return spec; @@ -69,36 +46,4 @@ public class ElasticSearchClusterImpl extends DynamicClusterImpl implements Elas return getConfig(CLUSTER_NAME); } - private void resetCluster() { - String nodeList = ""; - for (Entity entity : getMembers()) { - nodeList += getHostAndPort(entity) + ","; - } - if (!nodeList.isEmpty()) { - for (Entity entity : getMembers()) { - String otherNodesList = Strings.removeFromEnd(nodeList.replace(getHostAndPort(entity) + ",", ""), ","); - if (!otherNodesList.isEmpty()) { - ((ElasticSearchNode)entity).resetCluster(otherNodesList); - } - } - - } - setAttribute(NODE_LIST, Strings.removeFromEnd(nodeList, ",")); - } - - private String getHostAndPort(Entity entity) { - return entity.getAttribute(Attributes.HOSTNAME) + ":" + entity.getAttribute(Attributes.HTTP_PORT); - } - - public static class MemberTrackingPolicy extends AbstractMembershipTrackingPolicy { - @Override protected void onEntityChange(Entity member) { - ((ElasticSearchClusterImpl)entity).resetCluster(); - } - @Override protected void onEntityAdded(Entity member) { - ((ElasticSearchClusterImpl)entity).resetCluster(); - } - @Override protected void onEntityRemoved(Entity member) { - ((ElasticSearchClusterImpl)entity).resetCluster(); - } - }; } http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/20507af0/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNode.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNode.java b/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNode.java index e9ec525..718983a 100644 --- a/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNode.java +++ b/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNode.java @@ -20,7 +20,7 @@ import brooklyn.util.flags.SetFromFlag; @ImplementedBy(ElasticSearchNodeImpl.class) public interface ElasticSearchNode extends SoftwareProcess, DatastoreMixins.HasDatastoreUrl { @SetFromFlag("version") - ConfigKey<String> SUGGESTED_VERSION = ConfigKeys.newConfigKeyWithDefault(SoftwareProcess.SUGGESTED_VERSION, "1.2.0"); + ConfigKey<String> SUGGESTED_VERSION = ConfigKeys.newConfigKeyWithDefault(SoftwareProcess.SUGGESTED_VERSION, "1.2.1"); @SetFromFlag("downloadUrl") BasicAttributeSensorAndConfigKey<String> DOWNLOAD_URL = new BasicAttributeSensorAndConfigKey<String>( @@ -63,5 +63,4 @@ public interface ElasticSearchNode extends SoftwareProcess, DatastoreMixins.HasD AttributeSensor<Integer> SEARCH_QUERY_TOTAL = Sensors.newIntegerSensor("elasticsearch.node.search.query.total"); AttributeSensor<Integer> SEARCH_QUERY_TIME_IN_MILLIS = Sensors.newIntegerSensor("elasticsearch.node.search.query.time.in.millis"); - void resetCluster(String nodeList); } http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/20507af0/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeImpl.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeImpl.java b/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeImpl.java index fafe67f..ec01539 100644 --- a/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeImpl.java +++ b/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeImpl.java @@ -96,21 +96,6 @@ public class ElasticSearchNodeImpl extends SoftwareProcessImpl implements Elasti } @Override - public void resetCluster(String nodeList) { - URI updateClusterUri; - try { - updateClusterUri = new URI(String.format("http://%s:%s/_cluster/settings", getAttribute(Attributes.HOSTNAME), getAttribute(HTTP_PORT))); - } catch (URISyntaxException e) { - throw Exceptions.propagate(e); - } - HttpClient client = HttpTool.httpClientBuilder().build(); - - String payload = String.format("{\"persistent\":{\"discovery.zen.ping.unicast.hosts\":\"%s\"}}", nodeList); - - HttpToolResponse result = HttpTool.httpPut(client, updateClusterUri, ImmutableMap.<String, String>of(), Strings.toByteArray(payload)); - } - - @Override protected void disconnectSensors() { if (httpFeed != null) { httpFeed.stop();
