【发布时间】:2019-06-11 16:32:44
【问题描述】:
我注意到 Apache Ignite 的一个奇怪行为,它在我的 5 节点 Apache Ignite 集群上相当可靠地发生,但甚至可以用两个节点集群进行复制。我在 Kubernetes 集群中部署的 Linux 环境中使用 Apache Ignite 2.7 for Net(每个 pod 托管一个节点)。
问题如下。假设我们有一个由 2 个 Apache Ignite 节点 A 和 B 组成的集群。两个节点都启动并初始化。在初始化阶段,每个节点上部署了几个 Ignite 服务。其中,节点 B 上部署了一个名为 QuoteService 的服务。
到目前为止一切顺利。集群按预期工作。然后,节点 B 因任何原因崩溃或停止,然后重新启动。节点 B 上托管的所有 ignite 服务都将重新部署。节点重新加入集群。
但是,当节点 A 上的服务尝试调用预期在节点 B 上可用的 QuoteService 时,将引发异常并显示以下消息:未能找到已部署的服务:QuoteService。奇怪的是,注册服务的行确实在节点 B 重启期间运行:
services.DeployMultiple("QuoteGenerator", new Services.Ignite.QuoteGenerator(), 8, 2);
(将服务部署为单例没有任何区别)
单独重启节点 A 或节点 B 无济于事。只有关闭整个Ignite集群并重新启动所有节点才能解决问题。
即使在运行 5 个节点时也可以重现此情况。
此错误报告可能看起来有点不具体,但很难指定具体的复制步骤,因为复制涉及设置至少两个 ignite 节点并按顺序停止和重新启动它们。所以让我这样提出问题: 1、你有没有注意到这样的情况,或者你是否收到过其他用户的类似报告? 2. 如果是,您可以推荐哪些步骤来解决这个问题? 3. 得知服务部署机制目前正在大修,我是否应该等待下一个版本的 Apache Ignite?
更新: 即使我不停止/启动节点,在运行的集群上也会遇到类似的问题。我将在 SA 上提出另一个问题,它似乎有不同的起源。
【问题讨论】:
-
您好,您如何访问该服务?你到处都有相同的服务对象吗?可以从节点B访问吗?
-
@EvgeniiZhuravlev 感谢您的回复。基本上我对服务代理执行以下操作。不知道是不是各地都一样。 _ignite.GetServices().GetServiceProxy
(serviceName)。我从 DI 容器中获取 Ignite 实例; DI的依赖定义如下: .AddSingleton(sp => { return Ignition.TryGetIgnite() ?? Ignition.Start(igniteConfig); }) -
> 可以从节点B访问吗?
标签: ignite