/** * @return clientPort return clientPort if there is another ZK backup can run when killing the * current active; return -1, if there is no backups. */ public int killCurrentActiveZooKeeperServer() throws IOException, InterruptedException { if (!started || activeZKServerIndex < 0) { return -1; } // Shutdown the current active one NIOServerCnxnFactory standaloneServerFactory = standaloneServerFactoryList.get(activeZKServerIndex); int clientPort = clientPortList.get(activeZKServerIndex); standaloneServerFactory.shutdown(); if (!waitForServerDown(clientPort, CONNECTION_TIMEOUT)) { throw new IOException("Waiting for shutdown of standalone server"); } // remove the current active zk server standaloneServerFactoryList.remove(activeZKServerIndex); clientPortList.remove(activeZKServerIndex); zooKeeperServers.remove(activeZKServerIndex); LOG.info( "Kill the current active ZK servers in the cluster " + "on client port: " + clientPort); if (standaloneServerFactoryList.size() == 0) { // there is no backup servers; return -1; } clientPort = clientPortList.get(activeZKServerIndex); LOG.info("Activate a backup zk server in the cluster " + "on client port: " + clientPort); // return the next back zk server's port return clientPort; }
private static void startZooKeeperServer() throws IOException, InterruptedException { String zooLocation = System.getProperty("java.io.tmpdir"); File zooFile = new File(zooLocation, "zookeeper-malhartest"); ZooKeeperServer zooKeeper = new ZooKeeperServer(zooFile, zooFile, 2000); NIOServerCnxnFactory serverFactory = new NIOServerCnxnFactory(); serverFactory.configure(new InetSocketAddress(2181), 10); serverFactory.startup(zooKeeper); }
/** @return ClientPort server bound to. */ public int startup(File baseDir, int numZooKeeperServers) throws IOException, InterruptedException { if (numZooKeeperServers <= 0) return -1; setupTestEnv(); shutdown(); int tentativePort = selectClientPort(); // running all the ZK servers for (int i = 0; i < numZooKeeperServers; i++) { File dir = new File(baseDir, "zookeeper_" + i).getAbsoluteFile(); recreateDir(dir); int tickTimeToUse; if (this.tickTime > 0) { tickTimeToUse = this.tickTime; } else { tickTimeToUse = TICK_TIME; } ZooKeeperServer server = new ZooKeeperServer(dir, dir, tickTimeToUse); NIOServerCnxnFactory standaloneServerFactory; while (true) { try { standaloneServerFactory = new NIOServerCnxnFactory(); standaloneServerFactory.configure( new InetSocketAddress(tentativePort), configuration.getInt(HConstants.ZOOKEEPER_MAX_CLIENT_CNXNS, 1000)); } catch (BindException e) { LOG.debug("Failed binding ZK Server to client port: " + tentativePort); // This port is already in use, try to use another. tentativePort++; continue; } break; } // Start up this ZK server standaloneServerFactory.startup(server); if (!waitForServerUp(tentativePort, CONNECTION_TIMEOUT)) { throw new IOException("Waiting for startup of standalone server"); } // We have selected this port as a client port. clientPortList.add(tentativePort); standaloneServerFactoryList.add(standaloneServerFactory); zooKeeperServers.add(server); } // set the first one to be active ZK; Others are backups activeZKServerIndex = 0; started = true; clientPort = clientPortList.get(activeZKServerIndex); LOG.info("Started MiniZK Cluster and connect 1 ZK server " + "on client port: " + clientPort); return clientPort; }
public void stopZookeeper() { if (!useZookeeper) { return; } standaloneServerFactory.shutdown(); Utils.rm(zklogdir); }
public void startServer() throws Exception { // create a ZooKeeper server(dataDir, dataLogDir, port) LOG.debug("Running ZK server"); // ServerStats.registerAsConcrete(); ClientBase.setupTestEnv(); ZkTmpDir = File.createTempFile("zookeeper", "test"); ZkTmpDir.delete(); ZkTmpDir.mkdir(); zks = new ZooKeeperServer(ZkTmpDir, ZkTmpDir, ZooKeeperDefaultPort); serverFactory = new NIOServerCnxnFactory(); serverFactory.configure(zkaddr, 100); serverFactory.startup(zks); boolean b = ClientBase.waitForServerUp(getZooKeeperConnectString(), ClientBase.CONNECTION_TIMEOUT); LOG.debug("Server up: " + b); // create a zookeeper client LOG.debug("Instantiate ZK Client"); final CountDownLatch latch = new CountDownLatch(1); zkc = new ZooKeeper( getZooKeeperConnectString(), 10000, new Watcher() { @Override public void process(WatchedEvent event) { // handle session disconnects and expires if (event.getState().equals(Watcher.Event.KeeperState.SyncConnected)) { latch.countDown(); } } }); if (!latch.await(10000, TimeUnit.MILLISECONDS)) { zkc.close(); fail("Could not connect to zookeeper server"); } // initialize the zk client with values zkc.create("/ledgers", new byte[0], Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); zkc.create("/ledgers/available", new byte[0], Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); }
public void startZookeeper() { if (!useZookeeper) { // Do not use zookeeper for simpleconsumer return; } try { int clientPort = 2182; int numConnections = 5000; int tickTime = 2000; File dir = new File(zklogdir); ZooKeeperServer zserver = new ZooKeeperServer(dir, dir, tickTime); standaloneServerFactory = new NIOServerCnxnFactory(); standaloneServerFactory.configure(new InetSocketAddress(clientPort), numConnections); standaloneServerFactory.startup(zserver); // start the zookeeper server. } catch (InterruptedException ex) { logger.debug(ex.getLocalizedMessage()); } catch (IOException ex) { logger.debug(ex.getLocalizedMessage()); } }
/** Kill one back up ZK servers */ public void killOneBackupZooKeeperServer() throws IOException, InterruptedException { if (!started || activeZKServerIndex < 0 || standaloneServerFactoryList.size() <= 1) { return; } int backupZKServerIndex = activeZKServerIndex + 1; // Shutdown the current active one NIOServerCnxnFactory standaloneServerFactory = standaloneServerFactoryList.get(backupZKServerIndex); int clientPort = clientPortList.get(backupZKServerIndex); standaloneServerFactory.shutdown(); if (!waitForServerDown(clientPort, CONNECTION_TIMEOUT)) { throw new IOException("Waiting for shutdown of standalone server"); } // remove this backup zk server standaloneServerFactoryList.remove(backupZKServerIndex); clientPortList.remove(backupZKServerIndex); zooKeeperServers.remove(backupZKServerIndex); LOG.info("Kill one backup ZK servers in the cluster " + "on client port: " + clientPort); }
/** @throws IOException */ public void shutdown() throws IOException { if (!started) { return; } // shut down all the zk servers for (int i = 0; i < standaloneServerFactoryList.size(); i++) { NIOServerCnxnFactory standaloneServerFactory = standaloneServerFactoryList.get(i); int clientPort = clientPortList.get(i); standaloneServerFactory.shutdown(); if (!waitForServerDown(clientPort, CONNECTION_TIMEOUT)) { throw new IOException("Waiting for shutdown of standalone server"); } } // clear everything started = false; activeZKServerIndex = 0; standaloneServerFactoryList.clear(); clientPortList.clear(); zooKeeperServers.clear(); LOG.info("Shutdown MiniZK cluster with all ZK servers"); }
public void killServer() throws Exception { if (zkc != null) { zkc.close(); } // shutdown ZK server if (serverFactory != null) { serverFactory.shutdown(); assertTrue( ClientBase.waitForServerDown(getZooKeeperConnectString(), ClientBase.CONNECTION_TIMEOUT), "waiting for server down"); } // ServerStats.unregister(); FileUtils.deleteDirectory(ZkTmpDir); }