2016-09-16 104 views
0

我想在火花集羣中運行的火花作業使用Hazel Cast Java客戶端進行Hazel cast連接。 Hazelcast作爲kubernetes集羣中的一個容器運行,並且我已經將Hazelcast服務公開爲可以使用節點端口從kubernetes集羣外部訪問。從在火花集羣中運行的Hazelcast java客戶端訪問運行在kubernetes集羣節點內的hazelCast

面對多個Hazel投射吊艙在不同Kubernetes羣集節點中運行的問題,這些節點內部獲取一些專用IP。

下面是Java榛投,我現在用客戶端配置:

cc = new ClientConfig() 

var networkConfig:ClientNetworkConfig = cc.getNetworkConfig() 

networkConfig.addAddress(kube_node1_IP,kube_node2_IP,kube_node3_IP) 

networkConfig.setConnectionAttemptLimit(500) 

cc.getSerializationConfig().addSerializerConfig(new SerializerConfig() 
     .setImplementation(new EventSerializer()).setTypeClass(EventClass)) 
     .addPortableFactoryClass(1, keyFactoryClass) 

例外回溯如下:

org.apache.spark.SparkException:作業因中止階段失敗: 階段1.0中的任務0失敗4次,最近失敗:丟失任務0.3 階段1.0中

com.hazelcast.core.HazelcastException:jav a.io.IOException:否 可用連接的地址爲[10.2.36.5]:5701 at com.hazelcast.util.ExceptionUtil.peel(ExceptionUtil.java:73) at com.hazelcast.util.ExceptionUtil。 peel(ExceptionUtil.java:63) at com.hazelcast.util.ExceptionUtil.peel(ExceptionUtil.java:52) at com.hazelcast.util.ExceptionUtil.rethrow(ExceptionUtil.java:83) at com.hazelcast。 client.spi.ClientProxy.invokeOnPartition(ClientProxy.java:128) at com.hazelcast.client.spi.ClientProxy.invoke(ClientProxy.java:120) at com.hazelcast.client.proxy.ClientMapProxy.getInternal(ClientMapProxy。 java:225) at com.hazelcast.client.proxy.ClientMapProxy.get(ClientMapProxy.java: 220)

這裏10.2.36.5是其中一個榛子鑄造吊艙的私有IP。

P.S. :如果只有單個吊艙,則相同配置沒有問題。

回答

0

這似乎並不是暴露HazelCast羣集的正確方法。

您需要將所有三個豆莢放在Kubernetes service後面spec.typeLoadBalancer。然後在setAddresses(..)方法中,只指定您創建的服務的負載平衡器IP。

請參閱here

+0

是否需要外部負載均衡器? – abhihdr03

相關問題