zookeeper在单机上伪集群测试时,出现Unable to start AdminServer, exiting abnormally

zookeeper在单机上伪集群测试时,出现Unable to start AdminServer, exiting abnormally

出现该问题的原因大家都知道因为启动完一个zookeeper server后,默认的zkServer.cmd中,没有将对应的不启动AdminServer屏蔽。

AdminServerFactory.java中代码如下

 public static AdminServer createAdminServer() {
        if (!"false".equals(System.getProperty("zookeeper.admin.enableServer"))) {
            try {
                Class<?> jettyAdminServerC = Class.forName("org.apache.zookeeper.server.admin.JettyAdminServer");
                Object adminServer = jettyAdminServerC.getConstructor().newInstance();
                return (AdminServer) adminServer;


            } catch (ClassNotFoundException e) {
                LOG.warn("Unable to start JettyAdminServer", e);
            } catch (InstantiationException e) {
                LOG.warn("Unable to start JettyAdminServer", e);
            } catch (IllegalAccessException e) {
                LOG.warn("Unable to start JettyAdminServer", e);
            } catch (InvocationTargetException e) {
                LOG.warn("Unable to start JettyAdminServer", e);
            } catch (NoSuchMethodException e) {
                LOG.warn("Unable to start JettyAdminServer", e);
            } catch (NoClassDefFoundError e) {
                LOG.warn("Unable to load jetty, not starting JettyAdminServer", e);
            }
        }
        return new DummyAdminServer();
    }

因为第一个启动的Zookeeper server已经把8080端口给占用了

根据创建JettyAdminServer中代码如下:

    public JettyAdminServer() throws AdminServerException {
        this(Integer.getInteger("zookeeper.admin.serverPort", DEFAULT_PORT),
             System.getProperty("zookeeper.admin.commandURL", DEFAULT_COMMAND_URL));
    }

所以可以在zkServer.cmd中的最后一个call参数中,增加"-Dzookeeper.admin.enableServer=false"


或者

"-Dzookeeper.admin.serverPort=你的端口号"  

更改端口号后再进行启动,这样在单机环境下配置集群测试就OK了



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值