在Kubernetes中点燃瘦客户端

时间:2019-09-23 14:34:30

标签: ignite

我正在尝试通过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

2 个答案:

答案 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