2016-10-27 18 views
2

但是,我不能讓它爲我工作:如何在分佈式vert.x EventBus上使用SSL?

設置:

工作:

  • 部署一臺機器,沒有集羣上,啓用SSL
  • 部署在兩臺機器,Hazelcast聚類,SSL禁用

失敗:

  • 部署在兩臺機器,Hazelcast聚類,啓用了SSL(發送/從遠程verticles接收消息失敗默默)

日誌消息:

  • 嘗試發佈時/送:「DEBUG:羣集連接關閉:本地主機:44035座[email protected]

我嘗試使用不同的密鑰/證書,密鑰庫+可信密鑰庫,啓用/禁用客戶端身份驗證要求。目前爲止沒有任何工作

問題:

  1. 我如何得到了Netty/EventBus-默認地將Impl/Hazelcast更多的日誌信息?
  2. 任何想法可能是羣集+ SSL的問題?

回答

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示例源目錄中做了這個,所以我在每臺機器上執行vertx run receiver.js -cluster/vertx run sender.js -cluster)並且它工作正常。

Vertx-hazelcast module documentation還提供了配置日誌記錄的說明,使用hazelcast XML配置的位置配置vertx並選擇要綁定的羣集主機地址(在有多個網絡接口的情況下很有用)。