【问题标题】:How to configure Zookeeper SSL on Windows Server如何在 Windows Server 上配置 Zookeeper SSL
【发布时间】:2019-12-27 01:11:52
【问题描述】:

由于限制,我们不得不使用 Windows 来托管和管理我们的 Zookeeper/SolrCloud 集群。

我们在 Microsoft Azure 中使用 3 个 Windows Server 2016 服务器,前面有一个 Azure 负载均衡器。

我能够安装和配置所有内容,但 Zookeeper 没有通过 SSL 与 SolrCloud 进行通信,因此在创建新集合等内容时,我们的 API 调用都不起作用。

我遵循了 Zookeeper 文档 (https://cwiki.apache.org/confluence/display/ZOOKEEPER/ZooKeeper+SSL+User+Guide),但所有这些都是针对 Linux 系统的。据我所知,我已经对其进行了调整,但它就是行不通。

这就是我所做的:

  • zkCli.cmd 中添加了以下内容:set CLIENT_JVMFLAGS="-Dzookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty -Dzookeeper.client.secure=true -Dzookeeper.ssl.keyStore.location=C:/solr-7.2.1/server/etc/wildcard_sidlee_cloud.pfx -Dzookeeper.ssl.keyStore.password=somepassword -Dzookeeper.ssl.trustStore.location=C:/solr-7.2.1/server/etc/wildcard_sidlee_cloud.pfx -Dzookeeper.ssl.trustStore.password=somepassword"

  • zkCli.cmd中的Java调用中添加了%CLIENT_JVMFLAGS%

  • 将以下内容添加到zkServer.cmdset SERVER_JVMFLAGS="-Dzookeeper.serverCnxnFactory=org.apache.zookeeper.server.NettyServerCnxnFactory -Dzookeeper.ssl.keyStore.location=C:/solr-7.2.1/server/etc/wildcard_sidlee_cloud.pfx -Dzookeeper.ssl.keyStore.password=somepassword -Dzookeeper.ssl.trustStore.location=C:/solr-7.2.1/server/etc/wildcard_sidlee_cloud.pfx -Dzookeeper.ssl.trustStore.password=somepassword"

  • zkServer.cmd中的Java调用中添加了%SERVER_JVMFLAGS%

  • zoo.cfg中的clientPort=2181修改为secureClientPort=2181

Zookeeper 服务“启动”,但实际上什么也没发生。如果我手动启动zkServer.cmd,它会失败并出现错误:

java.lang.NumberFormatException: For input string: "-Dzookeeper.serverCnxnFactory=org.apache.zookeeper.server.NettyServerCnxnFactory -Dzookeeper.ssl.keyStore.location=C:/solr-7.2.1/server/etc/wildcard_sidlee_cloud.pfx -Dzookeeper.ssl.keyStore.password=somepassword -Dzookeeper.ssl.trustStore.location=C:/solr-7.2.1/server/etc/wildcard_sidlee_cloud.pfx -Dzookeeper.ssl.trustStore.password=somepassword"
        at java.lang.NumberFormatException.forInputString(Unknown Source)
        at java.lang.Integer.parseInt(Unknown Source)
        at java.lang.Integer.parseInt(Unknown Source)
        at org.apache.zookeeper.server.ServerConfig.parse(ServerConfig.java:63)
        at org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:103)
        at org.apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.java:64)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:128)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:82)

我在这里真的很茫然,不知道从哪里开始!

提前感谢您的帮助!

【问题讨论】:

  • 我遇到了同样的问题。你弄明白了吗?

标签: ssl apache-zookeeper solrcloud


【解决方案1】:

我遇到了同样的错误并想通了: 当您在 zkServer.cmd 的 Java 调用中添加:%SERVER_JVMFLAGS% 时,您必须将其添加到行尾。尝试将它添加到所有参数旁边。在行尾的“ %* ”之前。 这对我有用。

call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" "%SERVER_JVMFLAGS%" "-Dzookeeper.log.file=%ZOO_LOG_FILE%" "-XX:+HeapDumpOnOutOfMemoryError" "-XX:OnOutOfMemoryError=cmd /c taskkill /pid %%%%p /t /f" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %* 

【讨论】:

  • 肯定会在未来的实施中记住这一点。我想我确实做了你提到的事情,但我们最后也遇到了一个问题,当时最新的非 Beta 版 Zookeeper 没有正确实施 SSL。我们对 Beta 版本进行了一些测试,但由于 %SERVER_JVMFLAGS% 不在正确的位置,它仍然无法正常工作,因此我们最终以 HTTP 而不是 HTTPS 部署 Zookeeper 和 Solr。
猜你喜欢
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-20
  • 1970-01-01
  • 2019-03-31
相关资源
最近更新 更多