【问题标题】:How to use TcpDiscoveryKubernetesIpFinder in Apache Ignite .Net如何在 Apache Ignite .Net 中使用 TcpDiscoveryKubernetesIpFinder
【发布时间】:2019-03-28 00:33:20
【问题描述】:

我正在尝试在 Kubernetes 中部署 Apache Ignite 集群。该文档建议使用 TcpDiscoveryKubernetesIpFinder 来促进 Kubernetes 环境中的 Ignite 节点发现。但是,我在 .Net 的 Apache Ignite 中找不到这个类。它是否完全迁移到.Net?如果没有,我如何在我的网络应用程序中使用?我对Java不是很熟悉。

如果不可能,是否有替代方法可以在不使用 TcpDiscoveryKubernetesIpFinder 的情况下在 Kubernetes 环境中实现节点发现?多播在 Azure 虚拟网络中不可用。

我的 Kubernetes 子网中的可用 IP 范围是 1000 多个地址,因此使用 TcpDiscoveryStaticIpFinder 效率不会很高。我试图在我的本地 PC 上将 FailureDetectionTimeout 减少到 1 秒以提高效率,但 Ignite 会生成一堆“关键线程阻塞”异常,据称每次发现端点不可用时。所以我不得不摆脱 FailureDetectionTimeout。

我正在使用 Azure Kubernetes 服务和 Apache Ignite 2.7 for Net。先感谢您。

【问题讨论】:

    标签: kubernetes ignite azure-aks


    【解决方案1】:

    您可以将基于 Java (Spring XML) 的配置与 .NET 配置结合起来。

    1. 在 Spring XML 文件中配置 TcpDiscoveryKubernetesIpFinder(参见 https://apacheignite.readme.io/docs/kubernetes-ip-finder

    2. 在 .NET 中,设置 IgniteConfiguration.SpringConfigUrl 以指向该文件

    它的工作方式是 Ignite 首先加载 Spring XML,然后应用在 .NET 端指定的任何自定义配置属性。

    【讨论】:

    • 我已经创建了配置文件,从 ignite-kubernetes 目录复制了 ignite-kubernetes-2.7.0.jar 类和其他类。现在当我启动应用程序时,我得到一个 jar not found 错误。 Ignite 中的其他所有内容都成功运行,正在找到其他 Ignite 类。当我使用spring conf时,我应该在其他地方指定CLASSPATH吗? --- 无法从 Spring XML 实例化配置:... 原因:类 org.apache.ignite.IgniteCheckedException:无法实例化 Spring XML 应用程序上下文(确保 Spring 配置中使用的所有类都存在于 CLASSPATH 中)
    • 事实证明,除了IgniteHome之外,我还需要在IgniteConfiguration#JvmClasspath中指定ignite-kubernetes-2.7.0.jar的完整路径,包括文件名。
    • @AlexAvrutin 设置 JvmClasspath 可以避免,如果您将 ignite-kubernetes-2.7.0.jar 放在项目输出目录的所有其他 jar 文件旁边,放入 Libs 文件夹。
    • 我确实这样做了,但没有帮助。我有另一个与此相关的问题(Ignite 节点无法启动),我将为此创建另一个问题。
    猜你喜欢
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多