如何在分布式vert.x EventBus上使用SSL?

时间:2016-10-27 11:59:27

标签: java ssl hazelcast vert.x event-bus

但是,我不能让它对我有用:

设定:

工作:

  • 在一台计算机上部署,无群集,启用SSL
  • 在两台计算机上部署,Hazelcast集群,禁用SSL

出现故障:

  • 在两台机器上部署,Hazelcast集群,启用SSL(从远程Verticle发送/接收消息无声地失败)

记录消息:

  • 尝试发布/发送时:" DEBUG:群集连接已关闭:localhost:44035 holder io.vertx.core.eventbus.impl.clustered.ConnectionHolder@b80002b"

我尝试使用不同的密钥/证书,密钥库+可信密钥库,启用/禁用客户端身份验证要求。到目前为止没有任何工作。

问题:

  1. 如何从Netty / EventBus-Impl / Hazelcast获取更多日志消息?
  2. 知道群集+ SSL会出现什么问题?

1 个答案:

答案 0 :(得分:1)

我尝试在两台计算机上执行SSL eventbus示例,在我的情况下,由于Hazelcast无法在启动时建立集群而失败(因此每个hazelcast实例都是自己的单节点集群)。一旦我解决了这个问题,这个例子就完美无缺。 Vertx-hazelcast文档在troubleshooting clustering上有相关部分。

Hazelcast无法在我的案例中形成群集的原因是默认的Hazelcast配置(在$VERTX_HOME/conf/default-cluster.xml中)配置Hazelcast进行多播发现;默认情况下,这在OSX上禁用(家庭路由器禁用多播流量也不常见)。我将$VERTX_HOME/conf/default-cluster.xml复制到了我的工作目录,然后更改了配置的<multicast><tcp-ip>部分,如下所示:

  <multicast enabled="false"> <!-- was originally true -->
    <multicast-group>224.2.2.3</multicast-group>
    <multicast-port>54327</multicast-port>
  </multicast>
  <tcp-ip enabled="true"> <!-- this one was false -->
    <!-- list your cluster machines IPs including the current one in member elements -->
    <member>192.168.2.1</member>
    <member>192.168.2.2</member>
  </tcp-ip>

在两台机器上复制cluster.xml,然后从放置cluster.xml的目录开始vertx,以便vertx选择它(我在javascript示例sources目录中这样做,所以我执行了{ <1}} / vertx run receiver.js -cluster在每台机器上)并且它有效。

Vertx-hazelcast module documentation还提供了有关配置日志记录,使用hazelcast XML配置的位置配置vertx以及选择要绑定到的群集主机地址的说明(如果您有多个网络接口,则非常有用)。