我正在尝试通过Kubernetes环境中的瘦客户机使用Ignite和我的Java应用程序设置分布式缓存。
在我的Kubernetes集群中,我有2个带Java应用程序的容器和2个ignite容器。为了使Java Pod与ignite Pod通信,我已经配置了一个瘦客户端与ignite kubernetes服务连接。通过这种配置,我期望负载平衡在kubernetes方面。这是我在Java代码中所做的事情:
ClientConfiguration cfg = new ClientConfiguration()
.setAddresses("ignite-service.default.svc.cluster.local:10800")
.setUserName("user")
.setUserPassword("password");
IgniteClient igniteClient = Ignition.startClient(cfg);
在从点火存储和获取对象的同时,我删除了一个点火吊舱,一段时间后,我收到错误消息,提示“点火集群不可用”:
org.apache.ignite.client.ClientConnectionException:点火群集不可用
通过这种行为,我假设ClientConfiguration类中的setAddresses方法存储了Pod的IP之一,并将所有与该Pod的通信通道。
这是这种方法中发生的事情吗?
点燃2.7版
Kubernetes版本1.12.3
答案 0 :(得分:0)
您需要传递几个IP地址,以在瘦客户端上启用故障转移(也称为自动重新连接)。查找更多详细信息here。
答案 1 :(得分:0)
虽然你可能已经解决了这个问题,因为这个问题是很久以前发布的,但仍然在这里为其他人提供答案。
使用 Apache Ignite 版本 (2.7+),您可以修改您的部署以使用 Kubernetes IP Finder。有了这个,Kubernetes 将负责发现和连接所有服务器和客户端节点。
TcpDiscoveryKubernetesIpFinder 模块将帮助您实现这一目标。
这是需要添加到您的配置中的发现 SPI(替换为适当的命名空间和服务名称)
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.kubernetes.TcpDiscoveryKubernetesIpFinder">
<constructor-arg>
<bean class="org.apache.ignite.kubernetes.configuration.KubernetesConnectionConfiguration">
<property name="namespace" value="default" />
<property name="serviceName" value="ignite" />
</bean>
</constructor-arg>
</bean>
</property>
</bean>
</property>
官方文档可以在这里找到 - https://ignite.apache.org/docs/latest/installation/kubernetes/amazon-eks-deployment