/** * Add an instance into the Helix cluster. * * @param instance Instance to be added * @return Request response */ @Nonnull public synchronized PinotResourceManagerResponse addInstance(@Nonnull Instance instance) { List<String> instances = getAllInstances(); String instanceIdToAdd = instance.toInstanceId(); if (instances.contains(instanceIdToAdd)) { return PinotResourceManagerResponse.failure("Instance " + instanceIdToAdd + " already exists"); } else { _helixAdmin.addInstance(_helixClusterName, instance.toInstanceConfig()); return PinotResourceManagerResponse.SUCCESS; } }
instanceConfig.setHostName("Broker_localhost"); instanceConfig.setPort("2"); helixAdmin.addInstance(HELIX_CLUSTER_NAME, instanceConfig); helixAdmin.addInstanceTag(HELIX_CLUSTER_NAME, instanceConfig.getInstanceName(), TagNameUtils.getBrokerTagForTenant(TagNameUtils.DEFAULT_TENANT_NAME));
public void addInstanceToCluster(String clusterName, String instanceId) { InstanceConfig config = InstanceConfig.toInstanceConfig(instanceId); _admin.addInstance(clusterName, config); }
public void addInstanceToCluster(String clusterName, String instanceId) { InstanceConfig config = InstanceConfig.toInstanceConfig(instanceId); _admin.addInstance(clusterName, config); }
@PUT @Path("{instanceName}") public Response addInstance(@PathParam("clusterId") String clusterId, @PathParam("instanceName") String instanceName, String content) { HelixAdmin admin = getHelixAdmin(); ZNRecord record; try { record = toZNRecord(content); } catch (IOException e) { _logger.error("Failed to deserialize user's input " + content + ", Exception: " + e); return badRequest("Input is not a vaild ZNRecord!"); } try { admin.addInstance(clusterId, new InstanceConfig(record)); } catch (Exception ex) { _logger.error("Error in adding an instance: " + instanceName, ex); return serverError(ex); } return OK(); }
instanceConfig.setPort(port); instanceConfig.setInstanceEnabled(true); _helixAdmin.addInstance(_clusterName, instanceConfig);
instanceConfig.setPort(port); instanceConfig.setInstanceEnabled(true); _helixAdmin.addInstance(_clusterName, instanceConfig);
private static void addNode() throws Exception { NUM_NODES = NUM_NODES + 1; int port = 12000 + NUM_NODES - 1; InstanceConfig instanceConfig = new InstanceConfig("localhost_" + port); instanceConfig.setHostName("localhost"); instanceConfig.setPort("" + port); instanceConfig.setInstanceEnabled(true); echo("ADDING NEW NODE :" + instanceConfig.getInstanceName() + ". Partitions will move from old nodes to the new node."); admin.addInstance(CLUSTER_NAME, instanceConfig); INSTANCE_CONFIG_LIST.add(instanceConfig); MyProcess process = new MyProcess(instanceConfig.getInstanceName()); PROCESS_LIST.add(process); admin.rebalance(CLUSTER_NAME, RESOURCE_NAME, 3); process.start(); }
private static void addNode() throws Exception { NUM_NODES = NUM_NODES + 1; int port = 12000 + NUM_NODES - 1; InstanceConfig instanceConfig = new InstanceConfig("localhost_" + port); instanceConfig.setHostName("localhost"); instanceConfig.setPort("" + port); instanceConfig.setInstanceEnabled(true); echo("ADDING NEW NODE :" + instanceConfig.getInstanceName() + ". Partitions will move from old nodes to the new node."); admin.addInstance(CLUSTER_NAME, instanceConfig); INSTANCE_CONFIG_LIST.add(instanceConfig); MyProcess process = new MyProcess(instanceConfig.getInstanceName()); PROCESS_LIST.add(process); admin.rebalance(CLUSTER_NAME, RESOURCE_NAME, 3); process.start(); }
helixAdmin.addInstance(cfg.clusterName, getInstanceCfg(participant));
helixAdmin.addInstance(cfg.clusterName, getInstanceCfg(participant));
protected void setupInstances(int numInstances) { // setup liveInstances for (int i = 0; i < numInstances; i++) { String instance = HOSTNAME_PREFIX + i; InstanceConfig config = new InstanceConfig(instance); config.setHostName(instance); config.setPort("12134"); admin.addInstance(manager.getClusterName(), config); } }
public static void setup() { admin = new ZKHelixAdmin(ZK_ADDRESS); // create cluster echo("Creating cluster: " + CLUSTER_NAME); admin.addCluster(CLUSTER_NAME, true); // Add nodes to the cluster echo("Adding " + NUM_NODES + " participants to the cluster"); for (int i = 0; i < NUM_NODES; i++) { admin.addInstance(CLUSTER_NAME, INSTANCE_CONFIG_LIST.get(i)); echo("\t Added participant: " + INSTANCE_CONFIG_LIST.get(i).getInstanceName()); } // Add a state model StateModelDefinition myStateModel = defineStateModel(); echo("Configuring StateModel: " + "MyStateModel with 1 Master and 1 Slave"); admin.addStateModelDef(CLUSTER_NAME, STATE_MODEL_NAME, myStateModel); // Add a resource with 6 partitions and 2 replicas echo("Adding a resource MyResource: " + "with 6 partitions and 2 replicas"); admin.addResource(CLUSTER_NAME, RESOURCE_NAME, NUM_PARTITIONS, STATE_MODEL_NAME, "AUTO"); // this will set up the ideal state, it calculates the preference list for // each partition similar to consistent hashing admin.rebalance(CLUSTER_NAME, RESOURCE_NAME, NUM_REPLICAS); }
public static void setup() { admin = new ZKHelixAdmin(ZK_ADDRESS); // create cluster echo("Creating cluster: " + CLUSTER_NAME); admin.addCluster(CLUSTER_NAME, true); // Add nodes to the cluster echo("Adding " + NUM_NODES + " participants to the cluster"); for (int i = 0; i < NUM_NODES; i++) { admin.addInstance(CLUSTER_NAME, INSTANCE_CONFIG_LIST.get(i)); echo("\t Added participant: " + INSTANCE_CONFIG_LIST.get(i).getInstanceName()); } // Add a state model StateModelDefinition myStateModel = defineStateModel(); echo("Configuring StateModel: " + "MyStateModel with 1 Master and 1 Slave"); admin.addStateModelDef(CLUSTER_NAME, STATE_MODEL_NAME, myStateModel); // Add a resource with 6 partitions and 2 replicas echo("Adding a resource MyResource: " + "with 6 partitions and 2 replicas"); admin.addResource(CLUSTER_NAME, RESOURCE_NAME, NUM_PARTITIONS, STATE_MODEL_NAME, "AUTO"); // this will set up the ideal state, it calculates the preference list for // each partition similar to consistent hashing admin.rebalance(CLUSTER_NAME, RESOURCE_NAME, NUM_REPLICAS); }
@Test public void testEnableDisablePartitions() { String className = TestHelper.getTestClassName(); String methodName = TestHelper.getTestMethodName(); String clusterName = className + "_" + methodName; String instanceName = "TestInstance"; String testResourcePrefix = "TestResource"; System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis())); HelixAdmin admin = new ZKHelixAdmin(_gZkClient); admin.addCluster(clusterName, true); admin.addInstance(clusterName, new InstanceConfig(instanceName)); // Test disable instances with resources admin.enablePartition(false, clusterName, instanceName, testResourcePrefix + "0", Arrays.asList(new String[]{"1", "2"})); admin.enablePartition(false, clusterName, instanceName, testResourcePrefix + "1", Arrays.asList(new String[]{"2", "3", "4"})); InstanceConfig instanceConfig = admin.getInstanceConfig(clusterName, instanceName); Assert.assertEquals(instanceConfig.getDisabledPartitions(testResourcePrefix + "0").size(), 2); Assert.assertEquals(instanceConfig.getDisabledPartitions(testResourcePrefix + "1").size(), 3); // Test disable partition across resources // TODO : Remove this part once setInstanceEnabledForPartition(partition, enabled) is removed instanceConfig.setInstanceEnabledForPartition("10", false); Assert.assertEquals(instanceConfig.getDisabledPartitions(testResourcePrefix + "0").size(), 3); Assert.assertEquals(instanceConfig.getDisabledPartitions(testResourcePrefix + "1").size(), 4); admin.dropCluster(clusterName); }
protected void setupInstances(String clusterName, int[] instances) { HelixAdmin admin = new ZKHelixAdmin(_gZkClient); for (int i = 0; i < instances.length; i++) { String instance = "localhost_" + instances[i]; InstanceConfig instanceConfig = new InstanceConfig(instance); instanceConfig.setHostName("localhost"); instanceConfig.setPort("" + instances[i]); instanceConfig.setInstanceEnabled(true); admin.addInstance(clusterName, instanceConfig); } }
@Test (dependsOnMethods = {"testClusterExpansion"}) public void testClusterExpansionByEnableInstance() throws Exception { Assert.assertTrue(_clusterVerifier.verifyByPolling()); _migrationVerifier.reset(); _migrationVerifier.start(); int numNodes = _participants.size(); // add new instances with all disabled for (int i = numNodes; i < numNodes + NUM_NODE; i++) { String storageNodeName = PARTICIPANT_PREFIX + "_" + (START_PORT + i); InstanceConfig config = InstanceConfig.toInstanceConfig(storageNodeName); config.setInstanceEnabled(false); config.getRecord().getSimpleFields() .remove(InstanceConfig.InstanceConfigProperty.HELIX_ENABLED_TIMESTAMP.name()); _gSetupTool.getClusterManagementTool().addInstance(CLUSTER_NAME, config); // start dummy participants MockParticipantManager participant = new MockParticipantManager(ZK_ADDR, CLUSTER_NAME, storageNodeName); participant.syncStart(); _participants.add(participant); } // enable new instance one by one for (int i = numNodes; i < numNodes + NUM_NODE; i++) { String storageNodeName = PARTICIPANT_PREFIX + "_" + (START_PORT + i); _gSetupTool.getClusterManagementTool().enableInstance(CLUSTER_NAME, storageNodeName, true); Thread.sleep(100); } Assert.assertTrue(_clusterVerifier.verifyByPolling()); Assert.assertFalse(_migrationVerifier.hasLessReplica()); _migrationVerifier.stop(); }
dummyList.add("bar"); config.getRecord().setListField("dummy", dummyList); tool.addInstance(clusterName, config); tool.enableInstance(clusterName, instanceName, true); String path = PropertyPathBuilder.getPath(PropertyType.INSTANCES, clusterName, instanceName); tool.addInstance(clusterName, config); Assert.fail("should fail if add an alredy-existing instance"); } catch (HelixException e) {
instanceConfig.setPort("" + port); instanceConfig.setInstanceEnabled(true); admin.addInstance(clusterName, instanceConfig);
config.addTag(TEST_TAG); tool.addInstance(clusterName, config); tool.enableInstance(clusterName, instanceName, true); String path = PropertyPathBuilder.instance(clusterName, instanceName);