2016-09-16 124 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

相关问题